@dropins/storefront-checkout 0.1.0-alpha30 → 0.1.0-alpha32

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.
Files changed (140) hide show
  1. package/api.js +2 -1
  2. package/api.js.map +1 -0
  3. package/chunks/BillToShippingAddress2.js +2 -0
  4. package/chunks/BillToShippingAddress2.js.map +1 -0
  5. package/chunks/BillingForm.js +2 -0
  6. package/chunks/BillingForm.js.map +1 -0
  7. package/chunks/CartSummary.js +2 -0
  8. package/chunks/CartSummary.js.map +1 -0
  9. package/chunks/ErrorBanner.js +2 -0
  10. package/chunks/ErrorBanner.js.map +1 -0
  11. package/chunks/LoginForm.js +2 -0
  12. package/chunks/LoginForm.js.map +1 -0
  13. package/chunks/OrderSummary.js +2 -0
  14. package/chunks/OrderSummary.js.map +1 -0
  15. package/chunks/PaymentMethods.js +2 -0
  16. package/chunks/PaymentMethods.js.map +1 -0
  17. package/chunks/PlaceOrder.js +2 -0
  18. package/chunks/PlaceOrder.js.map +1 -0
  19. package/chunks/SelectedShippingMethodSignal.js +2 -0
  20. package/chunks/SelectedShippingMethodSignal.js.map +1 -0
  21. package/chunks/ShippingForm.js +2 -0
  22. package/chunks/ShippingForm.js.map +1 -0
  23. package/chunks/ShippingMethods.js +2 -0
  24. package/chunks/ShippingMethods.js.map +1 -0
  25. package/chunks/ToggleButton.js +2 -0
  26. package/chunks/ToggleButton.js.map +1 -0
  27. package/chunks/cart-item.js +2 -0
  28. package/chunks/cart-item.js.map +1 -0
  29. package/chunks/constants.js +2 -0
  30. package/chunks/constants.js.map +1 -0
  31. package/chunks/constants2.js +2 -0
  32. package/chunks/constants2.js.map +1 -0
  33. package/chunks/constants3.js +2 -0
  34. package/chunks/constants3.js.map +1 -0
  35. package/chunks/getCart.graphql.js +274 -0
  36. package/chunks/getCart.graphql.js.map +1 -0
  37. package/chunks/getMultilineValues.js +44 -0
  38. package/chunks/getMultilineValues.js.map +1 -0
  39. package/chunks/getStoreConfig.js +59 -0
  40. package/chunks/getStoreConfig.js.map +1 -0
  41. package/chunks/initialize.js +2 -0
  42. package/chunks/initialize.js.map +1 -0
  43. package/chunks/placeOrder2.js +112 -0
  44. package/chunks/placeOrder2.js.map +1 -0
  45. package/chunks/setBillingAddress.js +16 -0
  46. package/chunks/setBillingAddress.js.map +1 -0
  47. package/chunks/setGuestEmailOnCart.js +20 -0
  48. package/chunks/setGuestEmailOnCart.js.map +1 -0
  49. package/chunks/setPaymentMethod.js +16 -0
  50. package/chunks/setPaymentMethod.js.map +1 -0
  51. package/chunks/setShippingAddress.js +16 -0
  52. package/chunks/setShippingAddress.js.map +1 -0
  53. package/chunks/setShippingMethods.js +19 -0
  54. package/chunks/setShippingMethods.js.map +1 -0
  55. package/chunks/transform-shipping-methods.js +2 -0
  56. package/chunks/transform-shipping-methods.js.map +1 -0
  57. package/containers/BillToShippingAddress.js +2 -1
  58. package/containers/BillToShippingAddress.js.map +1 -0
  59. package/containers/BillingForm.js +2 -1
  60. package/containers/BillingForm.js.map +1 -0
  61. package/containers/CartSummary.js +2 -1
  62. package/containers/CartSummary.js.map +1 -0
  63. package/containers/Checkout.js +2 -1
  64. package/containers/Checkout.js.map +1 -0
  65. package/containers/ErrorBanner.js +2 -1
  66. package/containers/ErrorBanner.js.map +1 -0
  67. package/containers/LoginForm.js +2 -1
  68. package/containers/LoginForm.js.map +1 -0
  69. package/containers/OrderSummary.js +2 -1
  70. package/containers/OrderSummary.js.map +1 -0
  71. package/containers/PaymentMethods.js +2 -1
  72. package/containers/PaymentMethods.js.map +1 -0
  73. package/containers/PlaceOrder.js +2 -1
  74. package/containers/PlaceOrder.js.map +1 -0
  75. package/containers/ShippingForm.js +2 -1
  76. package/containers/ShippingForm.js.map +1 -0
  77. package/containers/ShippingMethods.js +2 -1
  78. package/containers/ShippingMethods.js.map +1 -0
  79. package/package.json +1 -1
  80. package/render.js +4 -1
  81. package/render.js.map +1 -0
  82. package/1176.js +0 -1
  83. package/1184.js +0 -1
  84. package/1268.js +0 -1
  85. package/1424.js +0 -1
  86. package/1458.js +0 -1
  87. package/1600.js +0 -1
  88. package/1604.js +0 -1
  89. package/1680.js +0 -1
  90. package/184.js +0 -1
  91. package/196.js +0 -1
  92. package/2328.js +0 -1
  93. package/2388.js +0 -1
  94. package/2543.js +0 -1
  95. package/2892.js +0 -1
  96. package/2920.js +0 -1
  97. package/2956.js +0 -1
  98. package/3100.js +0 -1
  99. package/3180.js +0 -1
  100. package/3316.js +0 -1
  101. package/3484.js +0 -1
  102. package/3728.js +0 -1
  103. package/3764.js +0 -1
  104. package/3832.js +0 -1
  105. package/3836.js +0 -1
  106. package/3916.js +0 -1
  107. package/3996.js +0 -1
  108. package/4004.js +0 -1
  109. package/4424.js +0 -1
  110. package/4708.js +0 -1
  111. package/488.js +0 -1
  112. package/4928.js +0 -1
  113. package/4948.js +0 -1
  114. package/5008.js +0 -1
  115. package/5068.js +0 -1
  116. package/5476.js +0 -1
  117. package/5488.js +0 -1
  118. package/6140.js +0 -1
  119. package/6484.js +0 -1
  120. package/664.js +0 -1
  121. package/6768.js +0 -1
  122. package/6820.js +0 -1
  123. package/7524.js +0 -1
  124. package/7568.js +0 -1
  125. package/8100.js +0 -1
  126. package/8220.js +0 -1
  127. package/8256.js +0 -1
  128. package/8412.js +0 -1
  129. package/844.js +0 -1
  130. package/8668.js +0 -1
  131. package/8824.js +0 -1
  132. package/8868.js +0 -1
  133. package/8966.js +0 -1
  134. package/9176.js +0 -1
  135. package/9700.js +0 -1
  136. package/9772.js +0 -1
  137. package/984.js +0 -1
  138. package/9940.js +0 -1
  139. package/9948.js +0 -1
  140. package/runtime.js +0 -1
package/api.js CHANGED
@@ -1 +1,2 @@
1
- import*as t from"@dropins/tools/event-bus.js";import*as i from"@dropins/tools/fetch-graphql.js";export const id=5e3;export const ids=[5e3];export const modules={1520:(t,i,r)=>{r.d(i,{OC:()=>y});var e=r(304),n=r(8596);function o(){throw new Error("Cycle detected")}var s=Symbol.for("preact-signals");function a(){if(v>1)v--;else{for(var t,i=!1;void 0!==c;){var r=c;for(c=void 0,h++;void 0!==r;){var e=r.o;if(r.o=void 0,r.f&=-3,!(8&r.f)&&m(r))try{r.c()}catch(r){i||(t=r,i=!0)}r=e}}if(h=0,v--,i)throw t}}var f=void 0;var u,c=void 0,v=0,h=0,p=0;function d(t){if(void 0!==f){var i=t.n;if(void 0===i||i.t!==f)return i={i:0,S:t,p:f.s,n:void 0,t:f,e:void 0,x:void 0,r:i},void 0!==f.s&&(f.s.n=i),f.s=i,t.n=i,32&f.f&&t.S(i),i;if(-1===i.i)return i.i=0,void 0!==i.n&&(i.n.p=i.p,void 0!==i.p&&(i.p.n=i.n),i.p=f.s,i.n=void 0,f.s.n=i,f.s=i),i}}function l(t){this.v=t,this.i=0,this.n=void 0,this.t=void 0}function y(t){return new l(t)}function m(t){for(var i=t.s;void 0!==i;i=i.n)if(i.S.i!==i.i||!i.S.h()||i.S.i!==i.i)return!0;return!1}function g(t){for(var i=t.s;void 0!==i;i=i.n){var r=i.S.n;if(void 0!==r&&(i.r=r),i.S.n=i,i.i=-1,void 0===i.n){t.s=i;break}}}function _(t){for(var i=t.s,r=void 0;void 0!==i;){var e=i.p;-1===i.i?(i.S.U(i),void 0!==e&&(e.n=i.n),void 0!==i.n&&(i.n.p=e)):r=i,i.S.n=i.r,void 0!==i.r&&(i.r=void 0),i=e}t.s=r}function b(t){l.call(this,void 0),this.x=t,this.s=void 0,this.g=p-1,this.f=4}function O(t){var i=t.u;if(t.u=void 0,"function"==typeof i){v++;var r=f;f=void 0;try{i()}catch(i){throw t.f&=-2,t.f|=8,S(t),i}finally{f=r,a()}}}function S(t){for(var i=t.s;void 0!==i;i=i.n)i.S.U(i);t.x=void 0,t.s=void 0,O(t)}function j(t){if(f!==this)throw new Error("Out-of-order effect");_(this),f=t,this.f&=-2,8&this.f&&S(this),a()}function w(t){this.x=t,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32}function P(t){var i=new w(t);try{i.c()}catch(t){throw i.d(),t}return i.d.bind(i)}function E(t,i){e.s1[t]=i.bind(null,e.s1[t]||function(){})}function M(t){u&&u(),u=t&&t.S()}function C(t){var i=this,r=t.data,o=function(t){return(0,n.bB)((function(){return y(t)}),[])}(r);o.value=r;var s=(0,n.bB)((function(){for(var t=i.__v;t=t.__;)if(t.__c){t.__c.__$f|=4;break}return i.__$u.c=function(){var t;(0,e.ur)(s.peek())||3!==(null==(t=i.base)?void 0:t.nodeType)?(i.__$f|=1,i.setState({})):i.base.data=s.peek()},function(t){return new b(t)}((function(){var t=o.value.value;return 0===t?0:!0===t?"":t||""}))}),[]);return s.value}function x(t,i,r,e){var n=i in t&&void 0===t.ownerSVGElement,o=y(r);return{o:function(t,i){o.value=t,e=i},d:P((function(){var r=o.value.value;e[i]!==r&&(e[i]=r,n?t[i]=r:r?t.setAttribute(i,r):t.removeAttribute(i))}))}}l.prototype.brand=s,l.prototype.h=function(){return!0},l.prototype.S=function(t){this.t!==t&&void 0===t.e&&(t.x=this.t,void 0!==this.t&&(this.t.e=t),this.t=t)},l.prototype.U=function(t){if(void 0!==this.t){var i=t.e,r=t.x;void 0!==i&&(i.x=r,t.e=void 0),void 0!==r&&(r.e=i,t.x=void 0),t===this.t&&(this.t=r)}},l.prototype.subscribe=function(t){var i=this;return P((function(){var r=i.value,e=32&this.f;this.f&=-33;try{t(r)}finally{this.f|=e}}))},l.prototype.valueOf=function(){return this.value},l.prototype.toString=function(){return this.value+""},l.prototype.toJSON=function(){return this.value},l.prototype.peek=function(){return this.v},Object.defineProperty(l.prototype,"value",{get:function(){var t=d(this);return void 0!==t&&(t.i=this.i),this.v},set:function(t){if(f instanceof b&&function(){throw new Error("Computed cannot have side-effects")}(),t!==this.v){h>100&&o(),this.v=t,this.i++,p++,v++;try{for(var i=this.t;void 0!==i;i=i.x)i.t.N()}finally{a()}}}}),(b.prototype=new l).h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===p)return!0;if(this.g=p,this.f|=1,this.i>0&&!m(this))return this.f&=-2,!0;var t=f;try{g(this),f=this;var i=this.x();(16&this.f||this.v!==i||0===this.i)&&(this.v=i,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return f=t,_(this),this.f&=-2,!0},b.prototype.S=function(t){if(void 0===this.t){this.f|=36;for(var i=this.s;void 0!==i;i=i.n)i.S.S(i)}l.prototype.S.call(this,t)},b.prototype.U=function(t){if(void 0!==this.t&&(l.prototype.U.call(this,t),void 0===this.t)){this.f&=-33;for(var i=this.s;void 0!==i;i=i.n)i.S.U(i)}},b.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var t=this.t;void 0!==t;t=t.x)t.t.N()}},b.prototype.peek=function(){if(this.h()||o(),16&this.f)throw this.v;return this.v},Object.defineProperty(b.prototype,"value",{get:function(){1&this.f&&o();var t=d(this);if(this.h(),void 0!==t&&(t.i=this.i),16&this.f)throw this.v;return this.v}}),w.prototype.c=function(){var t=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var i=this.x();"function"==typeof i&&(this.u=i)}finally{t()}},w.prototype.S=function(){1&this.f&&o(),this.f|=1,this.f&=-9,O(this),g(this),v++;var t=f;return f=this,j.bind(this,t)},w.prototype.N=function(){2&this.f||(this.f|=2,this.o=c,c=this)},w.prototype.d=function(){this.f|=8,1&this.f||S(this)},C.displayName="_st",Object.defineProperties(l.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:C},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}}),E("__b",(function(t,i){if("string"==typeof i.type){var r,e=i.props;for(var n in e)if("children"!==n){var o=e[n];o instanceof l&&(r||(i.__np=r={}),r[n]=o,e[n]=o.peek())}}t(i)})),E("__r",(function(t,i){M();var r,e=i.__c;e&&(e.__$f&=-2,void 0===(r=e.__$u)&&(e.__$u=r=function(t){var i;return P((function(){i=this})),i.c=function(){e.__$f|=1,e.setState({})},i}())),e,M(r),t(i)})),E("__e",(function(t,i,r,e){M(),void 0,t(i,r,e)})),E("diffed",(function(t,i){var r;if(M(),void 0,"string"==typeof i.type&&(r=i.__e)){var e=i.__np,n=i.props;if(e){var o=r.U;if(o)for(var s in o){var a=o[s];void 0===a||s in e||(a.d(),o[s]=void 0)}else r.U=o={};for(var f in e){var u=o[f],c=e[f];void 0===u?(u=x(r,f,c,n),o[f]=u):u.o(c,n)}}}t(i)})),E("unmount",(function(t,i){if("string"==typeof i.type){var r=i.__e;if(r){var e=r.U;if(e)for(var n in r.U=void 0,e){var o=e[n];o&&o.d()}}}else{var s=i.__c;if(s){var a=s.__$u;a&&(s.__$u=void 0,a.d())}}t(i)})),E("__h",(function(t,i,r,e){(e<3||9===e)&&(i.__$f|=2),t(i,r,e)})),e.Yl.prototype.shouldComponentUpdate=function(t,i){var r=this.__$u;if(!(r&&void 0!==r.s||4&this.__$f))return!0;if(3&this.__$f)return!0;for(var e in i)return!0;for(var n in t)if("__source"!==n&&t[n]!==this.props[n])return!0;for(var o in this.props)if(!(o in t))return!0;return!1}},7536:(t,i,r)=>{r.d(i,{A:()=>n,c:()=>o});var e=new class{get map(){return this._map}set map(t){this._map=t}getMethods(){return{setMap:t=>{this.map=t},getMap:()=>this.map}}},{setMap:n,getMap:o}=e.getMethods()},412:(t,i,r)=>{r.d(i,{_:()=>c});class e{constructor(t){this.config=t}getConfig(){return this.config}setConfig(t){this.config=t}}var n=r(7536),o=["imageParamsKeyMap"];function s(t,i){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);i&&(e=e.filter((function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable}))),r.push.apply(r,e)}return r}function a(t){for(var i=1;i<arguments.length;i++){var r=null!=arguments[i]?arguments[i]:{};i%2?s(Object(r),!0).forEach((function(i){u(t,i,r[i])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(r,i))}))}return t}function f(t,i){if(null==t)return{};var r,e,n=function(t,i){if(null==t)return{};var r,e,n={},o=Object.keys(t);for(e=0;e<o.length;e++)r=o[e],i.indexOf(r)>=0||(n[r]=t[r]);return n}(t,i);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(e=0;e<o.length;e++)r=o[e],i.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function u(t,i,r){return(i=function(t){var i=function(t,i){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var e=r.call(t,i||"default");if("object"!=typeof e)return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(t)}(t,"string");return"symbol"==typeof i?i:String(i)}(i))in t?Object.defineProperty(t,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[i]=r,t}class c{constructor(t){var{init:i,listeners:r}=t;u(this,"_listeners",[]),u(this,"config",new e({})),this.listeners=t=>(this._listeners.forEach((t=>t.off())),this._listeners=r(t)),this.init=t=>{var r=t,{imageParamsKeyMap:e}=r,s=f(r,o);return this.config.setConfig(a(a({},this.config.getConfig()),s)),(0,n.A)(e),i(t)}}}class v{static register(t,i){var r,e;v._mounted&&(null===(r=t.listeners)||void 0===r||r.call(t,i),null===(e=t.init)||void 0===e||e.call(t,i));v._initializers.push([t,i])}static mount(){var t,i;v._mounted=!0,null===(t=v._initializers)||void 0===t||t.forEach((t=>{var i,[r,e]=t;null===(i=r.listeners)||void 0===i||i.call(r,e)})),null===(i=v._initializers)||void 0===i||i.forEach((t=>{var i,[r,e]=t;null===(i=r.init)||void 0===i||i.call(r,a({imageParamsKeyMap:v._imageParamsKeyMap},e))}))}static setImageParamKeys(t){v._imageParamsKeyMap=t}}u(v,"_initializers",[]),u(v,"_mounted",!1),u(v,"_imageParamsKeyMap",void 0)},712:(t,i,r)=>{r.d(i,{Ui:()=>e.Ui,YX:()=>e.YX,o8:()=>e.o8,Ij:()=>e.Ij,u0:()=>e.u0,ET:()=>e.ET,GU:()=>e.GU,um:()=>y.um,i4:()=>e.i4,Ej:()=>u.E,YP:()=>b.Y,mG:()=>o.m,CA:()=>n.CA,Q3:()=>s.Q,eE:()=>n.eE,KG:()=>_.K,iM:()=>a.i,qM:()=>f.q,a_:()=>g.a,ii:()=>u.i,sD:()=>c.s,AK:()=>v.A,ek:()=>y.ek,ch:()=>h,__:()=>n.__,WC:()=>p.W,Ef:()=>n.Ef,XK:()=>n.o8,Uh:()=>n.Uh,Si:()=>d.S,aO:()=>l.a,Eh:()=>y.Eh,Mz:()=>m.M});var e=r(3760),n=r(3584),o=r(1212),s=r(7788),a=r(2740),f=r(5616),u=r(7540),c=r(9496),v=r(3688),h=t=>{var i;null===(i=window)||void 0===i||null===(i=i.location)||void 0===i||i.assign(t)},p=r(2532),d=r(4628),l=r(2567),y=r(5124),m=r(1384),g=r(1036),_=r(152),b=r(1988)},7540:(t,i,r)=>{function e(t,i){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);i&&(e=e.filter((function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable}))),r.push.apply(r,e)}return r}function n(t,i,r){return(i=function(t){var i=function(t,i){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var e=r.call(t,i||"default");if("object"!=typeof e)return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(t)}(t,"string");return"symbol"==typeof i?i:String(i)}(i))in t?Object.defineProperty(t,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[i]=r,t}function o(t,i,r,e,n,o,s){try{var a=t[o](s),f=a.value}catch(t){return void r(t)}a.done?i(f):Promise.resolve(f).then(e,n)}r.d(i,{E:()=>u,i:()=>f});var s,a,f=new(r(412)._)({init:(s=function*(t){var i=function(t){for(var i=1;i<arguments.length;i++){var r=null!=arguments[i]?arguments[i]:{};i%2?e(Object(r),!0).forEach((function(i){n(t,i,r[i])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(r,i))}))}return t}({guestViewCookieExpirationDays:30},t);f.config.setConfig(i)},a=function(){var t=this,i=arguments;return new Promise((function(r,e){var n=s.apply(t,i);function a(t){o(n,r,e,a,f,"next",t)}function f(t){o(n,r,e,a,f,"throw",t)}a(void 0)}))},function(t){return a.apply(this,arguments)}),listeners:()=>[]}),u=f.config},2567:(t,i,r)=>{r.d(i,{a:()=>u});var e=r(3760),n=r(3112),o="\n mutation setPaymentMethod($cartId: String!, $paymentMethod: String!) {\n setPaymentMethodOnCart(\n input: { cart_id: $cartId, payment_method: { code: $paymentMethod } }\n ) {\n cart {\n id\n ...CheckoutData\n ...CartSummaryItems\n }\n }\n }\n ".concat(n.e2,"\n ").concat(n.Qz,"\n"),s=r(9120),a=r(6824);function f(t,i,r,e,n,o,s){try{var a=t[o](s),f=a.value}catch(t){return void r(t)}a.done?i(f):Promise.resolve(f).then(e,n)}var u=function(){var t,i=(t=function*(t){var{cartId:i,paymentMethod:r}=t;if(!i)throw new e.Ij;if(!r)throw new e.GU;return yield(0,s.m)({type:"mutation",query:o,options:{variables:{cartId:i,paymentMethod:r}},path:"setPaymentMethodOnCart.cart",signalType:"cart",transformer:a.o})},function(){var i=this,r=arguments;return new Promise((function(e,n){var o=t.apply(i,r);function s(t){f(o,e,n,s,a,"next",t)}function a(t){f(o,e,n,s,a,"throw",t)}s(void 0)}))});return function(t){return i.apply(this,arguments)}}()},8122:(i,r,e)=>{i.exports=(t=>{var i={};return e.d(i,t),i})({events:()=>t.events})},8616:(t,r,e)=>{t.exports=(t=>{var i={};return e.d(i,t),i})({FetchGraphQL:()=>i.FetchGraphQL})}};import r from"./runtime.js";import*as e from"./8412.js";r.C(e);import*as n from"./8668.js";r.C(n);import*as o from"./5068.js";r.C(o);import*as s from"./9700.js";r.C(s);import*as a from"./8966.js";r.C(a);import*as f from"./api.js";r.C(f);var u,c=(u=712,r(r.s=u)),v=c.Ui,h=c.YX,p=c.o8,d=c.Ij,l=c.u0,y=c.ET,m=c.GU,g=c.um,_=c.i4,b=c.Ej,O=c.YP,S=c.mG,j=c.CA,w=c.Q3,P=c.eE,E=c.KG,M=c.iM,C=c.qM,x=c.a_,U=c.ii,A=c.sD,k=c.AK,$=c.ek,G=c.ch,D=c.__,K=c.WC,I=c.Ef,T=c.XK,Q=c.Uh,N=c.Si,z=c.aO,F=c.Eh,Y=c.Mz;export{v as FetchError,h as InvalidArgument,p as MissingBillingAddress,d as MissingCart,l as MissingCountry,y as MissingEmail,m as MissingPaymentMethod,g as STANDARD_ATTRIBUTES,_ as UnexpectedError,b as config,O as estimateShippingMethods,S as fetchAddressFormFields,j as fetchGraphQl,w as getCheckoutData,P as getConfig,E as getCountries,M as getRegions,C as getStockStatus,x as getStoreConfig,U as initialize,A as isEmailAvailable,k as placeOrder,$ as prepareAddress,G as redirect,D as removeFetchGraphQlHeader,K as setBillingAddress,I as setEndpoint,T as setFetchGraphQlHeader,Q as setFetchGraphQlHeaders,N as setGuestEmailOnCart,z as setPaymentMethod,F as setShippingAddress,Y as setShippingMethodsOnCart};
1
+ import{F as h,I as f,c,M as x,d as A,a as M,b as C,U as F}from"./chunks/transform-shipping-methods.js";import{e as u,g as E}from"./chunks/getMultilineValues.js";import{d as b,c as Q,f as T,g as v,e as y,h as B,r as H,s as I,a as O,b as R}from"./chunks/getStoreConfig.js";import{g as w,a as D,b as P,p as k}from"./chunks/placeOrder2.js";import{c as N,i as _}from"./chunks/initialize.js";import{i as q,s as J}from"./chunks/setGuestEmailOnCart.js";import{s as L}from"./chunks/setBillingAddress.js";import{s as W}from"./chunks/setPaymentMethod.js";import{S as Y,p as Z,s as $}from"./chunks/setShippingAddress.js";import{s as es}from"./chunks/setShippingMethods.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/preact.js";import"@dropins/tools/preact-hooks.js";import"@dropins/tools/preact-jsx-runtime.js";import"./chunks/getCart.graphql.js";import"./chunks/cart-item.js";import"@dropins/tools/lib.js";const d=e=>{var s;(s=window==null?void 0:window.location)==null||s.assign(e)};export{h as FetchError,f as InvalidArgument,c as MissingBillingAddress,x as MissingCart,A as MissingCountry,M as MissingEmail,C as MissingPaymentMethod,Y as STANDARD_ATTRIBUTES,F as UnexpectedError,N as config,b as defaultFormFields,u as estimateShippingMethods,Q as fetchAddressFormFields,T as fetchGraphQl,w as getCart,v as getConfig,y as getCountries,D as getCustomer,E as getRegions,P as getStockStatus,B as getStoreConfig,_ as initialize,q as isEmailAvailable,k as placeOrder,Z as prepareAddress,d as redirect,H as removeFetchGraphQlHeader,L as setBillingAddress,I as setEndpoint,O as setFetchGraphQlHeader,R as setFetchGraphQlHeaders,J as setGuestEmailOnCart,W as setPaymentMethod,$ as setShippingAddress,es as setShippingMethodsOnCart};
2
+ //# sourceMappingURL=api.js.map
package/api.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sources":["../src/api/redirect/redirect.ts"],"sourcesContent":["// Function for redirecting the browser to a url\nexport const redirect = (url: string) => { \n window?.location?.assign(url);\n}\n"],"names":["redirect","url","location","assign"],"mappings":"s7BACaA,MAAAA,EAAYC,GAAgB,QAC/BC,EAAAA,2BAAAA,WAAAA,MAAAA,EAAUC,OAAOF,EAC3B"}
@@ -0,0 +1,2 @@
1
+ import"@dropins/tools/event-bus.js";import{j as m,i as _,u as B,l as I}from"./getStoreConfig.js";import{s as C}from"./setBillingAddress.js";import{classes as x}from"@dropins/tools/lib.js";import{Checkbox as y,Skeleton as N,SkeletonRow as j}from"@dropins/tools/components.js";/* empty css */import{jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{useText as z}from"@dropins/tools/i18n.js";import{useState as T,useEffect as k}from"@dropins/tools/preact-compat.js";const U=({className:r,isInitialized:t=!0,checked:n=!0,...s})=>{const e=z({title:"Checkout.BillToShippingAddress.title"});return t?a("div",{className:x(["checkout-bill-to-shipping-address",r]),children:a(y,{"data-testid":"bill-to-shipping-checkbox",className:"checkout-bill-to-shipping-address__checkbox",checked:n,name:"checkout-bill-to-shipping-address__checkbox",label:e.title,...s})}):a(w,{})},w=()=>a(N,{className:"bill-to-shipping-address__skeleton",children:a(j,{variant:"row",size:"small"})}),v="is_bill_to_shipping_address";function F(r,t,n){const s=r[n],e=t[n];return s===void 0&&e===void 0||s===null&&e===null?!0:typeof s=="object"&&typeof e=="object"?JSON.stringify(s)===JSON.stringify(e):s===e}function S(r,t,n){return!t&&!n?!0:!t||!n?!1:r.every(s=>{const e=s.code;return F(t,n,e)})}const H=({isBillToShipping:r})=>{var A;const[t,n]=T(!1),{fields:s}=B(),e=_.value.data,p=(e==null?void 0:e.id)||"",c=!!e,o=e==null?void 0:e.billingAddress,d=(A=e==null?void 0:e.shippingAddresses)==null?void 0:A[0],u=!!d,h=!!(o&&d),i=I.value.data,g=i==null?void 0:i.defaultShippingAddress,f=i==null?void 0:i.defaultBillingAddress,b=!!(g&&f);return k(()=>{if(t)return;const l=localStorage.getItem(v);l&&(n(!0),r.value={checked:l==="true",setByUser:!1})},[t,r]),k(()=>{if(!s||!c||h||!b)return;n(!0);const l=S(s,f,g);r.value={checked:l,setByUser:!1}},[f,g,s,c,h,b,r,t]),k(()=>{if(t||!s||!c)return;n(!0);const l=S(s,o,d);r.value={checked:o?l:r.value.checked,setByUser:!1}},[o,s,c,r,t,d]),{cartId:p,isInitialized:t,hasShippingAddress:u}},Y=({children:r,...t})=>{const n=m.value.checked,{cartId:s,hasShippingAddress:e,isInitialized:p}=H({isBillToShipping:m});return a(U,{...t,checked:n,isInitialized:p,onChange:o=>{const u=o.target.checked;if(m.value={checked:u,setByUser:!0},localStorage.setItem(v,u.toString()),!p||!u||!e)return;const h=new AbortController;return C({signal:h.signal,cartId:s,input:{same_as_shipping:!0}}).catch(i=>{console.error(i)}),()=>{h.abort()}},disabled:_.value.pending})};export{Y as B,v as a,S as c};
2
+ //# sourceMappingURL=BillToShippingAddress2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BillToShippingAddress2.js","sources":["../../src/components/BillToShippingAddress/BillToShippingAddress.tsx","../../src/components/BillToShippingAddress/BillToShippingAddressSkeleton.tsx","../../src/containers/BillToShippingAddress/constants.ts","../../src/containers/BillToShippingAddress/BillToShippingAddress.tsx"],"sourcesContent":["import { FunctionComponent } from 'preact';\nimport { classes } from '@adobe/elsie/lib';\nimport { Checkbox, CheckboxProps } from '@adobe/elsie/components';\nimport { BillToShippingAddressSkeleton } from '@/checkout/components/BillToShippingAddress';\nimport '@/checkout/components/BillToShippingAddress/BillToShippingAddress.css';\nimport { useText } from '@adobe/elsie/i18n';\n\nexport interface BillToShippingAddressProps\n extends Omit<CheckboxProps, 'name' | 'label'> {\n isInitialized?: boolean;\n}\n\nexport const BillToShippingAddress: FunctionComponent<\n BillToShippingAddressProps\n> = ({ className, isInitialized = true, checked = true, ...props }) => {\n const translations = useText({\n title: 'Checkout.BillToShippingAddress.title',\n });\n\n if (!isInitialized) return <BillToShippingAddressSkeleton />;\n\n return (\n <div className={classes(['checkout-bill-to-shipping-address', className])}>\n <Checkbox\n data-testid=\"bill-to-shipping-checkbox\"\n className=\"checkout-bill-to-shipping-address__checkbox\"\n checked={checked}\n name=\"checkout-bill-to-shipping-address__checkbox\"\n label={translations.title}\n {...props}\n />\n </div>\n );\n};\n","import { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe/elsie/components';\n\nexport const BillToShippingAddressSkeleton: FunctionComponent = () => {\n return (\n <Skeleton className=\"bill-to-shipping-address__skeleton\">\n <SkeletonRow variant=\"row\" size=\"small\" />\n </Skeleton>\n );\n};\n","export const BILL_TO_SHIPPING_KEY = 'is_bill_to_shipping_address';\n","import { setBillingAddress } from '@/checkout/api';\nimport { BillToShippingAddress as BillToShippingAddressComponent } from '@/checkout/components/BillToShippingAddress';\nimport {\n IsBillToShipping,\n cartSignal,\n customerSignal,\n isBillToShippingSignal,\n} from '@/checkout/signals';\nimport { Container } from '@adobe/elsie/lib';\nimport { Signal } from '@preact/signals-core';\nimport { useEffect, useState } from 'preact/compat';\nimport { BILL_TO_SHIPPING_KEY } from './constants';\nimport { useAddressFormFields } from '@/checkout/context/address-form-fields';\nimport { CheckboxProps } from '@adobe/elsie/components';\nimport {\n ShippingAddress,\n BillingAddress,\n} from '@/checkout/data/models/address';\nimport { AddressFormField } from '@/checkout/data/models/address-form-fields';\n\ntype Address = BillingAddress | ShippingAddress[];\n\nfunction compareFields(first: Address, second: Address, field: keyof Address) {\n const firstValue = first[field];\n const secondValue = second[field];\n\n if (firstValue === undefined && secondValue === undefined) return true;\n if (firstValue === null && secondValue === null) return true;\n\n if (typeof firstValue === 'object' && typeof secondValue === 'object') {\n return JSON.stringify(firstValue) === JSON.stringify(secondValue);\n }\n\n return firstValue === secondValue;\n}\n\nexport function compareAddresses(\n addressFormFields: AddressFormField[],\n first: BillingAddress | undefined,\n second: ShippingAddress | undefined\n) {\n if (!first && !second) return true;\n if (!first || !second) return false;\n\n return addressFormFields.every((field) => {\n const fieldCode = field.code as keyof Address;\n return compareFields(first, second, fieldCode);\n });\n}\n\nconst useInitialState = ({\n isBillToShipping,\n}: {\n isBillToShipping: Signal<IsBillToShipping>;\n}) => {\n const [isInitialized, setIsInitialized] = useState(false);\n\n const { fields } = useAddressFormFields();\n\n const cart = cartSignal.value.data;\n const cartId = cart?.id || '';\n const hasCart = !!cart;\n const billingAddress = cart?.billingAddress;\n const shippingAddress = cart?.shippingAddresses?.[0];\n const hasShippingAddress = Boolean(shippingAddress);\n const hasCartAddresses = Boolean(billingAddress && shippingAddress);\n\n const customer = customerSignal.value.data;\n const customerShippingAddress = customer?.defaultShippingAddress;\n const customerBillingAddress = customer?.defaultBillingAddress;\n const hasCustomerAddresses = Boolean(\n customerShippingAddress && customerBillingAddress\n );\n\n // Sync state with local storage\n useEffect(() => {\n if (isInitialized) return;\n\n const localBillToShipping = localStorage.getItem(BILL_TO_SHIPPING_KEY);\n if (!localBillToShipping) return;\n\n setIsInitialized(true);\n\n isBillToShipping.value = {\n checked: localBillToShipping === 'true',\n setByUser: false,\n };\n }, [isInitialized, isBillToShipping]);\n\n // Sync state with the customer\n useEffect(() => {\n if (!fields || !hasCart) return;\n if (hasCartAddresses || !hasCustomerAddresses) return;\n\n setIsInitialized(true);\n\n const checked = compareAddresses(\n fields,\n customerBillingAddress,\n customerShippingAddress\n );\n\n isBillToShipping.value = { checked, setByUser: false };\n }, [\n customerBillingAddress,\n customerShippingAddress,\n fields,\n hasCart,\n hasCartAddresses,\n hasCustomerAddresses,\n isBillToShipping,\n isInitialized,\n ]);\n\n // Sync state with the cart\n useEffect(() => {\n if (isInitialized || !fields || !hasCart) return;\n\n setIsInitialized(true);\n\n const checked = compareAddresses(fields, billingAddress, shippingAddress);\n\n isBillToShipping.value = {\n checked: billingAddress ? checked : isBillToShipping.value.checked,\n setByUser: false,\n };\n }, [\n billingAddress,\n fields,\n hasCart,\n isBillToShipping,\n isInitialized,\n shippingAddress,\n ]);\n\n return { cartId, isInitialized, hasShippingAddress };\n};\n\nexport interface BillToShippingAddressProps\n extends Omit<CheckboxProps, 'name' | 'label'> {}\n\nexport const BillToShippingAddress: Container<BillToShippingAddressProps> = ({\n children,\n ...props\n}) => {\n const isBillToShipping = isBillToShippingSignal.value.checked;\n\n const { cartId, hasShippingAddress, isInitialized } = useInitialState({\n isBillToShipping: isBillToShippingSignal,\n });\n\n const onChangeHandler = (event: Event) => {\n const checkbox = event.target as HTMLInputElement;\n const isChecked = checkbox.checked;\n\n isBillToShippingSignal.value = { checked: isChecked, setByUser: true };\n localStorage.setItem(BILL_TO_SHIPPING_KEY, isChecked.toString());\n\n if (!isInitialized || !isChecked || !hasShippingAddress) return;\n\n const controller = new AbortController();\n\n setBillingAddress({\n signal: controller.signal,\n cartId,\n input: { same_as_shipping: true },\n }).catch((error) => {\n console.error(error);\n });\n\n return () => {\n controller.abort();\n };\n };\n\n return (\n <BillToShippingAddressComponent\n {...props}\n checked={isBillToShipping}\n isInitialized={isInitialized}\n onChange={onChangeHandler}\n disabled={cartSignal.value.pending}\n />\n );\n};\n"],"names":["BillToShippingAddress","className","isInitialized","checked","props","translations","useText","title","_jsx","classes","children","Checkbox","name","label","BillToShippingAddressSkeleton","Skeleton","SkeletonRow","variant","size","BILL_TO_SHIPPING_KEY","compareFields","first","second","field","firstValue","secondValue","undefined","JSON","stringify","compareAddresses","addressFormFields","every","fieldCode","code","useInitialState","isBillToShipping","setIsInitialized","useState","fields","useAddressFormFields","cart","cartSignal","value","data","cartId","id","hasCart","billingAddress","shippingAddress","shippingAddresses","hasShippingAddress","Boolean","hasCartAddresses","customer","customerSignal","customerShippingAddress","defaultShippingAddress","customerBillingAddress","defaultBillingAddress","hasCustomerAddresses","useEffect","localBillToShipping","localStorage","getItem","setByUser","isBillToShippingSignal","BillToShippingAddressComponent","onChange","event","isChecked","target","setItem","toString","controller","AbortController","setBillingAddress","signal","input","same_as_shipping","catch","error","console","abort","disabled","pending"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import"@dropins/tools/event-bus.js";import{u as A,l as B,i as F,j as b}from"./getStoreConfig.js";import{A as h}from"./getMultilineValues.js";import{s as v}from"./setBillingAddress.js";import{p as I}from"./setShippingAddress.js";import{A as y}from"./ToggleButton.js";import"@dropins/tools/preact-hooks.js";import"@dropins/tools/lib.js";import{c as S}from"./BillToShippingAddress2.js";import{useRef as k,useMemo as L,useCallback as _,useEffect as C}from"@dropins/tools/preact-compat.js";import{jsx as M}from"@dropins/tools/preact-jsx-runtime.js";import{B as N}from"./constants3.js";const z=f=>{var u;const l=k(null),{fields:i}=A(),o=B.value.data,n=o==null?void 0:o.defaultBillingAddress,s=F.value.data,a=(s==null?void 0:s.id)||"",t=s==null?void 0:s.billingAddress,m=(u=s==null?void 0:s.shippingAddresses)==null?void 0:u[0],{checked:r,setByUser:p}=b.value,d=!r,g=L(()=>!i||!d?!1:t?!S(i,t,m):!!n,[d,i,t,m,n]),c=_(e=>v({signal:e.signal,cartId:a,input:{address:r?void 0:I(e.address),same_as_shipping:r}}),[a,r]);return C(()=>{if(!p)return;const e=new AbortController;return r||l.current.triggerSaveAddress(e.signal),()=>{e.abort()}},[r,p]),M(y,{...f,addressType:h.BILLING,autoFill:g,"data-testid":"billing-form",headingId:"Checkout.BillingAddress.title",name:N,ref:l,saveAddressHandler:c,style:{display:d?"block":"none"}})};export{z as B};
2
+ //# sourceMappingURL=BillingForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BillingForm.js","sources":["../../src/containers/BillingForm/BillingForm.tsx"],"sourcesContent":["import { prepareAddress, setBillingAddress } from '@/checkout/api';\nimport {\n AddressForm,\n AddressFormHandle,\n SaveAddressCommand,\n} from '@/checkout/components/AddressForm';\nimport { compareAddresses } from '@/checkout/containers/BillToShippingAddress';\nimport { BILLING_FORM_NAME } from '@/checkout/containers/BillingForm';\nimport { useAddressFormFields } from '@/checkout/context/address-form-fields';\nimport { AddressFormType } from '@/checkout/data/models';\nimport {\n cartSignal,\n customerSignal,\n isBillToShippingSignal,\n} from '@/checkout/signals';\nimport { Container } from '@adobe/elsie/lib';\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'preact/compat';\n\nexport interface BillingFormProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const BillingForm: Container<BillingFormProps> = (props) => {\n const addressFormRef = useRef<AddressFormHandle>(null);\n\n const { fields } = useAddressFormFields();\n\n const customer = customerSignal.value.data;\n const defaultBillingAddress = customer?.defaultBillingAddress;\n\n const cart = cartSignal.value.data;\n const cartId = cart?.id || '';\n const billingAddress = cart?.billingAddress;\n const shippingAddress = cart?.shippingAddresses?.[0];\n\n const { checked, setByUser } = isBillToShippingSignal.value;\n const isVisible = !checked;\n\n const autoFillForm = useMemo(() => {\n if (!fields || !isVisible) return false;\n if (!billingAddress) return !!defaultBillingAddress;\n return !compareAddresses(fields, billingAddress, shippingAddress);\n }, [\n isVisible,\n fields,\n billingAddress,\n shippingAddress,\n defaultBillingAddress,\n ]);\n\n const saveAddressHandler = useCallback(\n (command: SaveAddressCommand) => {\n return setBillingAddress({\n signal: command.signal,\n cartId,\n input: {\n address: checked ? undefined : prepareAddress(command.address),\n same_as_shipping: checked,\n },\n });\n },\n [cartId, checked]\n );\n\n useEffect(() => {\n if (!setByUser) return;\n\n const controller = new AbortController();\n\n if (!checked) {\n addressFormRef.current!.triggerSaveAddress(controller.signal);\n }\n\n return () => {\n controller.abort();\n };\n }, [checked, setByUser]);\n\n return (\n <AddressForm\n {...props}\n addressType={AddressFormType.BILLING}\n autoFill={autoFillForm}\n data-testid=\"billing-form\"\n headingId=\"Checkout.BillingAddress.title\"\n name={BILLING_FORM_NAME}\n ref={addressFormRef}\n saveAddressHandler={saveAddressHandler}\n style={{ display: isVisible ? 'block' : 'none' }}\n />\n );\n};\n"],"names":["BillingForm","props","addressFormRef","useRef","fields","useAddressFormFields","customer","customerSignal","value","data","defaultBillingAddress","cart","cartSignal","cartId","id","billingAddress","shippingAddress","shippingAddresses","checked","setByUser","isBillToShippingSignal","isVisible","autoFillForm","useMemo","compareAddresses","saveAddressHandler","useCallback","command","setBillingAddress","signal","input","address","undefined","prepareAddress","same_as_shipping","useEffect","controller","AbortController","current","triggerSaveAddress","abort","_jsx","AddressForm","addressType","AddressFormType","BILLING","autoFill","headingId","name","BILLING_FORM_NAME","ref","style","display"],"mappings":"okBA0BO,MAAMA,EAAsDC,GAAA,OAC3DC,MAAAA,EAAiBC,EAA0B,IAAI,EAE/C,CAAEC,OAAAA,GAAWC,EAAqB,EAElCC,EAAWC,EAAeC,MAAMC,KAChCC,EAAwBJ,GAAAA,YAAAA,EAAUI,sBAElCC,EAAOC,EAAWJ,MAAMC,KACxBI,GAASF,GAAAA,YAAAA,EAAMG,KAAM,GACrBC,EAAiBJ,GAAAA,YAAAA,EAAMI,eACvBC,GAAkBL,EAAAA,GAAAA,YAAAA,EAAMM,oBAANN,YAAAA,EAA0B,GAE5C,CAAEO,QAAAA,EAASC,UAAAA,CAAAA,EAAcC,EAAuBZ,MAChDa,EAAY,CAACH,EAEbI,EAAeC,EAAQ,IACvB,CAACnB,GAAU,CAACiB,EAAkB,GAC7BN,EACE,CAACS,EAAiBpB,EAAQW,EAAgBC,CAAe,EADpC,CAAC,CAACN,EAE7B,CACDW,EACAjB,EACAW,EACAC,EACAN,CAAqB,CACtB,EAEKe,EAAqBC,EACxBC,GACQC,EAAkB,CACvBC,OAAQF,EAAQE,OAChBhB,OAAAA,EACAiB,MAAO,CACLC,QAASb,EAAUc,OAAYC,EAAeN,EAAQI,OAAO,EAC7DG,iBAAkBhB,CACpB,CAAA,CACD,EAEH,CAACL,EAAQK,CAAO,CAClB,EAEAiB,OAAAA,EAAU,IAAM,CACd,GAAI,CAAChB,EAAW,OAEViB,MAAAA,EAAa,IAAIC,gBAEvB,OAAKnB,GACYoB,EAAAA,QAASC,mBAAmBH,EAAWP,MAAM,EAGvD,IAAM,CACXO,EAAWI,MAAM,CAAA,CACnB,EACC,CAACtB,EAASC,CAAS,CAAC,EAGrBsB,EAACC,EAAW,CAAA,GACNzC,EACJ0C,YAAaC,EAAgBC,QAC7BC,SAAUxB,EACV,cAAY,eACZyB,UAAU,gCACVC,KAAMC,EACNC,IAAKhD,EACLuB,mBAAAA,EACA0B,MAAO,CAAEC,QAAS/B,EAAY,QAAU,MAAO,CAAA,CAChD,CAEL"}
@@ -0,0 +1,2 @@
1
+ import{classes as b}from"@dropins/tools/lib.js";import{u as V,H as A}from"./ToggleButton.js";import{Card as T,Skeleton as _,SkeletonRow as I,CartItemSkeleton as p,Divider as O,Accordion as z,AccordionSection as H,Icon as N,CartItem as $,Image as P,Price as S}from"@dropins/tools/components.js";import"@dropins/tools/preact-hooks.js";import{m as Q,i as R,T as W,z as F}from"./getStoreConfig.js";import"@dropins/tools/event-bus.js";/* empty css */import{jsx as a,jsxs as o,Fragment as g}from"@dropins/tools/preact-jsx-runtime.js";import{S as j}from"./cart-item.js";import*as v from"@dropins/tools/preact-compat.js";import{useState as q,useCallback as M,useMemo as B}from"@dropins/tools/preact-compat.js";import{useText as w,Text as f}from"@dropins/tools/i18n.js";function G(n){window.location.href=n}const x=n=>v.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},v.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z",stroke:"currentColor"}),v.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M11.75 5.88423V4.75H12.25V5.88423L12.0485 13.0713H11.9515L11.75 5.88423ZM11.7994 18.25V16.9868H12.2253V18.25H11.7994Z",stroke:"currentColor"})),X=()=>a(T,{children:o(_,{"data-testid":"cart-summary-skeleton",className:"checkout-cart-summary-skeleton",style:{gridTemplateColumns:"1fr"},children:[a(I,{variant:"heading",fullWidth:!0,size:"medium"}),a(p,{}),a(p,{}),a(p,{}),a(p,{}),a(p,{}),a(I,{size:"medium",fullWidth:!0})]})}),Z=()=>a(_,{"data-testid":"cart-summary-skeleton",className:"checkout-mobile-cart-summary-skeleton",style:{gridTemplateColumns:"1fr"},children:a(I,{fullWidth:!0,size:"xlarge"})}),D=({type:n,onClick:e,children:c})=>o(g,{children:[a(O,{className:"checkout-cart-summary__divider-bottom",variant:"primary"}),a("button",{"data-testid":`action-${n}`,className:"checkout-cart-summary__action",onClick:e,children:c})]}),U=({title:n,isLoading:e,totalQuantity:c,routeCart:t,items:r,taxIncluded:i,action:l})=>a(g,{children:e?a(Z,{}):a(z,{actionIconPosition:"left",children:o(H,{title:`${n} (${c})`,secondaryText:(t==null?void 0:t())&&a("a",{href:t==null?void 0:t(),rel:"noreferrer",children:a(f,{id:"Checkout.CartSummary.editCart"})}),children:[r==null?void 0:r.map(s=>a(E,{item:s,taxIncluded:i},s==null?void 0:s.uid)),l]})})}),J=({title:n,isLoading:e,totalQuantity:c,routeCart:t,items:r,action:i,taxIncluded:l})=>a(g,{children:e?a(X,{}):o(T,{children:[o("div",{className:"checkout-cart-summary__heading",children:[o(A,{level:2,className:"checkout-cart-summary__title",children:[n," (",c,")"]}),(t==null?void 0:t())&&a("a",{className:"checkout-cart-summary__edit",href:t==null?void 0:t(),rel:"noreferrer",children:a(f,{id:"Checkout.CartSummary.editCart"})})]}),a(O,{className:"checkout-cart-summary__divider-top",variant:"primary"}),a("div",{className:"checkout-cart-summary__items",children:r==null?void 0:r.map(s=>a(E,{item:s,taxIncluded:l},s==null?void 0:s.uid))}),i]})}),K=({className:n,...e})=>{const c=w("Checkout.CartSummary.title").title,t=V();return a("div",{className:b(["checkout-cart-summary",n]),children:t==="small"?a(U,{title:c,...e}):a(J,{title:c,...e})})},E=({className:n,item:e,taxIncluded:c=!1})=>{var u,h;const t=w({Sender:"Checkout.CartSummary.GiftCard.sender",Recipient:"Checkout.CartSummary.GiftCard.recipient",Message:"Checkout.CartSummary.GiftCard.message",Download:"Checkout.CartSummary.Downloadable.download",OutOfStockAlert:"Checkout.OutOfStock.alert",..."links"in e&&e.links?{Files:a(f,{id:"Checkout.CartSummary.Downloadable.files",plural:e.links.length,fields:{count:e.links.length}})}:{}});let r=e.regularPrice,i=e.total;c&&(r=e.priceInclTax,i=e.totalInclTax);const l={..."customizableOptions"in e?e.customizableOptions:{},..."configurableOptions"in e?e.configurableOptions:{},..."links"in e&&e.links?{[t.Files]:e.links.join(", ")}:{},..."senderName"in e&&e.senderName?{[t.Sender]:e.senderName}:{},..."recipientName"in e&&e.recipientName?{[t.Recipient]:e.recipientName}:{},..."senderEmail"in e&&"senderName"in e&&e.senderName&&e.senderEmail?{[t.Sender]:`${e.senderName} (${e.senderEmail})`}:{},..."recipientEmail"in e&&"recipientName"in e&&e.recipientName&&e.recipientEmail?{[t.Recipient]:`${e.recipientName} (${e.recipientEmail})`}:{},..."message"in e&&e.message&&e.message!=""?{[t.Message]:s(e.message,60)}:{}};function s(d,m){return d.length>m?`${d.slice(0,m)}...`:d}const y=e.stockStatus===j.OutOfStock?o("span",{"data-testid":"checkout-cart-item-alert",children:[a(N,{source:x,size:"16"}),t.OutOfStockAlert]}):void 0,k=!y&&e.onlyXLeftInStock?o("span",{"data-testid":"checkout-cart-item-low-inventory",children:[a(N,{source:x,size:"16"}),a(f,{id:"Checkout.OutOfStock.lowInventory",plural:e.onlyXLeftInStock,fields:{count:e.onlyXLeftInStock}})]}):void 0;return a("div",{className:b(["checkout-cart-summary-item",n]),children:a($,{"data-testid":"cart-summary-item",taxIncluded:c,title:a("div",{"data-testid":"product-name",children:e.name}),sku:a("div",{children:e.sku}),quantity:e.quantity,image:a(P,{src:((u=e.image)==null?void 0:u.src)??"",alt:(h=e.image)==null?void 0:h.alt,loading:"lazy",width:"80",height:"80",params:{width:80}}),warning:k,alert:y,configurations:l,price:a(S,{amount:e.regularPrice.value,currency:r.currency,weight:"normal"}),total:o(g,{children:[a(S,{amount:e.regularPrice.value*e.quantity,currency:r.currency,variant:e.discounted?"strikethrough":"default"}),e.discounted&&a(S,{amount:i.value,currency:i.currency,sale:!0})]})},e.uid)})},Y=5,ee={canDisplayMoreItems:!1,hasHiddenItems:!1,isLoading:!0,isTaxIncluded:!1,totalQuantity:0,visibleItems:[]};function ae(n){const{config:e}=Q(),c=e===void 0,t=R.value.data,r=t==null;if(c||r)return ee;const{cartSummaryMaxItems:i,cartSummaryTotalDisplay:l,taxCartDisplay:s}=e,y=l===W.Quantity,k=s.shoppingCartDisplayPrice===F.IncludingTax,{items:u,totalQty:h}=t,d=y?h:u.length,m=n?i:Math.min(i,Y),C=u.length>m,L=u.slice(0,m);return{canDisplayMoreItems:C&&!n&&m!=i,hasHiddenItems:C,isLoading:!1,isTaxIncluded:k,totalQuantity:d,visibleItems:L}}const ye=({routeCart:n,...e})=>{const[c,t]=q(!1),r=w({ViewAll:"Checkout.CartSummary.viewAll",ViewMore:"Checkout.CartSummary.viewMore"}),{canDisplayMoreItems:i,hasHiddenItems:l,isLoading:s,isTaxIncluded:y,visibleItems:k,totalQuantity:u}=ae(c),h=M(()=>{t(!0)},[]),d=M(()=>{n&&G(n())},[n]),m=B(()=>{if(l){if(i)return a(D,{type:"view-more",onClick:h,children:r.ViewMore});if(n)return a(D,{type:"view-all",onClick:d,children:r.ViewAll})}},[l,i,h,r.ViewMore,r.ViewAll,d,n]);return a(K,{...e,action:m,taxIncluded:y,isLoading:s,items:k,routeCart:n,totalQuantity:u})};export{ye as C,ae as u};
2
+ //# sourceMappingURL=CartSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CartSummary.js","sources":["../../src/lib/redirect.ts","../../node_modules/@adobe/elsie/src/icons/WarningWithCircle.svg","../../src/components/CartSummary/CartSummarySkeleton.tsx","../../src/components/CartSummary/MobileCartSummarySkeleton.tsx","../../src/components/CartSummary/CartSummary.tsx","../../src/components/CartSummaryItem/CartSummaryItem.tsx","../../src/containers/CartSummary/constants.ts","../../src/containers/CartSummary/CartSummary.tsx"],"sourcesContent":["export function redirect(location: string): void {\n window.location.href = location;\n}\n","import * as React from \"react\";\nconst SvgWarningWithCircle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M11.75 5.88423V4.75H12.25V5.88423L12.0485 13.0713H11.9515L11.75 5.88423ZM11.7994 18.25V16.9868H12.2253V18.25H11.7994Z\", stroke: \"currentColor\" }));\nexport default SvgWarningWithCircle;\n","import { FunctionComponent } from 'preact';\nimport { Card, Skeleton, SkeletonRow, CartItemSkeleton } from '@adobe/elsie/components';\n\nexport const CartSummarySkeleton: FunctionComponent = () => {\n return (\n <Card>\n <Skeleton\n data-testid=\"cart-summary-skeleton\"\n className=\"checkout-cart-summary-skeleton\"\n style={{ gridTemplateColumns: '1fr' }}\n >\n <SkeletonRow variant=\"heading\" fullWidth={true} size=\"medium\" />\n <CartItemSkeleton />\n <CartItemSkeleton />\n <CartItemSkeleton />\n <CartItemSkeleton />\n <CartItemSkeleton />\n <SkeletonRow size=\"medium\" fullWidth={true} />\n </Skeleton>\n </Card>\n );\n};\n","import { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe/elsie/components';\n\nexport const MobileCartSummarySkeleton: FunctionComponent = () => {\n return (\n <Skeleton\n data-testid=\"cart-summary-skeleton\"\n className=\"checkout-mobile-cart-summary-skeleton\"\n style={{ gridTemplateColumns: '1fr' }}\n >\n <SkeletonRow fullWidth={true} size=\"xlarge\" />\n </Skeleton>\n );\n};\n","import { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe/elsie/lib';\nimport '@/checkout/components/CartSummary/CartSummary.css';\nimport {\n Accordion,\n AccordionSection,\n Card,\n Divider,\n} from '@adobe/elsie/components';\nimport { Text, useText } from '@adobe/elsie/i18n';\nimport { CartSummaryItem, Heading } from '@/checkout/components';\nimport { CartSummarySkeleton } from '@/checkout/components/CartSummary/CartSummarySkeleton';\nimport { MobileCartSummarySkeleton } from '@/checkout/components/CartSummary/MobileCartSummarySkeleton';\nimport { useBreakpoint } from '@/checkout/hooks/useBreakpoint';\nimport { Item } from '@/checkout/data/models';\n\nexport type CartSummaryActionProps = {\n type: 'view-more' | 'view-all';\n onClick: () => void;\n};\n\nexport interface CartSummaryProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'action'> {\n action?: VNode<CartSummaryActionProps>;\n taxIncluded: boolean;\n isLoading: boolean;\n items: Item[];\n routeCart?: () => string;\n totalQuantity: number;\n}\n\nexport const CartSummaryAction: FunctionComponent<CartSummaryActionProps> = ({\n type,\n onClick,\n children,\n}) => {\n return (\n <>\n <Divider\n className=\"checkout-cart-summary__divider-bottom\"\n variant=\"primary\"\n />\n <button\n data-testid={`action-${type}`}\n className=\"checkout-cart-summary__action\"\n onClick={onClick}\n >\n {children}\n </button>\n </>\n );\n};\n\nconst Mobile: FunctionComponent<CartSummaryProps> = ({\n title,\n isLoading,\n totalQuantity,\n routeCart,\n items,\n taxIncluded,\n action,\n}) => {\n return (\n <>\n {isLoading ? (\n <MobileCartSummarySkeleton />\n ) : (\n <Accordion actionIconPosition=\"left\">\n <AccordionSection\n title={`${title} (${totalQuantity})`}\n secondaryText={\n routeCart?.() && (\n <a href={routeCart?.()} rel=\"noreferrer\">\n <Text id=\"Checkout.CartSummary.editCart\" />\n </a>\n )\n }\n >\n {items?.map((item) => (\n <CartSummaryItem\n key={item?.uid}\n item={item}\n taxIncluded={taxIncluded}\n />\n ))}\n\n {action}\n </AccordionSection>\n </Accordion>\n )}\n </>\n );\n};\n\nconst Desktop: FunctionComponent<CartSummaryProps> = ({\n title,\n isLoading,\n totalQuantity,\n routeCart,\n items,\n action,\n taxIncluded,\n}) => {\n return (\n <>\n {isLoading ? (\n <CartSummarySkeleton />\n ) : (\n <Card>\n <div className=\"checkout-cart-summary__heading\">\n <Heading level={2} className=\"checkout-cart-summary__title\">\n {title} ({totalQuantity})\n </Heading>\n\n {routeCart?.() && (\n <a\n className=\"checkout-cart-summary__edit\"\n href={routeCart?.()}\n rel=\"noreferrer\"\n >\n <Text id=\"Checkout.CartSummary.editCart\" />\n </a>\n )}\n </div>\n\n <Divider\n className=\"checkout-cart-summary__divider-top\"\n variant=\"primary\"\n />\n\n <div className=\"checkout-cart-summary__items\">\n {items?.map((item) => (\n <CartSummaryItem\n key={item?.uid}\n item={item}\n taxIncluded={taxIncluded}\n />\n ))}\n </div>\n\n {action}\n </Card>\n )}\n </>\n );\n};\n\nexport const CartSummary: FunctionComponent<CartSummaryProps> = ({\n className,\n ...props\n}) => {\n const title = useText('Checkout.CartSummary.title').title;\n const breakpoint = useBreakpoint();\n\n return (\n <div className={classes(['checkout-cart-summary', className])}>\n {breakpoint === 'small' ? (\n <Mobile title={title} {...props} />\n ) : (\n <Desktop title={title} {...props} />\n )}\n </div>\n );\n};\n","import { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe/elsie/lib';\nimport '@/checkout/components/CartSummaryItem/CartSummaryItem.css';\nimport { WarningWithCircle } from '@adobe/elsie/icons';\nimport { CartItem, Icon, Image, Price } from '@adobe/elsie/components';\nimport { Item, StockStatus } from '@/checkout/data/models';\nimport { useText, Text } from '@adobe/elsie/i18n';\n\nexport interface CartSummaryItemProps extends HTMLAttributes<HTMLDivElement> {\n item: Item;\n taxIncluded?: boolean;\n}\n\nexport const CartSummaryItem: FunctionComponent<CartSummaryItemProps> = ({\n className,\n item,\n taxIncluded = false,\n}) => {\n const translations = useText({\n Sender: 'Checkout.CartSummary.GiftCard.sender',\n Recipient: 'Checkout.CartSummary.GiftCard.recipient',\n Message: 'Checkout.CartSummary.GiftCard.message',\n Download: 'Checkout.CartSummary.Downloadable.download',\n OutOfStockAlert: 'Checkout.OutOfStock.alert',\n ...('links' in item && item.links\n ? {\n Files: (\n <Text\n id=\"Checkout.CartSummary.Downloadable.files\"\n plural={item.links.length}\n fields={{\n count: item.links.length,\n }}\n />\n ),\n }\n : {}),\n });\n\n // Taking advantage of using withText() to build the string literal for translations.Files\n // https://github.com/synacor/preact-i18n/tree/2.3.1-preactx?tab=readme-ov-file#examples-4\n\n let price = item.regularPrice;\n let total = item.total;\n\n if (taxIncluded) {\n price = item.priceInclTax;\n total = item.totalInclTax;\n }\n\n const configurations = {\n ...('customizableOptions' in item ? item.customizableOptions : {}),\n ...('configurableOptions' in item ? item.configurableOptions : {}),\n ...('links' in item && item.links\n ? { [translations.Files]: item.links.join(', ') }\n : {}),\n ...('senderName' in item && item.senderName\n ? { [translations.Sender]: item.senderName }\n : {}),\n ...('recipientName' in item && item.recipientName\n ? { [translations.Recipient]: item.recipientName }\n : {}),\n ...('senderEmail' in item &&\n 'senderName' in item &&\n item.senderName &&\n item.senderEmail\n ? { [translations.Sender]: `${item.senderName} (${item.senderEmail})` }\n : {}),\n ...('recipientEmail' in item &&\n 'recipientName' in item &&\n item.recipientName &&\n item.recipientEmail\n ? {\n [translations.Recipient]: `${item.recipientName} (${item.recipientEmail})`,\n }\n : {}),\n ...('message' in item && item.message && item.message != ''\n ? { [translations.Message]: truncateMessage(item.message as string, 60) }\n : {}),\n };\n\n function truncateMessage(message: string, limit: number) {\n if (message.length > limit) {\n return `${message.slice(0, limit)}...`;\n }\n return message;\n }\n\n const alert =\n item.stockStatus === StockStatus.OutOfStock ? (\n <span data-testid=\"checkout-cart-item-alert\">\n <Icon source={WarningWithCircle} size=\"16\" />\n {translations.OutOfStockAlert}\n </span>\n ) : undefined;\n\n const lowInventory =\n !alert && item.onlyXLeftInStock ? (\n <span data-testid=\"checkout-cart-item-low-inventory\">\n <Icon source={WarningWithCircle} size=\"16\" />\n <Text\n id=\"Checkout.OutOfStock.lowInventory\"\n plural={item.onlyXLeftInStock}\n fields={{\n count: item.onlyXLeftInStock,\n }}\n />\n </span>\n ) : undefined;\n\n return (\n <div className={classes(['checkout-cart-summary-item', className])}>\n <CartItem\n data-testid=\"cart-summary-item\"\n key={item.uid}\n taxIncluded={taxIncluded}\n title={<div data-testid=\"product-name\">{item.name}</div>}\n sku={<div>{item.sku}</div>}\n quantity={item.quantity}\n image={\n <Image\n src={item.image?.src ?? ''}\n alt={item.image?.alt}\n loading=\"lazy\"\n width=\"80\"\n height=\"80\"\n params={{ width: 80 }}\n />\n }\n warning={lowInventory}\n alert={alert}\n configurations={configurations}\n price={\n <Price\n amount={item.regularPrice.value}\n currency={price.currency}\n weight=\"normal\"\n />\n }\n total={\n <>\n <Price\n amount={item.regularPrice.value * item.quantity}\n currency={price.currency}\n variant={item.discounted ? 'strikethrough' : 'default'}\n />\n\n {item.discounted && (\n <Price amount={total.value} currency={total.currency} sale />\n )}\n </>\n }\n />\n </div>\n );\n};\n","export const DEFAULT_VISIBLE_ITEMS = 5;\n","import {\n CartSummaryAction,\n CartSummary as CartSummaryComponent,\n} from '@/checkout/components/CartSummary/CartSummary';\nimport { DEFAULT_VISIBLE_ITEMS } from '@/checkout/containers/CartSummary/constants';\nimport { useStore } from '@/checkout/context/store';\nimport { Item, PriceDisplay, TotalDisplay } from '@/checkout/data/models';\nimport { redirect } from '@/checkout/lib';\nimport { cartSignal } from '@/checkout/signals';\nimport { useText } from '@adobe/elsie/i18n';\nimport { Container } from '@adobe/elsie/lib';\nimport { HTMLAttributes, useCallback, useMemo, useState } from 'preact/compat';\n\nexport interface CartSummaryProps extends HTMLAttributes<HTMLDivElement> {\n routeCart?: () => string;\n}\n\ntype CartSummaryState = {\n canDisplayMoreItems: boolean;\n hasHiddenItems: boolean;\n isLoading: boolean;\n isTaxIncluded: boolean;\n totalQuantity: number;\n visibleItems: Item[];\n};\n\nconst initialState: CartSummaryState = {\n canDisplayMoreItems: false,\n hasHiddenItems: false,\n isLoading: true,\n isTaxIncluded: false,\n totalQuantity: 0,\n visibleItems: [],\n};\n\nexport function useCartSummary(displayMaxItems: boolean): CartSummaryState {\n const { config } = useStore();\n const isLoadingStoreConfig = config === undefined;\n\n const cartData = cartSignal.value.data;\n const isLoadingCartData = cartData === undefined || cartData === null;\n\n if (isLoadingStoreConfig || isLoadingCartData) return initialState;\n\n const { cartSummaryMaxItems, cartSummaryTotalDisplay, taxCartDisplay } =\n config;\n\n const useQtys = cartSummaryTotalDisplay === TotalDisplay.Quantity;\n const isTaxIncluded =\n taxCartDisplay.shoppingCartDisplayPrice === PriceDisplay.IncludingTax;\n\n const { items, totalQty } = cartData;\n const totalQuantity = useQtys ? totalQty : items.length;\n\n const numOfVisibleItems = displayMaxItems\n ? cartSummaryMaxItems\n : Math.min(cartSummaryMaxItems, DEFAULT_VISIBLE_ITEMS);\n\n const hasHiddenItems = items.length > numOfVisibleItems;\n const visibleItems = items.slice(0, numOfVisibleItems);\n\n const canDisplayMoreItems =\n hasHiddenItems &&\n !displayMaxItems &&\n numOfVisibleItems != cartSummaryMaxItems;\n\n return {\n canDisplayMoreItems,\n hasHiddenItems,\n isLoading: false,\n isTaxIncluded,\n totalQuantity,\n visibleItems,\n };\n}\n\nexport const CartSummary: Container<CartSummaryProps> = ({\n routeCart,\n ...props\n}) => {\n const [displayMaxItems, setDisplayMaxItems] = useState<boolean>(false);\n\n const translations = useText({\n ViewAll: 'Checkout.CartSummary.viewAll',\n ViewMore: 'Checkout.CartSummary.viewMore',\n });\n\n const {\n canDisplayMoreItems,\n hasHiddenItems,\n isLoading,\n isTaxIncluded,\n visibleItems,\n totalQuantity,\n } = useCartSummary(displayMaxItems);\n\n const viewMaxItems = useCallback(() => {\n setDisplayMaxItems(true);\n }, []);\n\n const viewAllItems = useCallback(() => {\n if (!routeCart) return;\n redirect(routeCart());\n }, [routeCart]);\n\n const action = useMemo(() => {\n if (!hasHiddenItems) return;\n\n if (canDisplayMoreItems) {\n return (\n <CartSummaryAction type=\"view-more\" onClick={viewMaxItems}>\n {translations.ViewMore}\n </CartSummaryAction>\n );\n }\n\n if (routeCart) {\n return (\n <CartSummaryAction type=\"view-all\" onClick={viewAllItems}>\n {translations.ViewAll}\n </CartSummaryAction>\n );\n }\n }, [\n hasHiddenItems,\n canDisplayMoreItems,\n viewMaxItems,\n translations.ViewMore,\n translations.ViewAll,\n viewAllItems,\n routeCart,\n ]);\n\n return (\n <CartSummaryComponent\n {...props}\n action={action}\n taxIncluded={isTaxIncluded}\n isLoading={isLoading}\n items={visibleItems}\n routeCart={routeCart}\n totalQuantity={totalQuantity}\n />\n );\n};\n"],"names":["redirect","location","window","href","SvgWarningWithCircle","props","React","CartSummarySkeleton","_jsx","Card","children","_jsxs","Skeleton","className","style","gridTemplateColumns","SkeletonRow","variant","fullWidth","size","CartItemSkeleton","MobileCartSummarySkeleton","CartSummaryAction","type","onClick","_Fragment","Divider","Mobile","title","isLoading","totalQuantity","routeCart","items","taxIncluded","action","Accordion","actionIconPosition","AccordionSection","secondaryText","rel","Text","id","map","item","CartSummaryItem","uid","Desktop","Heading","level","CartSummary","useText","breakpoint","useBreakpoint","classes","translations","Sender","Recipient","Message","Download","OutOfStockAlert","links","Files","plural","length","fields","count","price","regularPrice","total","priceInclTax","totalInclTax","configurations","customizableOptions","configurableOptions","join","senderName","recipientName","senderEmail","recipientEmail","message","truncateMessage","limit","slice","alert","stockStatus","StockStatus","OutOfStock","Icon","source","WarningWithCircle","undefined","lowInventory","onlyXLeftInStock","CartItem","name","sku","quantity","image","Image","src","alt","loading","width","height","params","warning","Price","amount","value","currency","weight","discounted","sale","DEFAULT_VISIBLE_ITEMS","initialState","canDisplayMoreItems","hasHiddenItems","isTaxIncluded","visibleItems","useCartSummary","displayMaxItems","config","useStore","isLoadingStoreConfig","cartData","cartSignal","data","isLoadingCartData","cartSummaryMaxItems","cartSummaryTotalDisplay","taxCartDisplay","useQtys","TotalDisplay","Quantity","shoppingCartDisplayPrice","PriceDisplay","IncludingTax","totalQty","numOfVisibleItems","Math","min","setDisplayMaxItems","useState","ViewAll","ViewMore","viewMaxItems","useCallback","viewAllItems","useMemo","CartSummaryComponent"],"mappings":"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","x_google_ignoreList":[1]}
@@ -0,0 +1,2 @@
1
+ import*as t from"@dropins/tools/preact-compat.js";import{useState as m,useEffect as f}from"@dropins/tools/preact-compat.js";import{events as u}from"@dropins/tools/event-bus.js";import{AlertBanner as a,Icon as g}from"@dropins/tools/components.js";import{jsx as n}from"@dropins/tools/preact-jsx-runtime.js";import{useText as p}from"@dropins/tools/i18n.js";const h=r=>t.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...r},t.createElement("path",{vectorEffect:"non-scaling-stroke",fillRule:"evenodd",clipRule:"evenodd",d:"M1 20.8953L12.1922 1.5L23.395 20.8953H1ZM13.0278 13.9638L13.25 10.0377V9H11.25V10.0377L11.4722 13.9638H13.0278ZM11.2994 16V17.7509H13.2253V16H11.2994Z",fill:"currentColor"})),x=r=>{const[i,s]=m(!1);f(()=>{const o=u.on("error",e=>{(e==null?void 0:e.source)==="checkout"&&(e==null?void 0:e.type)==="network"&&s(!0)});return()=>{o==null||o.off()}},[]);const l=()=>{s(!1)},c=p({message:"Checkout.ErrorBanner.genericMessage",label:"Checkout.ErrorBanner.dismissLabel"});return i?n(a,{...r,"data-testid":"error-banner",icon:n(g,{source:h}),message:n("span",{children:c.message}),onDismiss:l,variant:"warning"}):null};export{x as E};
2
+ //# sourceMappingURL=ErrorBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBanner.js","sources":["../../node_modules/@adobe/elsie/src/icons/WarningFilled.svg","../../src/containers/ErrorBanner/ErrorBanner.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgWarningFilled = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M1 20.8953L12.1922 1.5L23.395 20.8953H1ZM13.0278 13.9638L13.25 10.0377V9H11.25V10.0377L11.4722 13.9638H13.0278ZM11.2994 16V17.7509H13.2253V16H11.2994Z\", fill: \"currentColor\" }));\nexport default SvgWarningFilled;\n","import { FunctionComponent, useEffect, useState } from 'preact/compat';\nimport { useText } from '@adobe/elsie/i18n';\nimport { events } from '@adobe/event-bus';\nimport { AlertBanner, AlertBannerProps, Icon } from '@adobe/elsie/components';\nimport { WarningFilled } from '@adobe/elsie/icons';\n\nexport const ErrorBanner: FunctionComponent<Partial<AlertBannerProps>> = (\n props\n) => {\n const [hasError, setHasError] = useState<boolean>(false);\n\n useEffect(() => {\n const subscription = events.on('error', (data) => {\n if (data?.source === 'checkout' && data?.type === 'network') {\n setHasError(true);\n }\n });\n return () => {\n subscription?.off();\n };\n }, []);\n\n const onDismiss = () => {\n setHasError(false);\n };\n\n const translations = useText({\n message: 'Checkout.ErrorBanner.genericMessage',\n label: 'Checkout.ErrorBanner.dismissLabel',\n });\n\n if (!hasError) return null;\n\n return (\n <AlertBanner\n {...props}\n data-testid=\"error-banner\"\n icon={<Icon source={WarningFilled} />}\n message={<span>{translations.message}</span>}\n onDismiss={onDismiss}\n variant=\"warning\"\n />\n );\n};\n"],"names":["SvgWarningFilled","props","React","ErrorBanner","hasError","setHasError","useState","useEffect","subscription","events","on","data","source","type","off","onDismiss","translations","useText","message","label","_jsx","AlertBanner","icon","Icon","WarningFilled","children","variant"],"mappings":"kWACA,MAAMA,EAAoBC,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAO,EAAkBC,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,SAAU,UAAW,SAAU,UAAW,EAAG,yJAA0J,KAAM,cAAc,CAAE,CAAC,ECKheC,EAERF,GAAA,CACH,KAAM,CAACG,EAAUC,CAAW,EAAIC,EAAkB,EAAK,EAEvDC,EAAU,IAAM,CACd,MAAMC,EAAeC,EAAOC,GAAG,QAAmBC,GAAA,EAC5CA,GAAAA,YAAAA,EAAMC,UAAW,aAAcD,GAAAA,YAAAA,EAAME,QAAS,WAChDR,EAAY,EAAI,CAClB,CACD,EACD,MAAO,IAAM,CACXG,GAAAA,MAAAA,EAAcM,KAAI,CAEtB,EAAG,CAAE,CAAA,EAEL,MAAMC,EAAYA,IAAM,CACtBV,EAAY,EAAK,CAAA,EAGbW,EAAeC,EAAQ,CAC3BC,QAAS,sCACTC,MAAO,mCAAA,CACR,EAED,OAAKf,EAGHgB,EAACC,EAAW,CAAA,GACNpB,EACJ,cAAY,eACZqB,KAAMF,EAACG,EAAI,CAACX,OAAQY,CAAAA,CAAgB,EACpCN,QAASE,EAAA,OAAA,CAAAK,SAAOT,EAAaE,OAAAA,CAAc,EAC3CH,UAAAA,EACAW,QAAQ,SAAA,CACT,EAVmB,IAYxB","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import"@dropins/tools/event-bus.js";import{i as M,l as T,n as z}from"./getStoreConfig.js";import{i as V,s as $}from"./setGuestEmailOnCart.js";import{Field as j,Input as q}from"@dropins/tools/components.js";import{jsx as o,jsxs as m,Fragment as G}from"@dropins/tools/preact-jsx-runtime.js";import{H as O,p as P}from"./ToggleButton.js";import{useState as f,useEffect as w}from"@dropins/tools/preact-hooks.js";import{classes as N}from"@dropins/tools/lib.js";/* empty css */import{useText as k,Text as F}from"@dropins/tools/i18n.js";import{L as R}from"./constants2.js";const U=({value:r,error:l,hint:a,onChange:c,onBlur:u,onInvalid:n})=>{const i=k({LoginFormLabel:"Checkout.LoginForm.ariaLabel",LoginFormFloatingLabel:"Checkout.LoginForm.floatingLabel",LoginFormPlaceholder:"Checkout.LoginForm.placeholder"});return o(j,{size:"medium",error:l,hint:a,children:o(q,{id:"customer-email",name:"customer-email",type:"email",value:r,autocomplete:"email",placeholder:i.LoginFormPlaceholder,floatingLabel:i.LoginFormFloatingLabel,onChange:c,onBlur:u,onInvalid:n,required:!0,"aria-label":i.LoginFormLabel,"aria-required":!0})})},J=({onSignInClick:r,email:l})=>m("div",{className:"checkout-login-form__sign-in",children:[o(F,{id:"Checkout.LoginForm.account"}),o("a",{"data-testid":"sign-in-link",className:"checkout-login-form__link",href:"#",target:"_blank",rel:"noreferrer",onClick:a=>{a.preventDefault(),r==null||r(l)},children:o(F,{id:"Checkout.LoginForm.signIn"})})]}),K=({name:r,className:l,currentEmail:a,hint:c,error:u=null,onEmailChange:n,onEmailBlur:i,onEmailInvalid:g,onSignInClick:L,onSignOutClick:v,isAuthenticated:_,customer:e,...h})=>{const d=k({Title:"Checkout.LoginForm.title"});return m("div",{...h,className:N(["checkout-login-form",l]),"data-testid":"checkout-login-form",children:[m("div",{className:"checkout-login-form__heading",children:[o(O,{level:2,className:"checkout-login-form__title",children:d.Title}),_?o(Q,{onSignOutClick:v}):o(J,{onSignInClick:L,email:a})]}),e?m("div",{className:"checkout-login-form__customer-details",children:[o("div",{className:"checkout-login-form__customer-name",children:`${e==null?void 0:e.firstName} ${e==null?void 0:e.lastName}`}),o("div",{className:"checkout-login-form__customer-email",children:e==null?void 0:e.email})]}):o("div",{className:"checkout-login-form__content",children:m("form",{className:N(["dropin-login-form__form",l]),name:r,noValidate:!0,children:[o("button",{type:"submit",disabled:!0,style:"display: none","aria-hidden":"true"}),o(U,{value:a||void 0,error:u||"",hint:c,onChange:n,onBlur:i,onInvalid:g})]})})]})},Q=({onSignOutClick:r})=>m("p",{className:"checkout-login-form__sign-out",children:[o(F,{id:"Checkout.LoginForm.switch"}),o("a",{className:"checkout-login-form__link",href:"#",target:"_blank",rel:"noreferrer",onClick:l=>{l.preventDefault(),r==null||r()},children:o(F,{id:"Checkout.LoginForm.signOut"})})]}),W=r=>P.email.test(r),X=1e3,se=({className:r,email:l=null,onSignInClick:a,onSignOutClick:c,...u})=>{const n=k({LoginFormInvalidEmailError:"Checkout.LoginForm.invalidEmailError",LoginFormMissingEmailError:"Checkout.LoginForm.missingEmailError",LoginFormEmailExistsAlreadyHaveAccount:"Checkout.LoginForm.emailExists.alreadyHaveAccount",LoginFormEmailExistsSignInButton:"Checkout.LoginForm.emailExists.signInButton",LoginFormEmailExistsForFasterCheckout:"Checkout.LoginForm.emailExists.forFasterCheckout"}),{data:i}=M.value,g=(i==null?void 0:i.id)||"",L=!!i,[v,_]=f(!1),[e,h]=f(l),[d,E]=f(),[x,p]=f(!0),b=t=>t.valid?null:t.valueMissing?n.LoginFormMissingEmailError:n.LoginFormInvalidEmailError,C=T.value.data,A=t=>{const{value:s}=t.target;h(s),E(null),p(!0)},y=t=>{const{validity:s}=t.target;E(b(s))},I=t=>{const{validity:s}=t.target;E(b(s))};!v&&L&&(_(!0),h((i==null?void 0:i.email)||l)),w(()=>{if(!e||d)return;const t=setTimeout(()=>{V(e).then(s=>{p(s),(i==null?void 0:i.email)!==e&&$({cartId:g,email:e}).catch(H=>{console.log("set email failed",H)})}).catch(s=>{console.log(s),E(n.LoginFormInvalidEmailError),p(!0)})},X);return()=>{t&&clearTimeout(t)}},[e,d,n.LoginFormInvalidEmailError,i==null?void 0:i.email,g]);const B=x?"":m(G,{children:[n.LoginFormEmailExistsAlreadyHaveAccount," ",o("a",{href:"#",onClick:t=>{t.preventDefault(),a==null||a(e)},children:n.LoginFormEmailExistsSignInButton})," ",n.LoginFormEmailExistsForFasterCheckout]});return o(K,{className:r,currentEmail:e,error:d,hint:B,name:R,onEmailBlur:y,onEmailChange:A,onEmailInvalid:I,onSignInClick:t=>{const s=e?W(e):!1;a==null||a(s?t:null)},onSignOutClick:c,isAuthenticated:!!z.value,customer:C,...u})};export{se as L};
2
+ //# sourceMappingURL=LoginForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginForm.js","sources":["../../src/components/LoginForm/Email.tsx","../../src/components/LoginForm/SignIn.tsx","../../src/components/LoginForm/LoginForm.tsx","../../src/components/LoginForm/SignOut.tsx","../../src/containers/LoginForm/LoginForm.tsx"],"sourcesContent":["import { Field, Input } from '@adobe/elsie/components';\nimport { useText } from '@adobe/elsie/i18n';\nimport { HTMLAttributes } from 'preact/compat';\nimport { FunctionComponent } from 'preact';\n\nexport interface LoginEmailProps extends HTMLAttributes<HTMLFormElement> {\n value?: string;\n error?: string;\n hint?: string;\n onChange: (e: any) => void;\n onBlur: (e: any) => void;\n onInvalid: (e: any) => void;\n}\n\nexport const Email: FunctionComponent<LoginEmailProps> = ({\n value,\n error,\n hint,\n onChange,\n onBlur,\n onInvalid,\n}) => {\n const translations = useText({\n LoginFormLabel: 'Checkout.LoginForm.ariaLabel',\n LoginFormFloatingLabel: 'Checkout.LoginForm.floatingLabel',\n LoginFormPlaceholder: 'Checkout.LoginForm.placeholder',\n });\n\n return (\n <Field size=\"medium\" error={error} hint={hint}>\n <Input\n id=\"customer-email\"\n name=\"customer-email\"\n type=\"email\"\n value={value}\n autocomplete=\"email\"\n placeholder={translations.LoginFormPlaceholder}\n floatingLabel={translations.LoginFormFloatingLabel}\n onChange={onChange}\n onBlur={onBlur}\n onInvalid={onInvalid}\n required={true}\n aria-label={translations.LoginFormLabel}\n aria-required={true}\n />\n </Field>\n );\n};\n","import { FunctionComponent } from 'preact';\nimport { Text } from '@adobe/elsie/i18n';\n\ntype SignInProps = {\n onSignInClick?: (email: string | null) => void;\n email: string | null;\n};\n\nexport const SignIn: FunctionComponent<SignInProps> = ({\n onSignInClick,\n email,\n}) => {\n return (\n <div className=\"checkout-login-form__sign-in\">\n <Text id=\"Checkout.LoginForm.account\" />\n\n <a\n data-testid=\"sign-in-link\"\n className=\"checkout-login-form__link\"\n href=\"#\"\n target=\"_blank\"\n rel=\"noreferrer\"\n onClick={(e) => {\n e.preventDefault();\n onSignInClick?.(email);\n }}\n >\n <Text id=\"Checkout.LoginForm.signIn\" />\n </a>\n </div>\n );\n};\n","import { Email, Heading } from '@/checkout/components';\nimport { SignOut, SignIn } from '@/checkout/components/LoginForm';\nimport '@/checkout/components/LoginForm/LoginForm.css';\nimport { Customer } from '@/checkout/data/models';\nimport { useText } from '@adobe/elsie/i18n';\nimport { classes } from '@adobe/elsie/lib';\nimport { FunctionComponent, HTMLAttributes } from 'preact/compat';\n\nexport interface LoginFormProps extends HTMLAttributes<HTMLDivElement> {\n currentEmail: string | null;\n hint?: string;\n error?: string | null;\n onEmailChange: (e: any) => void;\n onEmailBlur: (e: any) => void;\n onEmailInvalid: (e: any) => void;\n onSignInClick?: (email: string | null) => void;\n onSignOutClick?: () => void;\n isAuthenticated: boolean;\n customer?: Customer | null;\n}\n\nexport const LoginForm: FunctionComponent<LoginFormProps> = ({\n name,\n className,\n currentEmail,\n hint,\n error = null,\n onEmailChange,\n onEmailBlur,\n onEmailInvalid,\n onSignInClick,\n onSignOutClick,\n isAuthenticated,\n customer,\n ...props\n}) => {\n const translations = useText({\n Title: 'Checkout.LoginForm.title',\n });\n\n return (\n <div\n {...props}\n className={classes(['checkout-login-form', className])}\n data-testid=\"checkout-login-form\"\n >\n <div className=\"checkout-login-form__heading\">\n <Heading level={2} className=\"checkout-login-form__title\">\n {translations.Title}\n </Heading>\n {isAuthenticated ? (\n <SignOut onSignOutClick={onSignOutClick} />\n ) : (\n <SignIn onSignInClick={onSignInClick} email={currentEmail} />\n )}\n </div>\n {customer ? (\n <div className=\"checkout-login-form__customer-details\">\n <div className=\"checkout-login-form__customer-name\">{`${customer?.firstName} ${customer?.lastName}`}</div>\n <div className=\"checkout-login-form__customer-email\">\n {customer?.email}\n </div>\n </div>\n ) : (\n <div className=\"checkout-login-form__content\">\n <form\n className={classes(['dropin-login-form__form', className])}\n name={name}\n noValidate\n >\n {/* Prevent 'Enter' key press from submitting this form. */}\n <button\n type=\"submit\"\n disabled\n style=\"display: none\"\n aria-hidden=\"true\"\n />\n <Email\n value={currentEmail || undefined}\n error={error || ''}\n hint={hint}\n onChange={onEmailChange}\n onBlur={onEmailBlur}\n onInvalid={onEmailInvalid}\n />\n </form>\n </div>\n )}\n </div>\n );\n};\n","import { FunctionComponent } from 'preact';\nimport { Text } from '@adobe/elsie/i18n';\n\ntype SignOutProps = {\n onSignOutClick?: () => void;\n};\n\nexport const SignOut: FunctionComponent<SignOutProps> = ({\n onSignOutClick,\n}) => {\n return (\n <p className=\"checkout-login-form__sign-out\">\n <Text id=\"Checkout.LoginForm.switch\" />\n\n <a\n className=\"checkout-login-form__link\"\n href=\"#\"\n target=\"_blank\"\n rel=\"noreferrer\"\n onClick={(e) => {\n e.preventDefault();\n onSignOutClick?.();\n }}\n >\n <Text id=\"Checkout.LoginForm.signOut\" />\n </a>\n </p>\n );\n};\n","import { isEmailAvailable, setGuestEmailOnCart } from '@/checkout/api';\nimport { LoginForm as LoginFormComponent } from '@/checkout/components/LoginForm';\nimport { useText } from '@adobe/elsie/i18n';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useEffect, useState } from 'preact/hooks';\nimport { LOGIN_FORM_NAME } from './constants';\nimport {\n cartSignal,\n customerSignal,\n isAuthenticatedSignal,\n} from '@/checkout/signals';\nimport { FunctionComponent } from 'preact';\nimport { patterns } from '@/checkout/components';\n\nconst isValidEmail = (email: string) => patterns.email.test(email);\n\nexport interface LoginFormProps extends HTMLAttributes<HTMLDivElement> {\n email?: string;\n onSignInClick?: (email: string | null) => void;\n onSignOutClick?: () => void;\n}\n\nconst DEBOUNCE_TIME = 1000;\n\nexport const LoginForm: FunctionComponent<LoginFormProps> = ({\n className,\n email = null,\n onSignInClick,\n onSignOutClick,\n ...props\n}) => {\n const translations = useText({\n LoginFormInvalidEmailError: 'Checkout.LoginForm.invalidEmailError',\n LoginFormMissingEmailError: 'Checkout.LoginForm.missingEmailError',\n LoginFormEmailExistsAlreadyHaveAccount:\n 'Checkout.LoginForm.emailExists.alreadyHaveAccount',\n LoginFormEmailExistsSignInButton:\n 'Checkout.LoginForm.emailExists.signInButton',\n LoginFormEmailExistsForFasterCheckout:\n 'Checkout.LoginForm.emailExists.forFasterCheckout',\n });\n\n const { data: cartData } = cartSignal.value;\n const cartId = cartData?.id || '';\n const hasCartData = !!cartData;\n\n const [isInitialized, setIsInitialized] = useState(false);\n const [currentEmail, setCurrentEmail] = useState<string | null>(email);\n const [error, setError] = useState<string | null>();\n const [emailAvailability, setEmailAvailability] = useState<boolean>(true);\n\n const errorMessage = (validity: ValidityState): string | null => {\n if (validity.valid) return null;\n if (validity.valueMissing) return translations.LoginFormMissingEmailError;\n return translations.LoginFormInvalidEmailError;\n };\n\n const customer = customerSignal.value.data;\n\n const onEmailChange = (e: any) => {\n const { value } = e.target as HTMLInputElement;\n setCurrentEmail(value);\n setError(null);\n setEmailAvailability(true);\n };\n\n const onEmailBlur = (e: any) => {\n const { validity } = e.target as HTMLInputElement;\n setError(errorMessage(validity));\n };\n\n const onEmailInvalid = (e: any) => {\n const { validity } = e.target as HTMLInputElement;\n setError(errorMessage(validity));\n };\n\n if (!isInitialized && hasCartData) {\n setIsInitialized(true);\n setCurrentEmail(cartData?.email || email);\n }\n\n useEffect(() => {\n if (!currentEmail || error) return;\n\n const timer = setTimeout(() => {\n isEmailAvailable(currentEmail)\n .then((result) => {\n setEmailAvailability(result);\n\n if (cartData?.email === currentEmail) return;\n\n setGuestEmailOnCart({\n cartId,\n email: currentEmail,\n }).catch((e: any) => {\n console.log('set email failed', e);\n });\n })\n .catch((e: any) => {\n // TODO: handle error state\n console.log(e);\n setError(translations.LoginFormInvalidEmailError);\n setEmailAvailability(true);\n });\n }, DEBOUNCE_TIME);\n\n return () => {\n timer && clearTimeout(timer);\n };\n }, [\n currentEmail,\n error,\n translations.LoginFormInvalidEmailError,\n cartData?.email,\n cartId,\n ]);\n\n const hint = emailAvailability ? (\n ''\n ) : (\n <>\n {translations.LoginFormEmailExistsAlreadyHaveAccount}{' '}\n <a\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n onSignInClick?.(currentEmail);\n }}\n >\n {translations.LoginFormEmailExistsSignInButton}\n </a>{' '}\n {translations.LoginFormEmailExistsForFasterCheckout}\n </>\n );\n\n const onSignInClickHandler = (email: string | null) => {\n const isCurrentEmailValid = currentEmail\n ? isValidEmail(currentEmail)\n : false;\n onSignInClick?.(isCurrentEmailValid ? email : null);\n };\n\n return (\n <LoginFormComponent\n className={className}\n currentEmail={currentEmail}\n error={error}\n hint={hint as any}\n name={LOGIN_FORM_NAME}\n onEmailBlur={onEmailBlur}\n onEmailChange={onEmailChange}\n onEmailInvalid={onEmailInvalid}\n onSignInClick={onSignInClickHandler}\n onSignOutClick={onSignOutClick}\n isAuthenticated={Boolean(isAuthenticatedSignal.value)}\n customer={customer}\n {...props}\n />\n );\n};\n"],"names":["Email","value","error","hint","onChange","onBlur","onInvalid","translations","useText","LoginFormLabel","LoginFormFloatingLabel","LoginFormPlaceholder","_jsx","Field","size","children","Input","id","name","type","autocomplete","placeholder","floatingLabel","required","SignIn","onSignInClick","email","_jsxs","className","Text","href","target","rel","onClick","e","preventDefault","LoginForm","currentEmail","onEmailChange","onEmailBlur","onEmailInvalid","onSignOutClick","isAuthenticated","customer","props","Title","classes","Heading","level","SignOut","firstName","lastName","noValidate","disabled","style","undefined","isValidEmail","patterns","test","DEBOUNCE_TIME","LoginFormInvalidEmailError","LoginFormMissingEmailError","LoginFormEmailExistsAlreadyHaveAccount","LoginFormEmailExistsSignInButton","LoginFormEmailExistsForFasterCheckout","data","cartData","cartSignal","cartId","hasCartData","isInitialized","setIsInitialized","useState","setCurrentEmail","setError","emailAvailability","setEmailAvailability","errorMessage","validity","valid","valueMissing","customerSignal","useEffect","timer","setTimeout","then","result","setGuestEmailOnCart","catch","log","console","clearTimeout","_Fragment","LoginFormComponent","LOGIN_FORM_NAME","isCurrentEmailValid","Boolean","isAuthenticatedSignal"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{H as N}from"./ToggleButton.js";import"@dropins/tools/preact-hooks.js";import{m as L,i as D}from"./getStoreConfig.js";import"@dropins/tools/event-bus.js";import{s as k}from"./SelectedShippingMethodSignal.js";import{classes as d}from"@dropins/tools/lib.js";import{Card as E,Divider as g,ProgressSpinner as z,Price as y,Skeleton as A,SkeletonRow as v}from"@dropins/tools/components.js";/* empty css */import{jsxs as u,jsx as r,Fragment as I}from"@dropins/tools/preact-jsx-runtime.js";import{Text as n}from"@dropins/tools/i18n.js";const j=({className:o,summary:p,isLoading:t=!1,...T})=>{const{total:m,subtotal:h,shipping:i,tax:c}=p;return u(E,{...T,className:d(["checkout-order-summary",["checkout-order-summary--loading",t],o]),children:[r(N,{level:2,className:"checkout-order-summary__title",children:r(n,{id:"Checkout.OrderSummary.title"})}),r(g,{variant:"primary"}),t&&r(z,{className:"checkout-order-summary__spinner"}),u("div",{"data-testid":"order-summary-subtotal",className:"checkout-order-summary__row",children:[r("p",{children:r(n,{id:"Checkout.OrderSummary.subtotal"})}),r(y,{amount:h.amount,currency:h.currency,className:d(["checkout-order-summary__price",o])})]}),h.isTaxIncl&&r("div",{"data-testid":"order-summary-subtotal-incl-tax",className:"checkout-order-summary__row checkout-order-summary__row--muted",children:r("p",{children:r(n,{id:"Checkout.OrderSummary.includingTaxes"})})}),i!=null&&u("div",{"data-testid":"order-summary-shipping",className:"checkout-order-summary__row",children:[r("p",{"data-testid":"order-summary-shipping-label",children:i.isEstimated?r(n,{id:"Checkout.OrderSummary.estimatedShipping"}):r(n,{id:"Checkout.OrderSummary.shipping"})}),i.amount===0?r("p",{"data-testid":"estimated-shipping",className:"checkout-order-summary__price",children:r(n,{id:"Checkout.OrderSummary.freeShipping"})}):r(y,{"data-testid":"estimated-shipping",amount:i.amount,currency:i.currency,className:d(["checkout-order-summary__price",o])})]}),c!=null&&!c.breakdown&&u("div",{"data-testid":"order-summary-tax",className:"checkout-order-summary__row",children:[r("p",{children:r(n,{id:"Checkout.OrderSummary.tax"})}),r(y,{amount:c.amount,currency:c.currency,className:d(["checkout-order-summary__price",o])})]}),c!=null&&c.breakdown&&u(I,{children:[r(g,{variant:"secondary"}),r("div",{className:"checkout-order-summary__row checkout-order-summary__row--margin-bottom",children:r("p",{children:r(n,{id:"Checkout.OrderSummary.taxBreakdown"})})}),c.breakdown.map(e=>u("div",{"data-testid":"order-summary-tax-breakdown",className:"checkout-order-summary__row checkout-order-summary__row--muted",children:[r("p",{children:e.label}),r(y,{amount:e.amount.value,currency:e.amount.currency,className:d(["checkout-order-summary__price",o])})]},e.label)),u("div",{"data-testid":"order-summary-tax-breakdown-total",className:"checkout-order-summary__row checkout-order-summary__row--strong checkout-order-summary__row--margin-top",children:[r("p",{children:r(n,{id:"Checkout.OrderSummary.taxTotal"})}),r(y,{amount:c.amount,currency:c.currency,className:d(["checkout-order-summary__price",o])})]}),r(g,{variant:"secondary"})]}),u("div",{"data-testid":"order-summary-total-incl-tax",className:"checkout-order-summary__row checkout-order-summary__row--emphasized",children:[r("p",{children:r(n,{id:"Checkout.OrderSummary.total"})}),r(y,{amount:m.inclTax.amount,currency:m.inclTax.currency,className:d(["checkout-order-summary__price",o])})]}),m.exclTax!=null&&u("div",{"data-testid":"order-summary-total-excl-tax",className:"checkout-order-summary__row checkout-order-summary__row--muted",children:[r("p",{children:r(n,{id:"Checkout.OrderSummary.totalExclTax"})}),r(y,{amount:m.exclTax.amount,currency:m.exclTax.currency,className:d(["checkout-order-summary__price",o])})]})]})},F=()=>u(A,{"data-testid":"order-summary-skeleton",className:"order-summary__skeleton",children:[r(v,{variant:"heading",size:"medium"}),r(v,{variant:"empty",size:"medium"}),r(v,{size:"large",fullWidth:!0,lines:3})]}),w=0,G=2,H={isLoading:!0};function P(){const{config:o}=L(),p=o===void 0,t=D.value.data;if(p||t===void 0)return H;const m=o.taxCartDisplay,h=m.shoppingCartDisplaySubtotal===G,i=t==null?void 0:t.shippingAddresses,c=!!(i!=null&&i.length),e=t==null?void 0:t.prices,x=e==null?void 0:e.grand_total,C=!!x,S=h?e==null?void 0:e.subtotal_including_tax:e==null?void 0:e.subtotal_excluding_tax,_=(e==null?void 0:e.applied_taxes)||[],f=!!_.length;if(!C)return{isLoading:!1};const a={total:{inclTax:{amount:x.value,currency:x.currency}},subtotal:{amount:S.value,currency:S.currency,isTaxIncl:h}};if(f){const l=_.reduce((b,O)=>b+O.amount.value,w),s=_[0];a.tax={amount:l,currency:s.amount.currency},m.shoppingCartDisplayFullSummary&&(a.tax.breakdown=_)}if(!f&&m.shoppingCartDisplayZeroTax&&(a.tax={amount:w,currency:a.total.inclTax.currency}),m.shoppingCartDisplayGrandTotal){const l=a.tax?a.total.inclTax.amount-a.tax.amount:a.total.inclTax.amount;a.total.exclTax={amount:l,currency:a.total.inclTax.currency}}if(c){const l=i[0],s=l==null?void 0:l.selectedShippingMethod;return s?(a.shipping={amount:s==null?void 0:s.amount.value,currency:s==null?void 0:s.amount.currency,isEstimated:!1},{isLoading:!1,summary:a}):{isLoading:!1,summary:a}}return k.value?(a.shipping={amount:k.value.amount.value,currency:k.value.amount.currency,isEstimated:!0},a.total.inclTax.amount+=a.shipping.amount,a.total.exclTax&&(a.total.exclTax.amount+=a.shipping.amount),{isLoading:!1,summary:a}):{isLoading:!1,summary:a}}const M=({...o})=>{const{isLoading:p,summary:t}=P();return u("div",{...o,children:[!t&&r(F,{}),t&&r(j,{isLoading:p,summary:t})]})};export{M as O,P as u};
2
+ //# sourceMappingURL=OrderSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderSummary.js","sources":["../../src/components/OrderSummary/OrderSummary.tsx","../../src/components/OrderSummary/OrderSummarySkeleton.tsx","../../src/containers/OrderSummary/constants.ts","../../src/containers/OrderSummary/OrderSummary.tsx"],"sourcesContent":["import { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe/elsie/lib';\nimport '@/checkout/components/OrderSummary/OrderSummary.css';\nimport { Heading } from '@/checkout/components';\nimport { Text } from '@adobe/elsie/i18n';\nimport { Card, Divider, Price, ProgressSpinner } from '@adobe/elsie/components';\nimport { CartTaxItem } from '@/checkout/__generated__/types';\n\nexport type Summary = {\n total: {\n inclTax: {\n amount: number;\n currency: string;\n };\n exclTax?: {\n amount: number;\n currency: string;\n };\n };\n subtotal: {\n amount: number;\n currency: string;\n isTaxIncl: boolean;\n };\n shipping?: {\n amount: number;\n currency: string;\n isEstimated: boolean;\n };\n tax?: {\n amount: number;\n currency: string;\n breakdown?: CartTaxItem[];\n };\n};\n\nexport interface OrderSummaryProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'summary'> {\n isLoading?: boolean;\n summary: Summary;\n}\n\nexport const OrderSummary: FunctionComponent<OrderSummaryProps> = ({\n className,\n summary,\n isLoading = false,\n ...props\n}) => {\n const { total, subtotal, shipping, tax } = summary;\n\n return (\n <Card\n {...props}\n className={classes([\n 'checkout-order-summary',\n ['checkout-order-summary--loading', isLoading],\n className,\n ])}\n >\n <Heading\n level={2}\n className=\"checkout-order-summary__title\"\n children={<Text id=\"Checkout.OrderSummary.title\" />}\n />\n\n <Divider variant=\"primary\" />\n\n {isLoading && (\n <ProgressSpinner className=\"checkout-order-summary__spinner\" />\n )}\n\n <div\n data-testid=\"order-summary-subtotal\"\n className=\"checkout-order-summary__row\"\n >\n <p>\n <Text id=\"Checkout.OrderSummary.subtotal\" />\n </p>\n <Price\n amount={subtotal.amount}\n currency={subtotal.currency}\n className={classes(['checkout-order-summary__price', className])}\n />\n </div>\n\n {subtotal.isTaxIncl && (\n <div\n data-testid=\"order-summary-subtotal-incl-tax\"\n className=\"checkout-order-summary__row checkout-order-summary__row--muted\"\n >\n <p>\n <Text id=\"Checkout.OrderSummary.includingTaxes\" />\n </p>\n </div>\n )}\n\n {shipping != undefined && (\n <div\n data-testid=\"order-summary-shipping\"\n className=\"checkout-order-summary__row\"\n >\n <p data-testid=\"order-summary-shipping-label\">\n {shipping.isEstimated ? (\n <Text id=\"Checkout.OrderSummary.estimatedShipping\" />\n ) : (\n <Text id=\"Checkout.OrderSummary.shipping\" />\n )}\n </p>\n\n {shipping.amount === 0 ? (\n <p\n data-testid=\"estimated-shipping\"\n className=\"checkout-order-summary__price\"\n >\n <Text id=\"Checkout.OrderSummary.freeShipping\" />\n </p>\n ) : (\n <Price\n data-testid=\"estimated-shipping\"\n amount={shipping.amount}\n currency={shipping.currency}\n className={classes(['checkout-order-summary__price', className])}\n />\n )}\n </div>\n )}\n\n {tax != undefined && !tax.breakdown && (\n <div\n data-testid=\"order-summary-tax\"\n className=\"checkout-order-summary__row\"\n >\n <p>\n <Text id=\"Checkout.OrderSummary.tax\" />\n </p>\n <Price\n amount={tax.amount}\n currency={tax.currency}\n className={classes(['checkout-order-summary__price', className])}\n />\n </div>\n )}\n\n {tax != undefined && tax.breakdown && (\n <>\n <Divider variant=\"secondary\" />\n\n <div className=\"checkout-order-summary__row checkout-order-summary__row--margin-bottom\">\n <p>\n <Text id=\"Checkout.OrderSummary.taxBreakdown\" />\n </p>\n </div>\n\n {tax.breakdown.map((tax) => (\n <div\n data-testid=\"order-summary-tax-breakdown\"\n key={tax.label}\n className=\"checkout-order-summary__row checkout-order-summary__row--muted\"\n >\n <p>{tax.label}</p>\n\n <Price\n amount={tax.amount.value!}\n currency={tax.amount.currency!}\n className={classes([\n 'checkout-order-summary__price',\n className,\n ])}\n />\n </div>\n ))}\n\n <div\n data-testid=\"order-summary-tax-breakdown-total\"\n className=\"checkout-order-summary__row checkout-order-summary__row--strong checkout-order-summary__row--margin-top\"\n >\n <p>\n <Text id=\"Checkout.OrderSummary.taxTotal\" />\n </p>\n\n <Price\n amount={tax.amount}\n currency={tax.currency}\n className={classes(['checkout-order-summary__price', className])}\n />\n </div>\n\n <Divider variant=\"secondary\" />\n </>\n )}\n\n <div\n data-testid=\"order-summary-total-incl-tax\"\n className=\"checkout-order-summary__row checkout-order-summary__row--emphasized\"\n >\n <p>\n <Text id=\"Checkout.OrderSummary.total\" />\n </p>\n\n <Price\n amount={total.inclTax.amount}\n currency={total.inclTax.currency}\n className={classes(['checkout-order-summary__price', className])}\n />\n </div>\n\n {total.exclTax != undefined && (\n <div\n data-testid=\"order-summary-total-excl-tax\"\n className=\"checkout-order-summary__row checkout-order-summary__row--muted\"\n >\n <p>\n <Text id=\"Checkout.OrderSummary.totalExclTax\" />\n </p>\n\n <Price\n amount={total.exclTax.amount}\n currency={total.exclTax.currency}\n className={classes(['checkout-order-summary__price', className])}\n />\n </div>\n )}\n </Card>\n );\n};\n","import { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe/elsie/components';\n\nexport const OrderSummarySkeleton: FunctionComponent = () => {\n return (\n <Skeleton\n data-testid=\"order-summary-skeleton\"\n className=\"order-summary__skeleton\"\n >\n <SkeletonRow variant=\"heading\" size=\"medium\" />\n <SkeletonRow variant=\"empty\" size=\"medium\" />\n <SkeletonRow size=\"large\" fullWidth={true} lines={3} />\n </Skeleton>\n );\n};\n","export const ZERO_AMOUNT = 0;\n","import { CartTaxItem } from '@/checkout/__generated__/types';\nimport { OrderSummarySkeleton } from '@/checkout/components';\nimport {\n OrderSummary as OrderSummaryComponent,\n Summary,\n} from '@/checkout/components/OrderSummary/OrderSummary';\nimport { useStore } from '@/checkout/context/store';\nimport { cartSignal, selectedShippingMethodSignal } from '@/checkout/signals';\nimport { Container } from '@adobe/elsie/lib';\nimport { HTMLAttributes } from 'preact/compat';\nimport { ZERO_AMOUNT } from './constants';\n\nexport interface OrderSummaryProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport type OrderSummaryState = {\n isLoading: boolean;\n summary?: Summary;\n};\n\nconst INCLUDE_TAX = 2;\n\nconst loadingState: OrderSummaryState = {\n isLoading: true,\n};\n\nexport function useOrderSummary(): OrderSummaryState {\n const { config } = useStore();\n const isLoadingStoreConfig = config === undefined;\n\n const cartData = cartSignal.value.data;\n const isLoadingCartData = cartData === undefined;\n\n if (isLoadingStoreConfig || isLoadingCartData) return loadingState;\n\n const taxCartDisplay = config.taxCartDisplay;\n const inclTaxInSubtotal =\n taxCartDisplay.shoppingCartDisplaySubtotal === INCLUDE_TAX;\n\n const shippingAddresses = cartData?.shippingAddresses;\n const hasAddresses = !!shippingAddresses?.length;\n\n const prices = cartData?.prices;\n\n const grandTotal = prices?.grand_total;\n const hasGrandTotal = !!grandTotal;\n\n const subtotal = inclTaxInSubtotal\n ? prices?.subtotal_including_tax\n : prices?.subtotal_excluding_tax;\n\n const appliedTaxes = prices?.applied_taxes || [];\n const hasTaxesApplied = !!appliedTaxes.length;\n\n if (!hasGrandTotal) return { isLoading: false };\n\n const summary: Summary = {\n total: {\n inclTax: {\n amount: grandTotal.value!,\n currency: grandTotal.currency!,\n },\n },\n subtotal: {\n amount: subtotal!.value!,\n currency: subtotal!.currency!,\n isTaxIncl: inclTaxInSubtotal,\n },\n };\n\n if (hasTaxesApplied) {\n const totalTaxAmount = appliedTaxes.reduce(\n (total, tax) => total + tax!.amount.value!,\n ZERO_AMOUNT\n );\n\n const firstTax = appliedTaxes[0];\n\n summary.tax = {\n amount: totalTaxAmount,\n currency: firstTax!.amount.currency!,\n };\n\n if (taxCartDisplay.shoppingCartDisplayFullSummary) {\n summary.tax.breakdown = appliedTaxes as CartTaxItem[];\n }\n }\n\n if (!hasTaxesApplied && taxCartDisplay.shoppingCartDisplayZeroTax) {\n summary.tax = {\n amount: ZERO_AMOUNT,\n currency: summary.total.inclTax.currency,\n };\n }\n\n if (taxCartDisplay.shoppingCartDisplayGrandTotal) {\n const totalExclTax = summary.tax\n ? summary.total.inclTax.amount - summary.tax.amount\n : summary.total.inclTax.amount;\n\n summary.total.exclTax = {\n amount: totalExclTax,\n currency: summary.total.inclTax.currency,\n };\n }\n\n if (hasAddresses) {\n const firstAddress = shippingAddresses[0];\n const shippingMethod = firstAddress?.selectedShippingMethod;\n\n if (!shippingMethod) return { isLoading: false, summary };\n\n summary.shipping = {\n amount: shippingMethod?.amount.value!,\n currency: shippingMethod?.amount.currency!,\n isEstimated: false,\n };\n\n return { isLoading: false, summary };\n }\n\n if (!selectedShippingMethodSignal.value) return { isLoading: false, summary };\n\n summary.shipping = {\n amount: selectedShippingMethodSignal.value.amount.value,\n currency: selectedShippingMethodSignal.value.amount.currency,\n isEstimated: true,\n };\n\n summary.total.inclTax.amount += summary.shipping.amount;\n if (summary.total.exclTax) {\n summary.total.exclTax.amount += summary.shipping.amount;\n }\n\n return { isLoading: false, summary };\n}\n\nexport const OrderSummary: Container<OrderSummaryProps> = ({ ...props }) => {\n const { isLoading, summary } = useOrderSummary();\n\n return (\n <div {...props}>\n {!summary && <OrderSummarySkeleton />}\n\n {summary && (\n <OrderSummaryComponent isLoading={isLoading} summary={summary} />\n )}\n </div>\n );\n};\n"],"names":["OrderSummary","className","summary","isLoading","props","total","subtotal","shipping","tax","_jsxs","Card","classes","children","_jsx","Heading","level","Text","id","Divider","variant","ProgressSpinner","Price","amount","currency","isTaxIncl","undefined","isEstimated","breakdown","_Fragment","map","label","value","inclTax","exclTax","OrderSummarySkeleton","Skeleton","SkeletonRow","size","fullWidth","lines","ZERO_AMOUNT","INCLUDE_TAX","loadingState","useOrderSummary","config","useStore","isLoadingStoreConfig","cartData","cartSignal","data","taxCartDisplay","inclTaxInSubtotal","shoppingCartDisplaySubtotal","shippingAddresses","hasAddresses","length","prices","grandTotal","grand_total","hasGrandTotal","subtotal_including_tax","subtotal_excluding_tax","appliedTaxes","applied_taxes","hasTaxesApplied","totalTaxAmount","reduce","firstTax","shoppingCartDisplayFullSummary","shoppingCartDisplayZeroTax","shoppingCartDisplayGrandTotal","totalExclTax","firstAddress","shippingMethod","selectedShippingMethod","selectedShippingMethodSignal","OrderSummaryComponent"],"mappings":"0iBA2CO,MAAMA,EAAqDA,CAAC,CACjEC,UAAAA,EACAC,QAAAA,EACAC,UAAAA,EAAY,GACZ,GAAGC,CACL,IAAM,CACE,KAAA,CAAEC,MAAAA,EAAOC,SAAAA,EAAUC,SAAAA,EAAUC,IAAAA,CAAQN,EAAAA,EAE3C,OACEO,EAACC,EAAI,CAAA,GACCN,EACJH,UAAWU,EAAQ,CACjB,yBACA,CAAC,kCAAmCR,CAAS,EAC7CF,CAAS,CACV,EAAEW,SAAA,CAEHC,EAACC,EAAO,CACNC,MAAO,EACPd,UAAU,gCACVW,SAAUC,EAACG,EAAI,CAACC,GAAG,6BAAA,CAA+B,CAAA,CACnD,EAEDJ,EAACK,EAAO,CAACC,QAAQ,SAAA,CAAW,EAE3BhB,GACCU,EAACO,EAAe,CAACnB,UAAU,iCAAA,CAAmC,EAGhEQ,EAAA,MAAA,CACE,cAAY,yBACZR,UAAU,8BAA6BW,UAEvCC,EAAA,IAAA,CAAAD,SACEC,EAACG,EAAI,CAACC,GAAG,gCAAA,CAAkC,CAAA,CAC1C,EACHJ,EAACQ,EAAK,CACJC,OAAQhB,EAASgB,OACjBC,SAAUjB,EAASiB,SACnBtB,UAAWU,EAAQ,CAAC,gCAAiCV,CAAS,CAAC,CAAA,CAChE,CAAC,CACC,CAAA,EAEJK,EAASkB,WACRX,EAAA,MAAA,CACE,cAAY,kCACZZ,UAAU,iEAAgEW,SAE1EC,EAAA,IAAA,CAAAD,SACEC,EAACG,EAAI,CAACC,GAAG,sCAAA,CAAwC,CAAA,CAChD,CACA,CAAA,EAGNV,GAAYkB,MACXhB,EAAA,MAAA,CACE,cAAY,yBACZR,UAAU,8BAA6BW,UAEvCC,EAAA,IAAA,CAAG,cAAY,+BAA8BD,SAC1CL,EAASmB,YACRb,EAACG,EAAI,CAACC,GAAG,yCAAA,CAA2C,EAEpDJ,EAACG,EAAI,CAACC,GAAG,gCAAA,CAAkC,CAE5C,CAAA,EAEFV,EAASe,SAAW,EACnBT,EAAA,IAAA,CACE,cAAY,qBACZZ,UAAU,gCAA+BW,SAEzCC,EAACG,EAAI,CAACC,GAAG,oCAAA,CAAsC,CAAA,CAC9C,EAEHJ,EAACQ,EAAK,CACJ,cAAY,qBACZC,OAAQf,EAASe,OACjBC,SAAUhB,EAASgB,SACnBtB,UAAWU,EAAQ,CAAC,gCAAiCV,CAAS,CAAC,CAAA,CAChE,CACF,CAAA,CACE,EAGNO,GAAOiB,MAAa,CAACjB,EAAImB,WACxBlB,EAAA,MAAA,CACE,cAAY,oBACZR,UAAU,8BAA6BW,UAEvCC,EAAA,IAAA,CAAAD,SACEC,EAACG,EAAI,CAACC,GAAG,2BAAA,CAA6B,CAAA,CACrC,EACHJ,EAACQ,EAAK,CACJC,OAAQd,EAAIc,OACZC,SAAUf,EAAIe,SACdtB,UAAWU,EAAQ,CAAC,gCAAiCV,CAAS,CAAC,CAAA,CAChE,CAAC,CAAA,CACC,EAGNO,GAAOiB,MAAajB,EAAImB,WACvBlB,EAAAmB,EAAA,CAAAhB,SAAA,CACEC,EAACK,EAAO,CAACC,QAAQ,WAAA,CAAa,EAE9BN,EAAA,MAAA,CAAKZ,UAAU,yEAAwEW,SACrFC,EAAA,IAAA,CAAAD,SACEC,EAACG,EAAI,CAACC,GAAG,oCAAA,CAAsC,CAAA,CAC9C,CAAA,CACA,EAEJT,EAAImB,UAAUE,IAAKrB,GAClBC,EAAA,MAAA,CACE,cAAY,8BAEZR,UAAU,iEAAgEW,UAE1EC,EAAA,IAAA,CAAAD,SAAIJ,EAAIsB,KAAAA,CAAS,EAEjBjB,EAACQ,EAAK,CACJC,OAAQd,EAAIc,OAAOS,MACnBR,SAAUf,EAAIc,OAAOC,SACrBtB,UAAWU,EAAQ,CACjB,gCACAV,CAAS,CACV,CAAA,CACF,CAAC,GAZGO,EAAIsB,KAaN,CACN,EAEDrB,EAAA,MAAA,CACE,cAAY,oCACZR,UAAU,0GAAyGW,UAEnHC,EAAA,IAAA,CAAAD,SACEC,EAACG,EAAI,CAACC,GAAG,gCAAA,CAAkC,CAAA,CAC1C,EAEHJ,EAACQ,EAAK,CACJC,OAAQd,EAAIc,OACZC,SAAUf,EAAIe,SACdtB,UAAWU,EAAQ,CAAC,gCAAiCV,CAAS,CAAC,CAAA,CAChE,CAAC,CAAA,CACC,EAELY,EAACK,EAAO,CAACC,QAAQ,WAAA,CAAa,CAAC,CAAA,CAC/B,EAGJV,EAAA,MAAA,CACE,cAAY,+BACZR,UAAU,sEAAqEW,UAE/EC,EAAA,IAAA,CAAAD,SACEC,EAACG,EAAI,CAACC,GAAG,6BAAA,CAA+B,CAAA,CACvC,EAEHJ,EAACQ,EAAK,CACJC,OAAQjB,EAAM2B,QAAQV,OACtBC,SAAUlB,EAAM2B,QAAQT,SACxBtB,UAAWU,EAAQ,CAAC,gCAAiCV,CAAS,CAAC,CAAA,CAChE,CAAC,CAAA,CACC,EAEJI,EAAM4B,SAAWR,MAChBhB,EAAA,MAAA,CACE,cAAY,+BACZR,UAAU,iEAAgEW,UAE1EC,EAAA,IAAA,CAAAD,SACEC,EAACG,EAAI,CAACC,GAAG,oCAAA,CAAsC,CAAA,CAC9C,EAEHJ,EAACQ,EAAK,CACJC,OAAQjB,EAAM4B,QAAQX,OACtBC,SAAUlB,EAAM4B,QAAQV,SACxBtB,UAAWU,EAAQ,CAAC,gCAAiCV,CAAS,CAAC,CAAA,CAChE,CAAC,CAAA,CACC,CACN,CAAA,CACG,CAEV,EC9NaiC,EAA0CA,IAEnDzB,EAAC0B,EAAQ,CACP,cAAY,yBACZlC,UAAU,0BAAyBW,SAAA,CAEnCC,EAACuB,EAAW,CAACjB,QAAQ,UAAUkB,KAAK,QAAA,CAAU,EAC9CxB,EAACuB,EAAW,CAACjB,QAAQ,QAAQkB,KAAK,QAAA,CAAU,EAC5CxB,EAACuB,EAAW,CAACC,KAAK,QAAQC,UAAW,GAAMC,MAAO,CAAA,CAAI,CAAC,CAAA,CAC/C,ECZDC,EAAc,ECmBrBC,EAAc,EAEdC,EAAkC,CACtCvC,UAAW,EACb,EAEO,SAASwC,GAAqC,CAC7C,KAAA,CAAEC,OAAAA,GAAWC,EAAS,EACtBC,EAAuBF,IAAWnB,OAElCsB,EAAWC,EAAWjB,MAAMkB,KAGlC,GAAIH,GAFsBC,IAAatB,OAEeiB,OAAAA,EAEtD,MAAMQ,EAAiBN,EAAOM,eACxBC,EACJD,EAAeE,8BAAgCX,EAE3CY,EAAoBN,GAAAA,YAAAA,EAAUM,kBAC9BC,EAAe,CAAC,EAACD,GAAAA,MAAAA,EAAmBE,QAEpCC,EAAST,GAAAA,YAAAA,EAAUS,OAEnBC,EAAaD,GAAAA,YAAAA,EAAQE,YACrBC,EAAgB,CAAC,CAACF,EAElBnD,EAAW6C,EACbK,GAAAA,YAAAA,EAAQI,uBACRJ,GAAAA,YAAAA,EAAQK,uBAENC,GAAeN,GAAAA,YAAAA,EAAQO,gBAAiB,GACxCC,EAAkB,CAAC,CAACF,EAAaP,OAEvC,GAAI,CAACI,EAAsB,MAAA,CAAExD,UAAW,EAAA,EAExC,MAAMD,EAAmB,CACvBG,MAAO,CACL2B,QAAS,CACPV,OAAQmC,EAAW1B,MACnBR,SAAUkC,EAAWlC,QACvB,CACF,EACAjB,SAAU,CACRgB,OAAQhB,EAAUyB,MAClBR,SAAUjB,EAAUiB,SACpBC,UAAW2B,CACb,CAAA,EAGF,GAAIa,EAAiB,CACbC,MAAAA,EAAiBH,EAAaI,OAClC,CAAC7D,EAAOG,IAAQH,EAAQG,EAAKc,OAAOS,MACpCS,CACF,EAEM2B,EAAWL,EAAa,CAAC,EAE/B5D,EAAQM,IAAM,CACZc,OAAQ2C,EACR1C,SAAU4C,EAAU7C,OAAOC,QAAAA,EAGzB2B,EAAekB,iCACjBlE,EAAQM,IAAImB,UAAYmC,EAE5B,CASA,GAPI,CAACE,GAAmBd,EAAemB,6BACrCnE,EAAQM,IAAM,CACZc,OAAQkB,EACRjB,SAAUrB,EAAQG,MAAM2B,QAAQT,QAAAA,GAIhC2B,EAAeoB,8BAA+B,CAChD,MAAMC,EAAerE,EAAQM,IACzBN,EAAQG,MAAM2B,QAAQV,OAASpB,EAAQM,IAAIc,OAC3CpB,EAAQG,MAAM2B,QAAQV,OAE1BpB,EAAQG,MAAM4B,QAAU,CACtBX,OAAQiD,EACRhD,SAAUrB,EAAQG,MAAM2B,QAAQT,QAAAA,CAEpC,CAEA,GAAI+B,EAAc,CACVkB,MAAAA,EAAenB,EAAkB,CAAC,EAClCoB,EAAiBD,GAAAA,YAAAA,EAAcE,uBAErC,OAAKD,GAELvE,EAAQK,SAAW,CACjBe,OAAQmD,GAAAA,YAAAA,EAAgBnD,OAAOS,MAC/BR,SAAUkD,GAAAA,YAAAA,EAAgBnD,OAAOC,SACjCG,YAAa,EAAA,EAGR,CAAEvB,UAAW,GAAOD,QAAAA,CAAAA,GARC,CAAEC,UAAW,GAAOD,QAAAA,CAAAA,CASlD,CAEA,OAAKyE,EAA6B5C,OAElC7B,EAAQK,SAAW,CACjBe,OAAQqD,EAA6B5C,MAAMT,OAAOS,MAClDR,SAAUoD,EAA6B5C,MAAMT,OAAOC,SACpDG,YAAa,EAAA,EAGfxB,EAAQG,MAAM2B,QAAQV,QAAUpB,EAAQK,SAASe,OAC7CpB,EAAQG,MAAM4B,UAChB/B,EAAQG,MAAM4B,QAAQX,QAAUpB,EAAQK,SAASe,QAG5C,CAAEnB,UAAW,GAAOD,QAAAA,CAAAA,GAbqB,CAAEC,UAAW,GAAOD,QAAAA,CAAAA,CActE,CAEO,MAAMF,EAA6CA,CAAC,CAAE,GAAGI,CAAM,IAAM,CACpE,KAAA,CAAED,UAAAA,EAAWD,QAAAA,GAAYyC,EAAgB,EAE/C,OACElC,EAAA,MAAA,CAAA,GAASL,EAAKQ,SACX,CAAA,CAACV,GAAWW,EAACqB,EAAsB,CAAA,CAAA,EAEnChC,GACCW,EAAC+D,EAAqB,CAACzE,UAAAA,EAAsBD,QAAAA,CAAAA,CAAmB,CACjE,CAAA,CACE,CAET"}
@@ -0,0 +1,2 @@
1
+ import"@dropins/tools/event-bus.js";import{i as I}from"./getStoreConfig.js";import{s as O}from"./setPaymentMethod.js";import{H as U}from"./ToggleButton.js";import"@dropins/tools/preact-hooks.js";import{classes as k,Slot as x}from"@dropins/tools/lib.js";import{IllustratedMessage as $,Icon as q,ProgressSpinner as Z,Skeleton as F,SkeletonRow as P,RadioButton as G}from"@dropins/tools/components.js";/* empty css */import{jsx as e,jsxs as f,Fragment as J}from"@dropins/tools/preact-jsx-runtime.js";import*as v from"@dropins/tools/preact-compat.js";import{useRef as K,useState as S,useCallback as T,useEffect as N}from"@dropins/tools/preact-compat.js";import{useText as Q}from"@dropins/tools/i18n.js";const X=t=>v.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},v.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M17.93 14.8V18.75H5.97C4.75 18.75 3.75 17.97 3.75 17V6.5M3.75 6.5C3.75 5.53 4.74 4.75 5.97 4.75H15.94V8.25H5.97C4.75 8.25 3.75 7.47 3.75 6.5Z",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),v.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M19.35 11.64H14.04V14.81H19.35V11.64Z",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),v.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M17.9304 11.64V8.25H15.1504",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"})),Y=({code:t,isLoading:n,isSelected:c,onChange:s,title:o})=>e(te,{className:"checkout-payment-methods__method",label:o,name:"payment-method",value:t,selected:c,onChange:s,radioButtonProps:{"aria-busy":n}}),D=({className:t,paymentMethodContent:n,isLoading:c,onChange:s=()=>{},options:o,selection:u})=>{const d=Q({Title:"Checkout.PaymentMethods.title",EmptyState:"Checkout.PaymentMethods.emptyState"});return o===void 0?e(ee,{}):f("div",{className:k(["checkout-payment-methods",t]),children:[e(U,{level:2,className:"checkout-payment-methods__title",children:d.Title}),!c&&o.length===0&&e($,{icon:e(q,{source:X}),message:e("p",{children:d.EmptyState})}),f("div",{className:k(["checkout-payment-methods__wrapper"]),children:[c&&e(Z,{className:"checkout-payment-methods__spinner"}),e("div",{className:k(["checkout-payment-methods__methods",["checkout-payment-methods--loading",c],["checkout-payment-methods--full-width",o.length%2!==0]]),children:o==null?void 0:o.map(l=>e(Y,{code:l.code,onChange:s,isSelected:l.code===u,title:l.title},l.code))}),n&&e("div",{className:"checkout-payment-methods__content",children:n})]})]})},ee=()=>f(F,{"data-testid":"payment-methods-skeleton",children:[e(P,{variant:"heading",size:"medium"}),e(P,{variant:"empty",size:"medium"}),e(P,{size:"xlarge",fullWidth:!0}),e(P,{size:"xlarge",fullWidth:!0})]}),te=({label:t,name:n,value:c,icon:s,selected:o,onChange:u,className:d,children:l,radioButtonProps:y,...p})=>e("div",{className:k(["checkout-toggle-button",d,["checkout-toggle-button__selected",o]]),...p,children:f("label",{className:"checkout-toggle-button__actionButton",children:[e(G,{...y,label:"",name:n,value:c,checked:o,onChange:()=>u(c),"aria-label":t,className:k([d,"checkout-toggle-button__radioButton"])}),f("div",{className:"checkout-toggle-button__content",children:[s&&e(s.type,{...s==null?void 0:s.props,className:"checkout-toggle-button__icon"}),t]})]})}),L={free:{render:t=>{const n=document.createElement("div");n.innerText="",t.replaceHTML(n)}},checkmo:{render:t=>{const n=document.createElement("div");n.innerText="",t.replaceHTML(n)}}};function ne(t){var E;const{onPlaceOrder:n,handleServerError:c,paymentMethodsSlot:s,isShippingInfoRequired:o}=t,u=K(),[d,l]=S(),[y,p]=S(),[g,W]=S(L),[_,B]=S(!0),{data:a}=I.value,C=(a==null?void 0:a.id)??"",b=!!a,w=!!((E=a==null?void 0:a.shippingAddresses)!=null&&E[0]),i=a==null?void 0:a.availablePaymentMethods,m=a==null?void 0:a.selectedPaymentMethod,M=T(async r=>{try{if(l(r),!w&&o)return;const h=r;if(h===u.current)return;u.current=h,await O({cartId:C,paymentMethod:r})}catch(h){console.error("setting payment method failed:",h)}},[C,w,o]);N(()=>{b&&(m!=null&&m.code?(i==null?void 0:i.some(h=>h.code===m.code))?l(m.code):i!=null&&i.length?M(i[0].code):l(void 0):i[0]&&M(y||i[0].code))},[i,b,m,M,y]);const R=async r=>{await M(r),m!=null&&m.code||p(r)},V=T((r,h)=>{if(!r){console.warn("Payment method handler is ignored because it has no code");return}if(!h){console.warn("Payment method handler is ignored because it is empty");return}W(z=>({...z,[r]:h}))},[]),j=s?e(x,{name:"PaymentMethods",slot:s,context:{addPaymentMethodHandler:V,replaceHTML(r){this.replaceWith(r),B(!1)}}}):null,H=d?g[d]:null,A=H?e(x,{name:"PaymentMethodContent",slot:H.render,context:{cartId:C,onPlaceOrder:n,handleServerError:c,replaceHTML(r){this.replaceWith(r)}}},H):void 0;return N(()=>{!_&&g!=L&&console.warn("Payment method handlers you have added are ignored because the default content has been replaced")},[_,g]),{availablePaymentMethods:i,selectedPaymentMethod:d,onPaymentMethodChange:R,paymentMethodContent:A,mainSlotContent:j,isDefaultContentUsed:_}}const pe=t=>{const{onPlaceOrder:n,handleServerError:c,paymentMethodsSlot:s,isShippingInfoRequired:o=!0}=t,{availablePaymentMethods:u,selectedPaymentMethod:d,onPaymentMethodChange:l,paymentMethodContent:y,mainSlotContent:p,isDefaultContentUsed:g}=ne({onPlaceOrder:n,handleServerError:c,paymentMethodsSlot:s,isShippingInfoRequired:o});return f(J,{children:[p&&e(p.type,{ref:p.ref,...p.props}),g&&e(D,{options:u,selection:d,onChange:l,paymentMethodContent:y,isLoading:I.value.pending})]})};export{pe as P};
2
+ //# sourceMappingURL=PaymentMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentMethods.js","sources":["../../node_modules/@adobe/elsie/src/icons/Wallet.svg","../../src/components/PaymentMethods/PaymentMethods.tsx","../../src/components/PaymentMethods/PaymentMethodsSkeleton.tsx","../../src/components/ToggleButton/ToggleButton.tsx","../../src/containers/PaymentMethods/defaultHandlers.tsx","../../src/containers/PaymentMethods/PaymentMethods.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgWallet = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M17.93 14.8V18.75H5.97C4.75 18.75 3.75 17.97 3.75 17V6.5M3.75 6.5C3.75 5.53 4.74 4.75 5.97 4.75H15.94V8.25H5.97C4.75 8.25 3.75 7.47 3.75 6.5Z\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M19.35 11.64H14.04V14.81H19.35V11.64Z\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M17.9304 11.64V8.25H15.1504\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgWallet;\n","import { Heading, ToggleButton } from '@/checkout/components';\nimport { PaymentMethodsSkeleton } from '@/checkout/components/PaymentMethods';\nimport '@/checkout/components/PaymentMethods/PaymentMethods.css';\nimport { PaymentMethod } from '@/checkout/data/models/payment-method';\nimport {\n Icon,\n IllustratedMessage,\n ProgressSpinner,\n} from '@adobe/elsie/components';\nimport { useText } from '@adobe/elsie/i18n';\nimport { Wallet } from '@adobe/elsie/icons';\nimport { classes } from '@adobe/elsie/lib';\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\n\nexport interface PaymentMethodsProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n paymentMethodContent?: VNode;\n isLoading?: boolean;\n onChange?: (value: string) => void;\n options?: PaymentMethod[];\n selection?: string;\n}\n\ninterface PaymentOptionProps {\n code: string;\n isLoading?: boolean;\n isSelected: boolean;\n onChange: (value: string) => void;\n title: string;\n}\n\nconst PaymentOption: FunctionComponent<PaymentOptionProps> = ({\n code,\n isLoading,\n isSelected,\n onChange,\n title,\n}) => {\n return (\n <ToggleButton\n className=\"checkout-payment-methods__method\"\n label={title}\n name=\"payment-method\"\n value={code}\n selected={isSelected}\n onChange={onChange}\n radioButtonProps={{\n 'aria-busy': isLoading,\n }}\n // TODO: Add icon\n />\n );\n};\n\nexport const PaymentMethods: FunctionComponent<PaymentMethodsProps> = ({\n className,\n paymentMethodContent,\n isLoading,\n onChange = () => {},\n options,\n selection,\n}) => {\n const dictionary = useText({\n Title: 'Checkout.PaymentMethods.title',\n EmptyState: 'Checkout.PaymentMethods.emptyState',\n });\n\n if (options === undefined) return <PaymentMethodsSkeleton />;\n\n return (\n <div className={classes(['checkout-payment-methods', className])}>\n <Heading level={2} className=\"checkout-payment-methods__title\">\n {dictionary.Title}\n </Heading>\n\n {!isLoading && options!.length === 0 && (\n <IllustratedMessage\n icon={<Icon source={Wallet} />}\n message={<p>{dictionary.EmptyState}</p>}\n />\n )}\n\n <div className={classes(['checkout-payment-methods__wrapper'])}>\n {isLoading && (\n <ProgressSpinner className=\"checkout-payment-methods__spinner\" />\n )}\n\n <div\n className={classes([\n 'checkout-payment-methods__methods',\n ['checkout-payment-methods--loading', isLoading],\n ['checkout-payment-methods--full-width', options!.length % 2 !== 0],\n ])}\n >\n {options?.map((method) => (\n <PaymentOption\n code={method.code}\n key={method.code}\n onChange={onChange}\n isSelected={method.code === selection}\n title={method.title}\n />\n ))}\n </div>\n\n {paymentMethodContent && (\n <div className=\"checkout-payment-methods__content\">\n {paymentMethodContent}\n </div>\n )}\n </div>\n </div>\n );\n};\n","import { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe/elsie/components';\n\nexport const PaymentMethodsSkeleton: FunctionComponent = () => {\n return (\n <Skeleton data-testid=\"payment-methods-skeleton\">\n <SkeletonRow variant=\"heading\" size=\"medium\" />\n <SkeletonRow variant=\"empty\" size=\"medium\" />\n <SkeletonRow size=\"xlarge\" fullWidth={true} />\n <SkeletonRow size=\"xlarge\" fullWidth={true} />\n </Skeleton>\n );\n};\n","import { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe/elsie/lib';\nimport '@/checkout/components/ToggleButton/ToggleButton.css';\nimport { RadioButton } from '@adobe/elsie/components';\n\nexport interface ToggleButtonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'icon'> {\n label: string;\n name: string;\n value: string;\n selected: boolean;\n onChange: (value: string) => void;\n icon?:\n | VNode<HTMLAttributes<SVGSVGElement>>\n | VNode<HTMLAttributes<HTMLImageElement>>;\n radioButtonProps?: Omit<\n HTMLAttributes<HTMLInputElement>,\n 'size' | 'label' | 'name' | 'value' | 'checked' | 'disabled'\n >;\n}\n\nexport const ToggleButton: FunctionComponent<ToggleButtonProps> = ({\n label,\n name,\n value,\n icon,\n selected,\n onChange,\n className,\n children,\n radioButtonProps,\n ...props\n}) => {\n return (\n <div\n className={classes([\n 'checkout-toggle-button',\n className,\n ['checkout-toggle-button__selected', selected],\n ])}\n {...props}\n >\n <label className=\"checkout-toggle-button__actionButton\">\n <RadioButton\n {...radioButtonProps}\n label=\"\"\n name={name}\n value={value}\n checked={selected}\n onChange={() => onChange(value)}\n aria-label={label}\n className={classes([\n className,\n 'checkout-toggle-button__radioButton',\n ])}\n />\n\n <div className=\"checkout-toggle-button__content\">\n {icon && (\n <icon.type\n {...icon?.props}\n className=\"checkout-toggle-button__icon\"\n />\n )}\n\n {label}\n </div>\n </label>\n </div>\n );\n};\n","import { SlotProps } from '@adobe/elsie/lib';\nimport { PaymentMethodContentSlotContext } from '.';\n\nexport interface PaymentMethodHandler {\n render: SlotProps<PaymentMethodContentSlotContext>;\n}\n\nexport interface PaymentMethodHandlers {\n [code: string]: PaymentMethodHandler;\n}\n\nexport const defaultHandlers: PaymentMethodHandlers = {\n free: {\n render: (context) => {\n const $content = document.createElement('div');\n $content.innerText = '';\n context.replaceHTML($content);\n },\n },\n checkmo: {\n render: (context) => {\n const $content = document.createElement('div');\n $content.innerText = '';\n context.replaceHTML($content);\n },\n },\n};\n","import { setPaymentMethod as setPaymentMethodOnCart } from '@/checkout/api';\nimport { PaymentMethods as PaymentMethodsComponent } from '@/checkout/components/PaymentMethods/PaymentMethods';\nimport {\n PaymentMethodHandler,\n defaultHandlers,\n} from '@/checkout/containers/PaymentMethods/defaultHandlers';\nimport { cartSignal } from '@/checkout/signals';\nimport { Container, Slot, SlotProps } from '@adobe/elsie/lib';\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'preact/compat';\n\nexport interface PaymentMethodSlotContext {\n addPaymentMethodHandler: (\n code: string,\n handler: { render: SlotProps<PaymentMethodContentSlotContext> }\n ) => void;\n replaceHTML: (domElement: HTMLElement) => void;\n}\n\nexport interface PaymentMethodContentSlotContext {\n cartId: string;\n onPlaceOrder: (fn: () => Promise<void>) => void;\n handleServerError: (error: any) => void;\n replaceHTML: (domElement: HTMLElement) => void;\n}\n\nexport interface PaymentMethodsProps extends HTMLAttributes<HTMLDivElement> {\n paymentMethodsSlot?: SlotProps<PaymentMethodSlotContext>;\n onPlaceOrder: (fn: () => Promise<void>) => void;\n handleServerError: (error: any) => void;\n isShippingInfoRequired?: boolean;\n}\n\nfunction usePaymentMethods(props: PaymentMethodsProps) {\n const {\n onPlaceOrder,\n handleServerError,\n paymentMethodsSlot,\n isShippingInfoRequired,\n } = props;\n\n const prevPaymentMethodSent = useRef<string>();\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n string | undefined\n >();\n const [temporarySelectedPaymentMethod, setTemporarySelectedPaymentMethod] =\n useState<string | undefined>();\n\n const [paymentMethodHandlers, setPaymentMethodHandlers] =\n useState(defaultHandlers);\n\n const [isDefaultContentUsed, setIsDefaultContentUsed] = useState(true);\n\n const { data: cartData } = cartSignal.value;\n const cartId = cartData?.id ?? '';\n const hasCartData = !!cartData;\n const hasAddress = !!cartData?.shippingAddresses?.[0];\n const availablePaymentMethods = cartData?.availablePaymentMethods;\n const cartSelectedPaymentMethod = cartData?.selectedPaymentMethod;\n\n const setAndSelectPaymentMethod = useCallback(\n async (paymentMethod: string) => {\n try {\n setSelectedPaymentMethod(paymentMethod);\n\n if (!hasAddress && isShippingInfoRequired) return;\n\n const paymentMethodToSend = paymentMethod;\n if (paymentMethodToSend === prevPaymentMethodSent.current) return;\n prevPaymentMethodSent.current = paymentMethodToSend;\n\n await setPaymentMethodOnCart({ cartId, paymentMethod });\n } catch (error: any) {\n console.error('setting payment method failed:', error);\n }\n },\n [cartId, hasAddress, isShippingInfoRequired]\n );\n\n useEffect(() => {\n if (!hasCartData) return;\n\n if (cartSelectedPaymentMethod?.code) {\n const selectedPaymentMethodIsAvailable = availablePaymentMethods?.some(\n (method: any) => method.code === cartSelectedPaymentMethod.code\n );\n\n if (selectedPaymentMethodIsAvailable) {\n // select the method from the backend\n setSelectedPaymentMethod(cartSelectedPaymentMethod.code);\n } else if (availablePaymentMethods?.length) {\n // select the first available method\n setAndSelectPaymentMethod(availablePaymentMethods[0]!.code);\n } else {\n setSelectedPaymentMethod(undefined);\n }\n } else {\n // default to the temporarily selected one or the first one\n availablePaymentMethods![0] &&\n setAndSelectPaymentMethod(\n temporarySelectedPaymentMethod || availablePaymentMethods![0].code\n );\n }\n }, [\n availablePaymentMethods,\n hasCartData,\n cartSelectedPaymentMethod,\n setAndSelectPaymentMethod,\n temporarySelectedPaymentMethod,\n ]);\n\n const onPaymentMethodChange = async (value: string) => {\n await setAndSelectPaymentMethod(value);\n if (!cartSelectedPaymentMethod?.code) {\n setTemporarySelectedPaymentMethod(value);\n }\n };\n\n const addPaymentMethodHandler = useCallback(\n (code: string, handler: PaymentMethodHandler) => {\n if (!code) {\n console.warn(\n 'Payment method handler is ignored because it has no code'\n );\n return;\n }\n\n if (!handler) {\n console.warn('Payment method handler is ignored because it is empty');\n return;\n }\n\n setPaymentMethodHandlers((prevHandlers) => ({\n ...prevHandlers,\n [code]: handler,\n }));\n },\n []\n );\n\n // Run the main payment method container slot callback\n const mainSlotContent = paymentMethodsSlot ? (\n <Slot\n name=\"PaymentMethods\"\n slot={paymentMethodsSlot}\n context={{\n addPaymentMethodHandler,\n replaceHTML(domElement) {\n this.replaceWith(domElement);\n setIsDefaultContentUsed(false);\n },\n }}\n />\n ) : null;\n\n const selectedPaymentMethodHandler = selectedPaymentMethod\n ? paymentMethodHandlers[selectedPaymentMethod]\n : null;\n\n const paymentMethodContent = selectedPaymentMethodHandler ? (\n <Slot\n key={selectedPaymentMethodHandler}\n name=\"PaymentMethodContent\"\n slot={selectedPaymentMethodHandler.render}\n context={{\n cartId,\n onPlaceOrder,\n handleServerError,\n replaceHTML(domElement) {\n this.replaceWith(domElement);\n },\n }}\n />\n ) : undefined;\n\n useEffect(() => {\n // Content has been replaced but payment method handlers have been added\n if (!isDefaultContentUsed && paymentMethodHandlers != defaultHandlers) {\n console.warn(\n 'Payment method handlers you have added are ignored because the default content has been replaced'\n );\n }\n }, [isDefaultContentUsed, paymentMethodHandlers]);\n\n return {\n availablePaymentMethods,\n selectedPaymentMethod,\n onPaymentMethodChange,\n paymentMethodContent,\n mainSlotContent,\n isDefaultContentUsed,\n };\n}\n\nexport const PaymentMethods: Container<PaymentMethodsProps> = (props) => {\n const {\n onPlaceOrder,\n handleServerError,\n paymentMethodsSlot,\n isShippingInfoRequired = true,\n } = props;\n const {\n availablePaymentMethods,\n selectedPaymentMethod,\n onPaymentMethodChange,\n paymentMethodContent,\n mainSlotContent,\n isDefaultContentUsed,\n } = usePaymentMethods({\n onPlaceOrder,\n handleServerError,\n paymentMethodsSlot,\n isShippingInfoRequired,\n });\n\n return (\n <>\n {mainSlotContent && (\n // @ts-ignore\n <mainSlotContent.type\n ref={mainSlotContent.ref}\n {...mainSlotContent.props}\n />\n )}\n {isDefaultContentUsed && (\n <PaymentMethodsComponent\n options={availablePaymentMethods}\n selection={selectedPaymentMethod}\n onChange={onPaymentMethodChange}\n paymentMethodContent={paymentMethodContent}\n isLoading={cartSignal.value.pending}\n />\n )}\n </>\n );\n};\n"],"names":["SvgWallet","props","React","PaymentOption","code","isLoading","isSelected","onChange","title","_jsx","ToggleButton","className","label","name","value","selected","radioButtonProps","PaymentMethods","paymentMethodContent","options","selection","dictionary","useText","Title","EmptyState","undefined","PaymentMethodsSkeleton","_jsxs","classes","children","Heading","level","length","IllustratedMessage","icon","Icon","source","Wallet","message","ProgressSpinner","map","method","Skeleton","SkeletonRow","variant","size","fullWidth","RadioButton","checked","type","defaultHandlers","free","render","context","$content","document","createElement","innerText","replaceHTML","checkmo","usePaymentMethods","onPlaceOrder","handleServerError","paymentMethodsSlot","isShippingInfoRequired","prevPaymentMethodSent","useRef","selectedPaymentMethod","setSelectedPaymentMethod","useState","temporarySelectedPaymentMethod","setTemporarySelectedPaymentMethod","paymentMethodHandlers","setPaymentMethodHandlers","isDefaultContentUsed","setIsDefaultContentUsed","data","cartData","cartSignal","cartId","id","hasCartData","hasAddress","shippingAddresses","availablePaymentMethods","cartSelectedPaymentMethod","setAndSelectPaymentMethod","useCallback","paymentMethod","paymentMethodToSend","current","setPaymentMethodOnCart","error","useEffect","some","onPaymentMethodChange","addPaymentMethodHandler","handler","console","warn","prevHandlers","mainSlotContent","Slot","slot","domElement","replaceWith","selectedPaymentMethodHandler","_Fragment","ref","PaymentMethodsComponent","pending"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{classes as c}from"@dropins/tools/lib.js";import"./ToggleButton.js";import{Button as l}from"@dropins/tools/components.js";import{jsx as i}from"@dropins/tools/preact-jsx-runtime.js";import{Text as a}from"@dropins/tools/i18n.js";import"@dropins/tools/event-bus.js";import{i as s}from"./getStoreConfig.js";import"@dropins/tools/preact-hooks.js";/* empty css */import"@dropins/tools/preact-compat.js";import{L as m}from"./constants2.js";import{S as d}from"./constants.js";import{B as f}from"./constants3.js";const u=({className:e,children:o,...t})=>{const{onClick:r=()=>{},isLoading:n}=t;return i("div",{className:c(["checkout-place-order",e]),children:i(l,{className:c(["checkout-place-order__button",e]),size:"medium",variant:"primary",type:"submit",onClick:r,disabled:n,children:i(a,{id:"Checkout.PlaceOrder.button"})},"placeOrder")})},p=[m,d,f],h=e=>{const o=e.querySelector(":invalid");o&&(o.scrollIntoView({behavior:"smooth"}),o.focus())},O=()=>{const o=(Array.from(document.forms)||[]).filter(r=>p.includes(r.name)).filter(r=>r.offsetParent!==null).filter(r=>!r.checkValidity()),t=o.length===0;if(!t){const r=o[0];h(r)}return t},g=e=>{const{onClick:o,handleServerError:t}=e;return i(u,{onClick:async()=>{if(O())try{await o()}catch(n){t(n)}},isLoading:s.value.pending})};export{g as P};
2
+ //# sourceMappingURL=PlaceOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaceOrder.js","sources":["../../src/components/PlaceOrder/PlaceOrder.tsx","../../src/containers/PlaceOrder/PlaceOrder.tsx"],"sourcesContent":["import { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe/elsie/lib';\nimport '@/checkout/components/PlaceOrder/PlaceOrder.css';\nimport { Button } from '@adobe/elsie/components';\nimport { Text } from '@adobe/elsie/i18n';\n\nexport interface PlaceOrderProps extends HTMLAttributes<HTMLButtonElement> {\n onClick?: (e: any) => void;\n isLoading?: boolean;\n}\n\nexport const PlaceOrder: FunctionComponent<PlaceOrderProps> = ({\n className,\n children,\n ...props\n}) => {\n const { onClick = () => {}, isLoading } = props;\n\n return (\n <div className={classes(['checkout-place-order', className])}>\n <Button\n className={classes(['checkout-place-order__button', className])}\n size=\"medium\"\n variant=\"primary\"\n key=\"placeOrder\"\n type=\"submit\"\n onClick={onClick}\n disabled={isLoading}\n >\n <Text id=\"Checkout.PlaceOrder.button\" />\n </Button>\n </div>\n );\n};\n","import { HTMLAttributes } from 'preact/compat';\nimport { Container } from '@adobe/elsie/lib';\nimport { PlaceOrder as PlaceOrderComponent } from '@/checkout/components/PlaceOrder/PlaceOrder';\nimport {\n BILLING_FORM_NAME,\n LOGIN_FORM_NAME,\n SHIPPING_FORM_NAME,\n} from '@/checkout/containers';\nimport { cartSignal } from '@/checkout/signals';\n\nexport interface PlaceOrderProps extends HTMLAttributes<HTMLDivElement> {\n onClick: () => void;\n handleServerError: (error: any) => void;\n}\n\nconst CHECKOUT_FORMS = [LOGIN_FORM_NAME, SHIPPING_FORM_NAME, BILLING_FORM_NAME];\n\nconst scrollToFirstInvalidField = (form: HTMLFormElement) => {\n const firstInvalidField = form.querySelector(':invalid') as HTMLElement;\n\n if (firstInvalidField) {\n firstInvalidField.scrollIntoView({ behavior: 'smooth' });\n firstInvalidField.focus();\n }\n};\n\nconst canPlaceOrder = () => {\n const formCollection = Array.from(document.forms) || [];\n\n const invalidForms = formCollection\n .filter((form) => {\n return CHECKOUT_FORMS.includes(form.name);\n })\n .filter((form) => {\n // ignore forms that are not visible\n return form.offsetParent !== null;\n })\n .filter((form) => {\n // this will trigger the validation on all the fields\n return !form.checkValidity();\n });\n\n const canPlaceOrder = invalidForms.length === 0;\n\n if (!canPlaceOrder) {\n const firstInvalidForm = invalidForms[0];\n scrollToFirstInvalidField(firstInvalidForm);\n }\n\n return canPlaceOrder;\n};\n\nexport const PlaceOrder: Container<PlaceOrderProps> = (props) => {\n const { onClick, handleServerError } = props;\n\n const handleOrderPlace = async () => {\n if (!canPlaceOrder()) return;\n try {\n await onClick();\n } catch (err) {\n handleServerError(err);\n }\n };\n\n return (\n <PlaceOrderComponent\n onClick={handleOrderPlace}\n isLoading={cartSignal.value.pending}\n />\n );\n};\n"],"names":["PlaceOrder","className","children","props","onClick","isLoading","_jsx","classes","Button","size","variant","type","disabled","Text","id","CHECKOUT_FORMS","LOGIN_FORM_NAME","SHIPPING_FORM_NAME","BILLING_FORM_NAME","scrollToFirstInvalidField","form","firstInvalidField","querySelector","scrollIntoView","behavior","focus","canPlaceOrder","invalidForms","Array","from","document","forms","filter","includes","name","offsetParent","checkValidity","length","firstInvalidForm","handleServerError","PlaceOrderComponent","err","cartSignal","value","pending"],"mappings":"khBAYO,MAAMA,EAAiDA,CAAC,CAC7DC,UAAAA,EACAC,SAAAA,EACA,GAAGC,CACL,IAAM,CACE,KAAA,CAAEC,QAAAA,EAAUA,IAAM,CAAC,EAAGC,UAAAA,CAAcF,EAAAA,EAE1C,OACEG,EAAA,MAAA,CAAKL,UAAWM,EAAQ,CAAC,uBAAwBN,CAAS,CAAC,EAAEC,SAC3DI,EAACE,EAAM,CACLP,UAAWM,EAAQ,CAAC,+BAAgCN,CAAS,CAAC,EAC9DQ,KAAK,SACLC,QAAQ,UAERC,KAAK,SACLP,QAAAA,EACAQ,SAAUP,EAAUH,SAEpBI,EAACO,EAAI,CAACC,GAAG,4BAAA,CAA8B,GALnC,YAME,CAAA,CACL,CAET,ECnBMC,EAAiB,CAACC,EAAiBC,EAAoBC,CAAiB,EAExEC,EAA6BC,GAA0B,CACrDC,MAAAA,EAAoBD,EAAKE,cAAc,UAAU,EAEnDD,IACFA,EAAkBE,eAAe,CAAEC,SAAU,QAAA,CAAU,EACvDH,EAAkBI,MAAM,EAE5B,EAEMC,EAAgBA,IAAM,CAGpBC,MAAAA,GAFiBC,MAAMC,KAAKC,SAASC,KAAK,GAAK,IAGlDC,OAAiBZ,GACTL,EAAekB,SAASb,EAAKc,IAAI,CACzC,EACAF,OAAiBZ,GAETA,EAAKe,eAAiB,IAC9B,EACAH,OAAiBZ,GAET,CAACA,EAAKgB,eACd,EAEGV,EAAgBC,EAAaU,SAAW,EAE9C,GAAI,CAACX,EAAe,CACZY,MAAAA,EAAmBX,EAAa,CAAC,EACvCR,EAA0BmB,CAAgB,CAC5C,CAEOZ,OAAAA,CACT,EAEa1B,EAAoDG,GAAA,CACzD,KAAA,CAAEC,QAAAA,EAASmC,kBAAAA,CAAsBpC,EAAAA,EAWvC,OACEG,EAACkC,EAAmB,CAClBpC,QAXqB,SAAY,CACnC,GAAKsB,EAAc,EACf,GAAA,CACF,MAAMtB,EAAQ,QACPqC,EAAK,CACZF,EAAkBE,CAAG,CACvB,CAAA,EAMEpC,UAAWqC,EAAWC,MAAMC,OAAAA,CAC7B,CAEL"}
@@ -0,0 +1,2 @@
1
+ import{k as o}from"./getStoreConfig.js";const i=o(void 0);export{i as s};
2
+ //# sourceMappingURL=SelectedShippingMethodSignal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectedShippingMethodSignal.js","sources":["../../src/signals/SelectedShippingMethodSignal.ts"],"sourcesContent":["import { signal } from '@preact/signals';\nimport { ShippingMethod } from '@/checkout/data/models';\n\nexport const selectedShippingMethodSignal = signal<ShippingMethod | undefined>(\n undefined\n);\n"],"names":["selectedShippingMethodSignal","signal","undefined"],"mappings":"wCAGaA,MAAAA,EAA+BC,EAC1CC,MACF"}
@@ -0,0 +1,2 @@
1
+ import"@dropins/tools/event-bus.js";import{i as a,j as d}from"./getStoreConfig.js";import{A as n}from"./getMultilineValues.js";import{s as m}from"./setBillingAddress.js";import{s as l,p as g}from"./setShippingAddress.js";import{A as S}from"./ToggleButton.js";import"@dropins/tools/preact-hooks.js";import"@dropins/tools/lib.js";import{useCallback as c}from"@dropins/tools/preact-compat.js";import{jsx as h}from"@dropins/tools/preact-jsx-runtime.js";import{S as A}from"./constants.js";const N=({preselectedFields:o,...p})=>{const{data:s}=a.value,r=(s==null?void 0:s.id)||"",i=d.value.checked,t=c(e=>l({signal:e.signal,cartId:r,address:g(e.address)}).then(()=>{if(i)return m({cartId:r,input:{same_as_shipping:!0}})}),[r,i]);return h(S,{...p,addressType:n.SHIPPING,headingId:"Checkout.ShippingAddress.title",name:A,preselectedFields:o,saveAddressHandler:t})};export{N as S};
2
+ //# sourceMappingURL=ShippingForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShippingForm.js","sources":["../../src/containers/ShippingForm/ShippingForm.tsx"],"sourcesContent":["import {\n prepareAddress,\n setBillingAddress,\n setShippingAddress,\n} from '@/checkout/api';\nimport { AddressForm, SaveAddressCommand } from '@/checkout/components/AddressForm';\nimport { SHIPPING_FORM_NAME } from '@/checkout/containers/ShippingForm';\nimport { Container } from '@adobe/elsie/lib';\nimport { HTMLAttributes, useCallback } from 'preact/compat';\nimport { PreselectedAddressFields } from '@/checkout/containers';\nimport { cartSignal, isBillToShippingSignal } from '@/checkout/signals';\nimport { AddressFormType } from '@/checkout/data/models';\n\nexport interface ShippingFormProps extends HTMLAttributes<HTMLDivElement> {\n preselectedFields?: PreselectedAddressFields;\n}\n\nexport const ShippingForm: Container<ShippingFormProps> = ({\n preselectedFields,\n ...props\n}) => {\n const { data: CartData } = cartSignal.value;\n const cartId = CartData?.id || '';\n const isBillToShipping = isBillToShippingSignal.value.checked;\n\n const saveAddressHandler = useCallback(\n (command: SaveAddressCommand) => {\n return setShippingAddress({\n signal: command.signal,\n cartId,\n address: prepareAddress(command.address),\n }).then(() => {\n if (isBillToShipping) {\n return setBillingAddress({\n cartId,\n input: { same_as_shipping: true },\n });\n }\n });\n },\n [cartId, isBillToShipping]\n );\n\n return (\n <AddressForm\n {...props}\n addressType={AddressFormType.SHIPPING}\n headingId=\"Checkout.ShippingAddress.title\"\n name={SHIPPING_FORM_NAME}\n preselectedFields={preselectedFields}\n saveAddressHandler={saveAddressHandler}\n />\n );\n};\n"],"names":["ShippingForm","preselectedFields","props","data","CartData","cartSignal","value","cartId","id","isBillToShipping","isBillToShippingSignal","checked","saveAddressHandler","useCallback","command","setShippingAddress","signal","address","prepareAddress","then","setBillingAddress","input","same_as_shipping","_jsx","AddressForm","addressType","AddressFormType","SHIPPING","headingId","name","SHIPPING_FORM_NAME"],"mappings":"oeAiBO,MAAMA,EAA6CA,CAAC,CACzDC,kBAAAA,EACA,GAAGC,CACL,IAAM,CACE,KAAA,CAAEC,KAAMC,CAAAA,EAAaC,EAAWC,MAChCC,GAASH,GAAAA,YAAAA,EAAUI,KAAM,GACzBC,EAAmBC,EAAuBJ,MAAMK,QAEhDC,EAAqBC,EACxBC,GACQC,EAAmB,CACxBC,OAAQF,EAAQE,OAChBT,OAAAA,EACAU,QAASC,EAAeJ,EAAQG,OAAO,CAAA,CACxC,EAAEE,KAAK,IAAM,CACZ,GAAIV,EACF,OAAOW,EAAkB,CACvBb,OAAAA,EACAc,MAAO,CAAEC,iBAAkB,EAAK,CAAA,CACjC,CACH,CACD,EAEH,CAACf,EAAQE,CAAgB,CAC3B,EAEA,OACEc,EAACC,EAAW,CAAA,GACNtB,EACJuB,YAAaC,EAAgBC,SAC7BC,UAAU,iCACVC,KAAMC,EACN7B,kBAAAA,EACAW,mBAAAA,CAAAA,CACD,CAEL"}
@@ -0,0 +1,2 @@
1
+ import{e as I}from"./getMultilineValues.js";import{m as T,i as N}from"./getStoreConfig.js";import"@dropins/tools/event-bus.js";import{f as j,r as O}from"./transform-shipping-methods.js";import{s as y}from"./SelectedShippingMethodSignal.js";import{s as B}from"./setShippingMethods.js";import{classes as H}from"@dropins/tools/lib.js";import{H as P}from"./ToggleButton.js";import{IllustratedMessage as V,Icon as Z,ProgressSpinner as q,RadioButton as D,Price as F,Skeleton as $,SkeletonRow as C}from"@dropins/tools/components.js";import"@dropins/tools/preact-hooks.js";/* empty css */import{jsx as t,jsxs as E,Fragment as A}from"@dropins/tools/preact-jsx-runtime.js";import*as r from"@dropins/tools/preact-compat.js";import{useCallback as G,useMemo as J,useEffect as x}from"@dropins/tools/preact-compat.js";import{useText as K}from"@dropins/tools/i18n.js";const Q=e=>r.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},r.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M2.47266 4.90002H15.1851V10.9645H21.2495L23 12.715V17.6124H20.073",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),r.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M15.1758 5.87573H19.0019L21.0394 10.7636",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),r.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M9.76151 16.7898C9.76151 18.0525 8.72845 19.076 7.46582 19.076C6.20318 19.076 5.17969 18.0429 5.17969 16.7803C5.17969 15.5176 6.20318 14.4941 7.46582 14.4941C8.72845 14.4941 9.75195 15.5176 9.76151 16.7803C9.76151 16.7803 9.76151 16.7803 9.76151 16.7898Z",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),r.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M19.8726 16.7898C19.8726 18.062 18.8491 19.0855 17.5769 19.0855C16.3047 19.0855 15.2812 18.062 15.2812 16.7898C15.2812 15.5176 16.3047 14.4941 17.5769 14.4941C18.8491 14.4941 19.8726 15.5176 19.8726 16.7898Z",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),r.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M8.08792 7.63574H1.69824",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),r.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M7.11229 10.3619H1",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),r.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M5.16084 13.0402H1.92773",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),r.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M9.76172 16.7611H15.2809",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),r.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M2.38672 16.7611H5.17025",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"})),U=({className:e,isLoading:i=!1,onSelectionChange:s=()=>{},options:l,selection:o,...g})=>{const v=K({Title:"Checkout.ShippingMethods.title",EmptyState:"Checkout.ShippingMethods.emptyState"});return l===void 0?t(X,{}):E("div",{...g,className:H(["checkout-shipping-methods",e]),children:[t(P,{level:3,className:"checkout-shipping-methods__title",children:v.Title}),!i&&l.length===0&&t(V,{icon:t(Z,{source:Q}),message:t("p",{children:v.EmptyState})}),E("div",{className:H(["checkout-shipping-methods__content"]),children:[i&&t(q,{className:"checkout-shipping-methods__spinner"}),t("div",{className:H(["checkout-shipping-methods__options",["checkout-shipping-methods__options--loading",i]]),children:l.map(n=>t(D,{"data-testid":"shipping-method-radiobutton","aria-busy":i,id:n.value,name:"shipping-method",className:"checkout-shipping-methods__method",label:E(A,{children:[t(F,{amount:n.amount.value,currency:n.amount.currency})," ",t("span",{children:n.carrier.title})]}),description:n.title,value:n.value,checked:(o==null?void 0:o.value)===n.value,onChange:()=>s(n)},n.value))})]})]})},X=()=>E($,{"data-testid":"shipping-methods-skeleton",children:[t(C,{variant:"heading",size:"small"}),t(C,{variant:"empty",size:"small"}),t(C,{size:"medium",fullWidth:!0}),t(C,{size:"medium",fullWidth:!0})]}),W=(e,i)=>e.code===i.code&&e.carrier.code===i.carrier.code;function Y(e){const s=T().config,l=!s,o=N.value.data,g=N.value.pending,v=j.value.data,n=j.value.pending,m=y.value,u=o==null?void 0:o.id,L=o==null?void 0:o.shippingAddresses,p=L==null?void 0:L[0],b=!!p,M=p==null?void 0:p.availableShippingMethods,k=p==null?void 0:p.selectedShippingMethod,a=M||v,w=G(c=>{if(!u||!b)return;const h={method_code:c.code,carrier_code:c.carrier.code};B({cartId:u,shippingMethods:[h]}).catch(S=>{console.error("setting shipping methods on cart failed:",S)})},[u,b]),R=c=>{y.value=c},d=J(()=>{if(!(a!=null&&a.length))return;const c=a[0],h=m||k;return h?a.some(f=>W(f,h))?h:c:a.find(_=>_.carrier.code===(e==null?void 0:e.carrierCode)&&_.code===(e==null?void 0:e.methodCode))||c},[m,k,a,e]);return x(()=>{d&&((!m||!W(d,m))&&(y.value=d),(!k||!W(d,k))&&w(d))},[d,m,k,w]),x(()=>{if(!u||M)return;const{country:c,selectedRegion:h,selectedRegionId:S}=O.value,f=c||(s==null?void 0:s.defaultCountry);f&&I({cartId:u,criteria:{country_code:f,region_name:h,region_id:S}}).catch(z=>{j.value={pending:!1,data:[]},console.error("shipping methods estimation failed:",z)})},[u,M,s]),{isLoading:g||l||n,options:a,selection:d,onSelectionChange:R}}const ge=({preSelectedMethod:e,...i})=>{const{isLoading:s,options:l,selection:o,onSelectionChange:g}=Y(e);return t(U,{...i,className:"checkout-shipping-methods",isLoading:s,onSelectionChange:g,options:l,selection:o})};export{ge as S};
2
+ //# sourceMappingURL=ShippingMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShippingMethods.js","sources":["../../node_modules/@adobe/elsie/src/icons/Delivery.svg","../../src/components/ShippingMethods/ShippingMethods.tsx","../../src/components/ShippingMethods/ShippingMethodsSkeleton.tsx","../../src/utils/shippingMethods/isEqual.ts","../../src/containers/ShippingMethods/ShippingMethods.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgDelivery = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M2.47266 4.90002H15.1851V10.9645H21.2495L23 12.715V17.6124H20.073\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M15.1758 5.87573H19.0019L21.0394 10.7636\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M9.76151 16.7898C9.76151 18.0525 8.72845 19.076 7.46582 19.076C6.20318 19.076 5.17969 18.0429 5.17969 16.7803C5.17969 15.5176 6.20318 14.4941 7.46582 14.4941C8.72845 14.4941 9.75195 15.5176 9.76151 16.7803C9.76151 16.7803 9.76151 16.7803 9.76151 16.7898Z\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M19.8726 16.7898C19.8726 18.062 18.8491 19.0855 17.5769 19.0855C16.3047 19.0855 15.2812 18.062 15.2812 16.7898C15.2812 15.5176 16.3047 14.4941 17.5769 14.4941C18.8491 14.4941 19.8726 15.5176 19.8726 16.7898Z\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M8.08792 7.63574H1.69824\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M7.11229 10.3619H1\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M5.16084 13.0402H1.92773\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M9.76172 16.7611H15.2809\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M2.38672 16.7611H5.17025\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgDelivery;\n","import { classes } from '@adobe/elsie/lib';\nimport '@/checkout/components/ShippingMethods/ShippingMethods.css';\nimport {\n Icon,\n IllustratedMessage,\n Price,\n ProgressSpinner,\n RadioButton,\n} from '@adobe/elsie/components';\nimport { useText } from '@adobe/elsie/i18n';\nimport { Delivery } from '@adobe/elsie/icons';\nimport { Heading } from '@/checkout/components';\nimport { ShippingMethodsSkeleton } from '@/checkout/components/ShippingMethods';\nimport { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { ShippingMethod } from '@/checkout/data/models';\n\nexport interface ShippingMethodsProps extends HTMLAttributes<HTMLDivElement> {\n isLoading?: boolean;\n onSelectionChange?: (method: ShippingMethod) => void;\n options?: ShippingMethod[];\n selection?: ShippingMethod;\n}\n\nexport const ShippingMethods: FunctionComponent<ShippingMethodsProps> = ({\n className,\n isLoading = false,\n onSelectionChange = () => {},\n options,\n selection,\n ...props\n}) => {\n const dictionary = useText({\n Title: 'Checkout.ShippingMethods.title',\n EmptyState: 'Checkout.ShippingMethods.emptyState',\n });\n\n if (options === undefined) return <ShippingMethodsSkeleton />;\n\n return (\n <div\n {...props}\n className={classes(['checkout-shipping-methods', className])}\n >\n <Heading level={3} className=\"checkout-shipping-methods__title\">\n {dictionary.Title}\n </Heading>\n\n {!isLoading && options.length === 0 && (\n <IllustratedMessage\n icon={<Icon source={Delivery} />}\n message={<p>{dictionary.EmptyState}</p>}\n />\n )}\n\n <div className={classes(['checkout-shipping-methods__content'])}>\n {isLoading && (\n <ProgressSpinner className=\"checkout-shipping-methods__spinner\" />\n )}\n\n <div\n className={classes([\n 'checkout-shipping-methods__options',\n ['checkout-shipping-methods__options--loading', isLoading],\n ])}\n >\n {options.map((method: ShippingMethod) => {\n return (\n <RadioButton\n data-testid=\"shipping-method-radiobutton\"\n aria-busy={isLoading}\n id={method.value}\n key={method.value}\n name=\"shipping-method\"\n className=\"checkout-shipping-methods__method\"\n label={\n <>\n <Price\n amount={method.amount.value}\n currency={method.amount.currency}\n />\n &nbsp;\n <span>{method.carrier.title}</span>\n </>\n }\n description={method.title}\n value={method.value}\n checked={selection?.value === method.value}\n onChange={() => onSelectionChange(method)}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n","import { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe/elsie/components';\n\nexport const ShippingMethodsSkeleton: FunctionComponent = () => {\n return (\n <Skeleton data-testid=\"shipping-methods-skeleton\">\n <SkeletonRow variant=\"heading\" size=\"small\" />\n <SkeletonRow variant=\"empty\" size=\"small\" />\n <SkeletonRow size=\"medium\" fullWidth={true} />\n <SkeletonRow size=\"medium\" fullWidth={true} />\n </Skeleton>\n );\n};\n","import { ShippingMethod } from '@/checkout/data/models';\n\nexport const isEqual = (a: ShippingMethod, b: ShippingMethod) => {\n return a.code === b.code && a.carrier.code === b.carrier.code;\n};\n","import {\n estimateShippingMethods,\n setShippingMethodsOnCart,\n} from '@/checkout/api';\nimport { ShippingMethods as ShippingMethodsList } from '@/checkout/components/ShippingMethods';\nimport { PreselectedShippingMethod } from '@/checkout/containers/Checkout';\nimport { useStore } from '@/checkout/context/store';\nimport { ShippingMethod } from '@/checkout/data/models';\nimport {\n cartSignal,\n estimateShippingMethodsSignal,\n regionsSignal,\n} from '@/checkout/signals';\nimport { selectedShippingMethodSignal } from '@/checkout/signals/SelectedShippingMethodSignal';\nimport { isEqual } from '@/checkout/utils/shippingMethods';\nimport { Container } from '@adobe/elsie/lib';\nimport { HTMLAttributes, useCallback, useEffect, useMemo } from 'preact/compat';\n\nexport interface ShippingMethodsProps extends HTMLAttributes<HTMLDivElement> {\n preSelectedMethod?: PreselectedShippingMethod;\n}\n\nfunction useShippingMethods(preselectedMethod?: PreselectedShippingMethod) {\n const store = useStore();\n const config = store.config;\n const isLoadingConfig = !config;\n\n const cart = cartSignal.value.data;\n const isLoadingCart = cartSignal.value.pending;\n const estimationShippingMethods = estimateShippingMethodsSignal.value.data;\n const isLoadingEstimation = estimateShippingMethodsSignal.value.pending;\n const localShippingSelection = selectedShippingMethodSignal.value;\n\n const cartId = cart?.id;\n const cartShippingAddresses = cart?.shippingAddresses;\n const primaryAddress = cartShippingAddresses?.[0];\n const isAbleToSetShippingMethod = !!primaryAddress;\n const cartShippingMethods = primaryAddress?.availableShippingMethods;\n const cartShippingSelection = primaryAddress?.selectedShippingMethod;\n\n const shippingOptions = cartShippingMethods || estimationShippingMethods;\n\n const setShippingMethodOnCart = useCallback(\n (method: ShippingMethod) => {\n if (!cartId || !isAbleToSetShippingMethod) return;\n\n const partialMethod = {\n method_code: method.code,\n carrier_code: method.carrier.code,\n };\n\n setShippingMethodsOnCart({\n cartId,\n shippingMethods: [partialMethod],\n }).catch((error) => {\n console.error('setting shipping methods on cart failed:', error);\n });\n },\n [cartId, isAbleToSetShippingMethod]\n );\n\n const onSelectionChange = (method: ShippingMethod) => {\n selectedShippingMethodSignal.value = method;\n };\n\n /**\n * This memo is responsible for determining the selected shipping method\n * based on the current state of the cart and the available shipping methods.\n */\n const selectedShippingOption: ShippingMethod | undefined = useMemo(() => {\n if (!shippingOptions?.length) return;\n\n const fallbackShippingOption = shippingOptions[0];\n const selection = localShippingSelection || cartShippingSelection;\n\n if (!selection) {\n const preselection = shippingOptions.find((method) => {\n return (\n method.carrier.code === preselectedMethod?.carrierCode &&\n method.code === preselectedMethod?.methodCode\n );\n });\n\n return preselection || fallbackShippingOption;\n }\n\n const isAvailable = shippingOptions.some((method) =>\n isEqual(method, selection)\n );\n\n return isAvailable ? selection : fallbackShippingOption;\n }, [\n localShippingSelection,\n cartShippingSelection,\n shippingOptions,\n preselectedMethod,\n ]);\n\n /**\n * This effect is responsible for syncing the local and cart state with the current selection.\n\n * - Initialize the local selection with the data from the cart when needed.\n * - Initialize the local selection and sync the cart when using the first available method.\n * - If the cart gets out of sync, update the cart with the local selection.\n */\n useEffect(() => {\n if (!selectedShippingOption) return;\n\n if (\n !localShippingSelection ||\n !isEqual(selectedShippingOption, localShippingSelection)\n ) {\n selectedShippingMethodSignal.value = selectedShippingOption;\n }\n\n if (\n !cartShippingSelection ||\n !isEqual(selectedShippingOption, cartShippingSelection)\n ) {\n setShippingMethodOnCart(selectedShippingOption);\n }\n }, [\n selectedShippingOption,\n localShippingSelection,\n cartShippingSelection,\n setShippingMethodOnCart,\n ]);\n\n /**\n * This effect is responsible for triggering the shipping methods estimation.\n *\n * - Only triggers if there is cart data and no available shipping methods.\n * - Builds the estimate shipping search fields using the current region data or defaults.\n * - Calls the estimateShipping function with the cartId and search fields.\n */\n useEffect(() => {\n if (!cartId || cartShippingMethods) return;\n\n const {\n country: regionCountry,\n selectedRegion,\n selectedRegionId,\n } = regionsSignal.value;\n\n const country = regionCountry || config?.defaultCountry;\n\n if (country) {\n const criteria = {\n country_code: country,\n region_name: selectedRegion,\n region_id: selectedRegionId,\n };\n\n estimateShippingMethods({ cartId, criteria }).catch((error: any) => {\n estimateShippingMethodsSignal.value = { pending: false, data: [] };\n console.error('shipping methods estimation failed:', error);\n });\n }\n }, [cartId, cartShippingMethods, config]);\n\n return {\n isLoading: isLoadingCart || isLoadingConfig || isLoadingEstimation,\n options: shippingOptions,\n selection: selectedShippingOption,\n onSelectionChange,\n };\n}\n\nexport const ShippingMethods: Container<ShippingMethodsProps> = ({\n preSelectedMethod,\n ...props\n}) => {\n const { isLoading, options, selection, onSelectionChange } =\n useShippingMethods(preSelectedMethod);\n\n return (\n <ShippingMethodsList\n {...props}\n className=\"checkout-shipping-methods\"\n isLoading={isLoading}\n onSelectionChange={onSelectionChange}\n options={options}\n selection={selection}\n />\n );\n};\n"],"names":["SvgDelivery","props","React","ShippingMethods","className","isLoading","onSelectionChange","options","selection","dictionary","useText","Title","EmptyState","undefined","_jsx","ShippingMethodsSkeleton","_jsxs","classes","children","Heading","level","length","IllustratedMessage","icon","Icon","source","Delivery","message","ProgressSpinner","map","method","RadioButton","id","value","name","label","_Fragment","Price","amount","currency","carrier","title","description","checked","onChange","Skeleton","SkeletonRow","variant","size","fullWidth","isEqual","a","b","code","useShippingMethods","preselectedMethod","config","useStore","isLoadingConfig","cart","cartSignal","data","isLoadingCart","pending","estimationShippingMethods","estimateShippingMethodsSignal","isLoadingEstimation","localShippingSelection","selectedShippingMethodSignal","cartId","cartShippingAddresses","shippingAddresses","primaryAddress","isAbleToSetShippingMethod","cartShippingMethods","availableShippingMethods","cartShippingSelection","selectedShippingMethod","shippingOptions","setShippingMethodOnCart","useCallback","partialMethod","method_code","carrier_code","setShippingMethodsOnCart","shippingMethods","catch","error","selectedShippingOption","useMemo","fallbackShippingOption","some","find","carrierCode","methodCode","useEffect","country","regionCountry","selectedRegion","selectedRegionId","regionsSignal","defaultCountry","estimateShippingMethods","criteria","country_code","region_name","region_id","preSelectedMethod","ShippingMethodsList"],"mappings":"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","x_google_ignoreList":[0]}