@dropins/storefront-pdp 0.5.0-alpha1 → 0.5.0-beta2

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 (71) hide show
  1. package/api/fetchPDPData/fetchPDPData.d.ts +6 -0
  2. package/api/fetchPDPData/index.d.ts +2 -0
  3. package/api/getFetchedProductData/getFetchedProductData.d.ts +4 -0
  4. package/api/getFetchedProductData/index.d.ts +2 -0
  5. package/api/getProductConfigurationValues/getProductConfigurationValues.d.ts +4 -0
  6. package/api/getProductConfigurationValues/index.d.ts +2 -0
  7. package/api/index.d.ts +6 -0
  8. package/api/initialize/initialize.d.ts +5 -0
  9. package/api/isProductConfigurationValid/index.d.ts +2 -0
  10. package/api/isProductConfigurationValid/isProductConfigurationValid.d.ts +2 -0
  11. package/api/setProductConfigurationValid/index.d.ts +2 -0
  12. package/api/setProductConfigurationValid/setProductConfigurationValid.d.ts +2 -0
  13. package/api/setProductConfigurationValues/index.d.ts +2 -0
  14. package/api/setProductConfigurationValues/setProductConfigurationValues.d.ts +4 -0
  15. package/api.js +1 -1
  16. package/chunks/PriceRange.js +1 -0
  17. package/chunks/Swatches.js +1 -0
  18. package/chunks/Zoom.js +1 -0
  19. package/chunks/date.js +1 -0
  20. package/chunks/fetchPDPData.js +185 -0
  21. package/chunks/getFetchedProductData.js +1 -0
  22. package/chunks/getProductConfigurationValues.js +1 -0
  23. package/chunks/isProductConfigurationValid.js +1 -0
  24. package/components/Header/Header.d.ts +9 -0
  25. package/components/Header/index.d.ts +3 -0
  26. package/components/Price/Price.d.ts +9 -0
  27. package/components/Price/index.d.ts +3 -0
  28. package/components/Swatches/Swatches.d.ts +1 -0
  29. package/components/index.d.ts +2 -0
  30. package/containers/ProductAttributes/ProductAttributes.d.ts +8 -0
  31. package/containers/ProductAttributes/index.d.ts +3 -0
  32. package/containers/ProductAttributes.d.ts +3 -0
  33. package/containers/ProductAttributes.js +1 -0
  34. package/containers/ProductDescription/ProductDescription.d.ts +8 -0
  35. package/containers/ProductDescription/index.d.ts +3 -0
  36. package/containers/ProductDescription.d.ts +3 -0
  37. package/containers/ProductDescription.js +1 -0
  38. package/containers/ProductDetails/ProductDetails.d.ts +4 -8
  39. package/containers/ProductDetails.js +1 -1
  40. package/containers/ProductGallery/ProductGallery.d.ts +18 -0
  41. package/containers/ProductGallery/index.d.ts +3 -0
  42. package/containers/ProductGallery.d.ts +3 -0
  43. package/containers/ProductGallery.js +1 -0
  44. package/containers/ProductHeader/ProductHeader.d.ts +8 -0
  45. package/containers/ProductHeader/index.d.ts +3 -0
  46. package/containers/ProductHeader.d.ts +3 -0
  47. package/containers/ProductHeader.js +1 -0
  48. package/containers/ProductOptions/ProductOptions.d.ts +22 -0
  49. package/containers/ProductOptions/index.d.ts +3 -0
  50. package/containers/ProductOptions.d.ts +3 -0
  51. package/containers/ProductOptions.js +1 -0
  52. package/containers/ProductPrice/ProductPrice.d.ts +8 -0
  53. package/containers/ProductPrice/index.d.ts +3 -0
  54. package/containers/ProductPrice.d.ts +3 -0
  55. package/containers/ProductPrice.js +1 -0
  56. package/containers/ProductQuantity/ProductQuantity.d.ts +9 -0
  57. package/containers/ProductQuantity/index.d.ts +3 -0
  58. package/containers/ProductQuantity.d.ts +3 -0
  59. package/containers/ProductQuantity.js +1 -0
  60. package/containers/ProductShortDescription/ProductShortDescription.d.ts +8 -0
  61. package/containers/ProductShortDescription/index.d.ts +3 -0
  62. package/containers/ProductShortDescription.d.ts +3 -0
  63. package/containers/ProductShortDescription.js +1 -0
  64. package/containers/index.d.ts +8 -0
  65. package/data/models/index.d.ts +1 -0
  66. package/data/models/values-model.d.ts +6 -0
  67. package/i18n/en_US.json.d.ts +3 -0
  68. package/package.json +1 -1
  69. package/render.js +2 -2
  70. package/chunks/getRefinedProduct.js +0 -185
  71. package/chunks/initialize.js +0 -1
@@ -0,0 +1,6 @@
1
+ export type Options = {
2
+ anchors?: string[];
3
+ optionsUIDs?: string[];
4
+ };
5
+ export declare const fetchPDPData: (sku: string, options?: Options) => Promise<import('../../data/models/product-model').ProductModel | null>;
6
+ //# sourceMappingURL=fetchPDPData.d.ts.map
@@ -0,0 +1,2 @@
1
+ export * from './fetchPDPData';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { ProductModel } from '../../data/models/product-model';
2
+
3
+ export declare const getFetchedProductData: () => Promise<ProductModel | null>;
4
+ //# sourceMappingURL=getFetchedProductData.d.ts.map
@@ -0,0 +1,2 @@
1
+ export * from './getFetchedProductData';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { ValuesModel } from '../../data/models';
2
+
3
+ export declare const getProductConfigurationValues: () => ValuesModel | null;
4
+ //# sourceMappingURL=getProductConfigurationValues.d.ts.map
@@ -0,0 +1,2 @@
1
+ export * from './getProductConfigurationValues';
2
+ //# sourceMappingURL=index.d.ts.map
package/api/index.d.ts CHANGED
@@ -17,4 +17,10 @@ export * from './initialize';
17
17
  export * from './fetch-graphql';
18
18
  export * from './getProductData';
19
19
  export * from './getRefinedProduct';
20
+ export * from './fetchPDPData';
21
+ export * from './setProductConfigurationValues';
22
+ export * from './getProductConfigurationValues';
23
+ export * from './setProductConfigurationValid';
24
+ export * from './getFetchedProductData';
25
+ export * from './isProductConfigurationValid';
20
26
  //# sourceMappingURL=index.d.ts.map
@@ -5,6 +5,11 @@ import { ProductModel } from '../../data/models';
5
5
  type ConfigProps = {
6
6
  langDefinitions?: Lang;
7
7
  defaultLocale?: string;
8
+ sku?: string;
9
+ acdl?: boolean;
10
+ anchors?: string[];
11
+ persistURLParams?: boolean;
12
+ optionsUIDs?: string[];
8
13
  models?: {
9
14
  [name: string]: {
10
15
  initialData: any;
@@ -0,0 +1,2 @@
1
+ export * from './isProductConfigurationValid';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const isProductConfigurationValid: () => boolean | null;
2
+ //# sourceMappingURL=isProductConfigurationValid.d.ts.map
@@ -0,0 +1,2 @@
1
+ export * from './setProductConfigurationValid';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const setProductConfigurationValid: (callback: (prev: boolean) => boolean) => void;
2
+ //# sourceMappingURL=setProductConfigurationValid.d.ts.map
@@ -0,0 +1,2 @@
1
+ export * from './setProductConfigurationValues';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { ValuesModel } from '../../data/models';
2
+
3
+ export declare const setProductConfigurationValues: (callback: (prev: ValuesModel) => ValuesModel) => void;
4
+ //# sourceMappingURL=setProductConfigurationValues.d.ts.map
package/api.js CHANGED
@@ -1 +1 @@
1
- import{f as s,g as o,c as i,d as c,r as p,s as d,a as h,b as f}from"./chunks/getRefinedProduct.js";import{c as n,i as l}from"./chunks/initialize.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/lib.js";export{n as config,s as fetchGraphQl,o as getConfig,i as getProductData,c as getRefinedProduct,l as initialize,p as removeFetchGraphQlHeader,d as setEndpoint,h as setFetchGraphQlHeader,f as setFetchGraphQlHeaders};
1
+ import{c as s,f as i,h as d,g as c,d as f,e as g,i as n,r as u,s as p,a as h,b as l}from"./chunks/fetchPDPData.js";import{g as m,s as C}from"./chunks/getProductConfigurationValues.js";import{i as D,s as F}from"./chunks/isProductConfigurationValid.js";import{g as Q}from"./chunks/getFetchedProductData.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/lib.js";import"@dropins/tools/fetch-graphql.js";export{s as config,i as fetchGraphQl,d as fetchPDPData,c as getConfig,Q as getFetchedProductData,m as getProductConfigurationValues,f as getProductData,g as getRefinedProduct,n as initialize,D as isProductConfigurationValid,u as removeFetchGraphQlHeader,p as setEndpoint,h as setFetchGraphQlHeader,l as setFetchGraphQlHeaders,F as setProductConfigurationValid,C as setProductConfigurationValues};
@@ -0,0 +1 @@
1
+ import{jsx as r,Fragment as h,jsxs as l}from"@dropins/tools/preact-jsx-runtime.js";/* empty css */import{Price as s}from"@dropins/tools/components.js";const o=({amount:e,currency:p,locale:d,variant:g,sale:t,minimumAmount:i,maximumAmount:n,className:a,...c})=>r(h,{children:e||i===n?r("div",{className:"pdp-price-range",...c,children:r(s,{amount:e||i,currency:p,locale:d,variant:g,sale:t,className:a})}):l("div",{className:"pdp-price-range",...c,children:[r(s,{amount:i,currency:p,locale:d,className:a}),r("span",{className:"pdp-price-range__label",children:"-"}),r(s,{amount:n,currency:p,locale:d,className:a})]})});export{o as P};
@@ -0,0 +1 @@
1
+ import{jsx as h,jsxs as y}from"@dropins/tools/preact-jsx-runtime.js";import{useState as J,useEffect as g,useMemo as M,useCallback as _}from"@dropins/tools/preact-compat.js";import{classes as $}from"@dropins/tools/lib.js";import{Picker as R,ColorSwatch as z,ImageSwatch as A,TextSwatch as B}from"@dropins/tools/components.js";/* empty css */import{useText as P}from"@dropins/tools/i18n.js";const F=["text","image","color","dropdown"],G=d=>d.map(n=>({...n,text:n.label,disabled:!n.inStock}));function H(d,n){return d.reduce((k,f)=>{const s=n==null?void 0:n.find(b=>b.items.find(w=>w.id===f));if(!s)return k;const i=s.items.find(b=>b.id===f);return{...k,[s.id]:{label:i.label,value:i.id}}},{})}const E=({options:d,hideSelectedValue:n,disablePreselections:k,selectedUIDs:f,onValues:s,onErrors:i,defaultOptions:b,selectionsToUpdate:w,className:N,children:K,...O})=>{const C=P("PDP.Swatches.Required.label").label,j=P("PDP.Swatches.ChooseOption.label").label,[S,m]=J(()=>d==null?void 0:d.reduce((r,e)=>{const{items:a}=e,u=a==null?void 0:a.find(c=>b==null?void 0:b.includes(c.id)),t=a==null?void 0:a.find(c=>c.selected);return u?{...r,[e.id]:{label:u.label,value:u.id}}:t?{...r,[e.id]:{label:t.label,value:t.id}}:r},{}));g(()=>{if(f){const l=H(f,d);if(JSON.stringify(l)===JSON.stringify(S))return;x(Object.keys(l)[0],l[Object.keys(l)[0]].label,f[0])}},[f]),g(()=>{w==null||w.forEach(l=>{m(r=>{var u;const e=(u=l==null?void 0:l.items)==null?void 0:u.find(t=>t.selected);return e?{...r,[l.id]:{label:e==null?void 0:e.label,value:e==null?void 0:e.id}}:r})})},[w,m]),M(()=>{const l=d==null?void 0:d.reduce((r,e)=>{var u;let a=!1;return(u=e==null?void 0:e.items)==null||u.forEach(t=>{var v;((v=S[e.id])==null?void 0:v.value)===t.id&&(a=!0)}),e.required&&!a&&(r[e.id]=C),r},{});return i==null||i(l),l},[S]);const x=_((l,r,e)=>{m(a=>{const u={...a,[l]:{label:r,value:e}};return s==null||s(u,e),u})},[s]),L=(l,r)=>{var a;const e=((a=r.selectedOptions[0])==null?void 0:a.label)??"";x(l,e,r.value)},q=_(({items:l,id:r,required:e,type:a,selected:u,label:t})=>(l==null?void 0:l.length)>0&&h("div",{className:$(["pdp-swatches__options"]),children:(a==null?void 0:a.toLowerCase())==="dropdown"?h(R,{"aria-label":t,placeholder:k?j:void 0,handleSelect:c=>L(r,c.target),options:G(l),value:u}):l==null?void 0:l.map(c=>{const v={key:c.id,id:c.id,name:r,value:c.value,label:c.label,groupAriaLabel:t,selected:u===c.id,outOfStock:!c.inStock,required:e===null?!0:e,onValue:()=>{x(r,c.label,c.id)}};switch(a){case"text":return h(B,{...v,label:c.label});case"image":return h(A,{...v,src:c.value,alt:c.label});case"color":return h(z,{...v,size:"large",color:c.value});default:return console.warn(`Invalid swatch type ${a}`),null}})}),[]);return h("div",{...O,className:$(["pdp-swatches",N]),children:d==null?void 0:d.map(({type:l,label:r,id:e,multiple:a,required:u,items:t})=>{var c;return F.includes(l)||console.warn(`Invalid swatch type ${l}`),a&&console.warn("Multiple selection swatches are not currently supported."),y("div",{id:`swatch-item-${e}`,"data-slot-key":`product-swatch--${e}`,className:"pdp-swatches__field",children:[h("div",{className:"pdp-swatches__field__label",children:S[e]?n?`${r}`:`${r}: ${S[e].label}`:r}),h(q,{id:e,type:l,required:u,items:t,label:r,selected:(c=S[e])==null?void 0:c.value})]},`swatch-item-${e}`)})})};export{E as S};
package/chunks/Zoom.js ADDED
@@ -0,0 +1 @@
1
+ import{jsxs as z,jsx as C,Fragment as _e}from"@dropins/tools/preact-jsx-runtime.js";import*as V from"@dropins/tools/preact-compat.js";import{useState as E,Children as B,useRef as he,useMemo as be,useEffect as S,useCallback as U}from"@dropins/tools/preact-compat.js";import{debounce as ve,classes as M}from"@dropins/tools/lib.js";import{Button as de,Icon as Ne}from"@dropins/tools/components.js";/* empty css */import{useText as T}from"@dropins/tools/i18n.js";import{cloneElement as Ee}from"@dropins/tools/preact.js";const We=i=>V.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...i},V.createElement("path",{d:"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"round"})),Le=i=>V.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...i},V.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M18.3599 5.64001L5.62988 18.37",stroke:"currentColor"}),V.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M18.3599 18.37L5.62988 5.64001",stroke:"currentColor"})),ke=24,ye=16,R=2,De="32";var Ce=(i=>(i[i.small=16]="small",i[i.medium=24]="medium",i[i.large=64]="large",i))(Ce||{});const He=({show:i=1,scrollbar:w=!1,peak:y=!1,arrows:p=!1,controls:n="dots",arrowsOnMainImage:N=!1,loop:s=!1,gap:m=null,direction:W="horizontal",width:H="100%",height:le="100%",defaultIndex:k=0,className:ne,children:x,thumbnails:X=null,isZoomed:I,...J})=>{const Q=T("PDP.Carousel.label").label,G=T("PDP.Carousel.Slide.label").label,ee=T("PDP.Carousel.Previous.label").label,te=T("PDP.Carousel.Next.label").label,ae=T("PDP.Carousel.Controls.label").label,re=T("PDP.Carousel.Controls.Button.label").label,[h,ce]=E(()=>we(i)),r=Math.ceil(B.count(x)/h),d=y?ke:0,g=m?Ce[m]:0,P=B.count(x)%h,[a,Y]=E(s?L()?k-1:k+1:k),D=he([]),[O,ie]=E(0),[Z,Me]=E(0),fe=be(()=>B.toArray(X),[X]),_=be(()=>{const e=B.toArray(x).reduce((t,l,o)=>o%h===0?[...t,[l]]:[...t.slice(0,-1),[...t[t.length-1],l]],[]);return!s||e.length===1?e:s&&B.count(x)%h===0?[e[r-1]].concat(e).concat([e[0],e[1]]):[B.toArray(x).slice(-h)].concat(e).concat([e[0],e[1]])},[x,h,r,s]),j=he(null),pe=he(null),b=n==="thumbnailsRow"||n==="thumbnailsColumn";S(()=>{const e=j.current;if(!e)return;const t=ve(()=>{ie(e.offsetWidth??0),Me(e.offsetHeight??0);const o=window.innerWidth,u=we(i,o);u!==h&&ce(u)},50),l=new ResizeObserver(t);return l.observe(e),()=>{l.unobserve(e)}},[h,i]);const F=U(e=>{const t=s?e-1:e,l=D==null?void 0:D.current[0],o=(l==null?void 0:l.offsetWidth)+ye,u=(l==null?void 0:l.offsetHeight)+ye,c=pe.current,A=n==="thumbnailsRow",se=n==="thumbnailsColumn",$=A?c==null?void 0:c.offsetWidth:c==null?void 0:c.offsetHeight,f=A?o:u;(A||se)&&$&&(f*(t+1)>$&&(c.style.scrollBehavior="smooth",A?c.scrollLeft=L()?c.scrollWidth-c.clientWidth-(t+R)*f:(t+R)*f:c.scrollTop=(t+R)*f),(L()&&(A?c.scrollLeft:c.scrollTop)<=-f*t||!L()&&(A?c.scrollLeft:c.scrollTop)>f*t)&&(c.style.scrollBehavior="smooth",A?c.scrollLeft=L()?-(t-R)*f:(t-R)*f:c.scrollTop=(t-R)*f))},[n,s]);S(()=>{F(a)},[a,F]);const v=U((e,t,l)=>{b&&F(e);const o=j.current,u=d?o.offsetWidth-d:o.offsetWidth-d+g;if(!Array.from(o.querySelectorAll("[data-index]")).filter($=>{const f=Number($.getAttribute("data-index"));return!isNaN(f)&&f>-1})[e])return;if(l){const $=e===0?r:0,f=u*(r+(P||h)/h);if(L()){if(o.scrollLeft<=0&&o.scrollLeft>-(u-5)){v(1,!0);return}if(o.scrollLeft<u-f&&o.scrollLeft>=-f){v(r,!0);return}o.style.scrollBehavior="auto",o.scrollLeft=$===0?0:-f,v($===0?1:r,!0)}else{if(o.scrollLeft>=0&&o.scrollLeft<u-5){v(1,!0);return}if(o.scrollLeft>f-u&&o.scrollLeft<=f){v(r,!0);return}o.style.scrollBehavior="auto",o.scrollLeft=$===0?0:f,v($===0?1:r,!0);return}}const se=(o.offsetWidth-g)/h*_[e].length-d;o.style.scrollBehavior=t?"smooth":"auto",o.scrollLeft=L()?-(_[e].length===h?u*e:u*(e-1)-se):_[e].length===h?u*e:u*(e-1)+se},[g,r,d,h,P,_,F,n]),K=U(()=>{if(s){const t=a-1;v(t,!0,L()?a===r-1:a===1);return}const e=a<=0?0:a-1;v(e,!0)},[a,v,s]),q=U(()=>{const e=_.length-1;if(s){const l=a+1;v(l,!0,L()?a===0:a===r);return}const t=a>=e?e:a+1;v(t,!0)},[_.length,s,a,v,r]);S(()=>{const e=t=>{t.key==="ArrowLeft"&&(t.preventDefault(),L()?q():K()),t.key==="ArrowRight"&&(t.preventDefault(),L()?K():q())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[q,K]),S(()=>{v(s?k+1:k,!1)},[k,v,s]);const ue=ve(()=>{const e=j.current,t=d?e.offsetWidth-d:e.offsetWidth-d+g,l=Math.abs(e.scrollLeft)/t,o=Math.abs(Math.round(l)-l<1?Math.round(l):Math.ceil(l));if(b&&F(o),s){const u=t*(r+(P||h)/h),c=L()?-e.scrollLeft:e.scrollLeft;if(Math.ceil(Math.abs(c))>=Math.ceil(u)-5){e.style.scrollBehavior="auto",e.scrollLeft=L()?-e.offsetWidth+(Math.ceil(c)-Math.ceil(u)-d):e.offsetWidth+(Math.ceil(c)-Math.ceil(u)-d);return}if(Math.abs(c)===0){e.style.scrollBehavior="auto",e.scrollLeft=L()?-(u-e.offsetWidth+d):u-e.offsetWidth+d;return}}a!==o&&Y(o)},100);S(()=>{const e=j.current;return e==null||e.addEventListener("scroll",ue),()=>{e==null||e.removeEventListener("scroll",ue)}},[ue]);const oe=(e,t,l)=>C(de,{className:M([["pdp-carousel__button",!e],[`pdp-carousel__button--${t}`,!e],[`pdp-carousel__button--${n}`,e]]),style:{"--height":`${Z}px`},variant:"tertiary","aria-label":t==="next"?te:ee,onClick:l,disabled:s?!1:t==="next"?a>=_.length-1:a<1,children:C(Ne,{className:M([["pdp-carousel__button__icon",!e],[`pdp-carousel__button__icon--${t}`,!e],[`pdp-carousel__button__icon--${n}--${t}`,e]]),size:De,source:We})}),me=p&&_.length!=1&&oe(b,"prev",K),ge=p&&_.length!=1&&oe(b,"next",q),Pe=p&&_.length!=1&&oe(!1,"prev",K),xe=p&&_.length!=1&&oe(!1,"next",q);return z("div",{role:"region","aria-roledescription":Q,className:M(["pdp-carousel",["pdp-carousel--main-image-controls",N],["pdp-carousel--arrows",p&&!b],[`pdp-carousel--${n}`,b],ne]),style:{"--flex-carousel":n==="thumbnailsColumn"?"row-reverse":"column","--gap":b?"0":"var(--spacing-small)","--width":H},...J,children:[C("div",{ref:j,className:M(["pdp-carousel__wrapper",`pdp-carousel__wrapper--${W}`,["pdp-carousel__wrapper--scrollbar",w],["pdp-carousel__wrapper--peak",y]]),style:{"--total-width":n==="thumbnailsColumn"?"81.6%":"100%","--height":n==="thumbnailsColumn"?"auto":le,"--gap":m?`var(--spacing-${m})`:"0px","--per-page":h},tabIndex:0,children:_.map((e,t)=>{const l=e.length<h;return C("div",{role:"group","aria-roledescription":G,"data-index":t,className:M(["pdp-carousel__slide",`pdp-carousel__slide--${W}`,["pdp-carousel__slide--active",a===t],["pdp-carousel__slide--orphan",l]]),style:{"--length":e.length},children:e},t)})}),!b&&z(_e,{children:[me,ge]}),b&&N&&z(_e,{children:[Pe,xe]}),n&&_.length!=1&&z("div",{className:M([[`pdp-carousel__controls__container--${n}`,b],["pdp-carousel__controls__container--no-arrows",!p||N]]),style:{"--width":n==="thumbnailsRow"?`${O}px`:H,"--height":`${Z}px`,"--nr-thumbnails":fe.length},children:[(b||I)&&!N&&me,C("div",{ref:pe,className:M([[`pdp-carousel__controls__wrapper--${n}`,b],["pdp-carousel__controls__wrapper",b]]),children:C("div",{role:"group","aria-label":ae,className:M(["pdp-carousel__controls",[`pdp-carousel__controls--${n}`,b]]),children:(s?_.slice(0,r):_).map((e,t)=>{const l=s?r:_.length,o=s?a-1===t:a===t;return b?z("label",{className:M(["pdp-carousel__thumbnail__container"]),ref:u=>{u&&(D.current[t]=u)},children:[C("input",{type:"radio",name:"carousel-thumbnails","aria-label":re.replace("{key}",String(t+1)).replace("{total}",String(l)),checked:o&&O!==0,onChange:()=>{v(s?t+1:t,!0)},...J,className:M(["pdp-carousel__thumbnail",["pdp-carousel__thumbnail--selected",o&&O!==0]])}),C("span",{className:M(["pdp-carousel__thumbnail__span"]),children:fe[t]})]},t):C("button",{"aria-label":re.replace("{key}",String(t+1)).replace("{total}",String(l)),onClick:()=>{v(s?t+1:t,!0)},className:M(["pdp-carousel__controls__button",["pdp-carousel__controls__button--active",o]])},t)})})}),(b||I)&&!N&&ge]})]})};function we(i,w=0){if(typeof i=="number")return i;const{small:y,medium:p,large:n}=i,s=[{breakpoint:1024,value:n},{breakpoint:786,value:p},{breakpoint:0,value:y}].find(({breakpoint:m})=>w>m);return s?s.value:y}function L(){return document.documentElement.dir==="rtl"}const Xe=({centered:i,onClose:w,className:y,children:p,...n})=>{const N=T("PDP.Overlay.Close.label").label,s=U(()=>{w==null||w()},[w]);return S(()=>{const m=W=>{W.key==="Escape"&&s()};return document.addEventListener("keydown",m),()=>{document.removeEventListener("keydown",m)}},[s]),S(()=>{const m=document.scrollingElement,W=m.style.overflow;return m.style.overflow="hidden",()=>{m.style.overflow=W}},[]),z("div",{...n,className:M(["pdp-overlay",["pdp-overlay--centered",i],y]),children:[C("div",{className:"pdp-overlay__content",children:p}),C(de,{"aria-label":N,variant:"tertiary",className:"pdp-overlay__close-button",onClick:s,icon:C(Le,{})})]})},Ye=({children:i,scale:w=2,closeButton:y=!0})=>{const[p,n]=E(!1),[N,s]=E("pdp-zoom"),[m,W]=E(!1),[H,le]=E({x:0,y:0}),[k,ne]=E({x:0,y:0}),[x,X]=E({x:0,y:0}),I=r=>{!p||r.type!=="touchstart"||(le({x:r.touches[0].clientX,y:r.touches[0].clientY}),ne({x:x.x,y:x.y}),W(!0))},J=r=>{var Z;if(!m||r.type!=="touchmove")return;const d=(Z=r.currentTarget)==null?void 0:Z.getBoundingClientRect(),g=(100-100/w)/2,P=r.touches[0].clientX-H.x,a=r.touches[0].clientY-H.y,Y=P*100/(d.width*w),D=a*100/(d.height*w),O=k.x+Y,ie=k.y+D;X({x:Math.max(-g,Math.min(O,g))||0,y:Math.max(-g,Math.min(ie,g))||0}),r.preventDefault()},Q=r=>{var D;const d=(D=r.currentTarget)==null?void 0:D.getBoundingClientRect(),g=(100-100/w)/2;let P;if("touches"in r)P=r.touches[0];else if(r instanceof MouseEvent)P=r;else return;const a=g-(P.clientX-d.left)/d.width*100,Y=g-(P.clientY-d.top)/d.height*100;X({x:Math.max(-g,Math.min(a,g))||0,y:Math.max(-g,Math.min(Y,g))||0})},G=r=>{if(!m){if(p){if(y&&"touches"in r){I(r);return}y||n(!1)}else n(!0),Q(r);r.preventDefault()}},ee=r=>{if(y&&"touches"in r){J(r);return}p&&Q(r)},te=()=>{if(y){W(!1);return}n(!1)},ae=r=>{n(!1),r.stopPropagation()},re=p?`scale(${w}) translateX(${x.x}%) translateY(${x.y}%)`:"none",h=T("PDP.Zoom.Close.label").label,ce=Ee(B.only(i),{draggable:!1,style:{"--transform":re}});return S(()=>{s(p?`pdp-zoom ${y?"pdp-zoom--no-effects":"pdp-zoom--zoomed"}`:"pdp-zoom")},[p,y]),z("figure",{className:N,onClick:G,onMouseMove:ee,onMouseLeave:te,onTouchStart:G,onTouchMove:ee,onTouchEnd:te,children:[ce,y&&p&&C(de,{"aria-label":h,variant:"tertiary",className:"pdp-zoom__close-button",icon:C(Le,{}),onClick:ae})]})};export{He as C,Xe as O,Ye as Z};
package/chunks/date.js ADDED
@@ -0,0 +1 @@
1
+ import{toLanguageTag as n}from"@dropins/tools/lib.js";function a(t,d="en_US"){if(!o(t))throw Error("Invalid date string");return t.split(" ")[1]||(t=`${t} 00:00:00`),new Date(t).toLocaleDateString(n(d)).toString()}function o(t){if(![/^\d{4}-\d{2}-\d{2}$/,/^\d{1,2}\/\d{1,2}\/\d{4}$/,/^\d{2}\/\d{2}\/\d{4}$/,/^\d{4}\/\d{2}\/\d{2}$/,/^\d{1,2}\.\d{1,2}\.\d{4}$/,/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/].some(i=>i.test(t)))return!1;const e=new Date(t);return!isNaN(e.getTime())}export{o as i,a as t};
@@ -0,0 +1,185 @@
1
+ import{events as Z}from"@dropins/tools/event-bus.js";import{Initializer as ae}from"@dropins/tools/lib.js";import{FetchGraphQL as ue}from"@dropins/tools/fetch-graphql.js";import{s as oe,g as se}from"./getProductConfigurationValues.js";function $e(t){const n=new URLSearchParams(window.location.search);Object.entries(t).forEach(([e,i])=>{i===null?n.delete(e):n.set(e,String(i))});let r=window.location.pathname;r+=`?${n.toString()}`,r+=window.location.hash,window.history.replaceState({},"",r)}function le(){const t=new URLSearchParams(window.location.search),n={};return t.forEach((r,e)=>{n[e]=r}),n}function me(t){var n,r,e,i,a,u,o,s,l,m,c,f;return{productId:Number(t==null?void 0:t.externalId),name:t==null?void 0:t.name,sku:(t==null?void 0:t.variantSku)||(t==null?void 0:t.sku),topLevelSku:t==null?void 0:t.sku,specialToDate:void 0,specialFromDate:void 0,newToDate:void 0,newFromDate:void 0,createdAt:void 0,updatedAt:void 0,manufacturer:void 0,countryOfManufacture:void 0,categories:void 0,productType:void 0,pricing:{regularPrice:((r=(n=t==null?void 0:t.prices)==null?void 0:n.regular)==null?void 0:r.amount)||0,minimalPrice:(i=(e=t==null?void 0:t.prices)==null?void 0:e.final)==null?void 0:i.minimumAmount,maximalPrice:(u=(a=t==null?void 0:t.prices)==null?void 0:a.final)==null?void 0:u.maximumAmount,specialPrice:(s=(o=t==null?void 0:t.prices)==null?void 0:o.final)==null?void 0:s.amount,tierPricing:void 0,currencyCode:((m=(l=t==null?void 0:t.prices)==null?void 0:l.final)==null?void 0:m.currency)||"USD"},canonicalUrl:t==null?void 0:t.url,mainImageUrl:(f=(c=t==null?void 0:t.images)==null?void 0:c[0])==null?void 0:f.url}}const ce={PRODUCT_CONTEXT:"productContext"},fe={PRODUCT_PAGE_VIEW:"product-page-view"};function ne(){return window.adobeDataLayer=window.adobeDataLayer||[],window.adobeDataLayer}function de(t,n){const r=ne();r.push({[t]:null}),r.push({[t]:n})}function Pe(t,n){ne().push(e=>{const i=e.getState?e.getState():{};e.push({event:t,eventInfo:{...i,...n}})})}function we(t){const n=me(t);de(ce.PRODUCT_CONTEXT,n),Pe(fe.PRODUCT_PAGE_VIEW)}const Q=new ae({init:async t=>{var i,a,u,o,s,l;const e={...{defaultLocale:"en-US",persistURLParams:!1,acdl:!1,optionsUIDs:((i=le().optionsUIDs)==null?void 0:i.split(","))||((o=(u=(a=t==null?void 0:t.models)==null?void 0:a.ProductDetails)==null?void 0:u.initialData)==null?void 0:o.optionsUIDs)},...t};if(Q.config.setConfig({...e}),e!=null&&e.sku){const m={sku:e.sku,quantity:1,optionsUIDs:e.optionsUIDs};oe(()=>({...m}));const c=((l=(s=e==null?void 0:e.models)==null?void 0:s.ProductDetails)==null?void 0:l.initialData)??await te(e.sku);Z.emit("pdp/data",c),e.acdl&&c&&we(c)}},listeners:()=>[Z.on("locale",()=>{const{sku:t}=Q.config.getConfig();t&&te(t)})]}),P=Q.config,{setEndpoint:Le,setFetchGraphQlHeader:Ge,removeFetchGraphQlHeader:Me,setFetchGraphQlHeaders:Ne,fetchGraphQl:j,getConfig:Qe}=new ue().getMethods();function M(t,n){var i,a,u;const r=t?{name:t.name,sku:t.sku,addToCartAllowed:t.addToCartAllowed,inStock:t.inStock,shortDescription:t.shortDescription,metaDescription:t.metaDescription,metaKeyword:t.metaKeyword,metaTitle:t.metaTitle,description:t.description,images:ye(t),prices:be(t,!!n),attributes:ge(t),options:he(t),optionUIDs:Se(t),url:t.url,urlKey:t.urlKey,externalId:t.externalId,externalParentId:t.externalParentId,variantSku:t.variantSku}:null,e=(u=(a=(i=P.getConfig())==null?void 0:i.models)==null?void 0:a.ProductDetails)==null?void 0:u.transform;return e&&r?e(r):r}function ye(t){var n,r;return(r=(n=t.images)==null?void 0:n.filter(e=>{var i;return!((i=e.roles)!=null&&i.includes("hide_from_pdp"))}))==null?void 0:r.map(e=>(e.url=e.url.replace(/^https?:/,""),e))}function ge(t){var n,r;return(r=(n=t.attributes)==null?void 0:n.filter(({roles:e})=>(e==null?void 0:e.indexOf("visible_in_pdp"))!==-1))==null?void 0:r.map(({label:e,value:i,name:a})=>({id:a,label:e,value:i.toString().split(",").join(", ")}))}function he(t){const{options:n,optionUIDs:r}=t;return n==null?void 0:n.map(({id:e,title:i,required:a,multi:u,values:o})=>{var c,f;const s=(c=o==null?void 0:o[0])==null?void 0:c.__typename;let l=o==null?void 0:o[0].type;const m=((f=o==null?void 0:o[0])==null?void 0:f.__typename)==="ProductViewOptionValueProduct";return l?l=l.replace("COLOR_HEX","color").replace("TEXT","text").replace("IMAGE","image"):l="dropdown",{id:e,type:l,typename:s,label:i,required:a,multiple:u,items:m?De(o,r):xe(o,r,l)}})}function De(t,n){return t==null?void 0:t.map(({id:r,title:e,inStock:i,isDefault:a,product:u})=>({id:r,inStock:i,label:e,selected:(n==null?void 0:n.indexOf(r))>-1||a,value:r,product:u}))}function xe(t,n,r){return t==null?void 0:t.map(({id:e,title:i,inStock:a,value:u})=>({id:e,inStock:a,label:i,selected:(n==null?void 0:n.indexOf(e))>-1,value:(r==null?void 0:r.toLowerCase())==="dropdown"?e:u==null?void 0:u.replace(/^https?:/,"")}))}function be(t,n){var b,K,B,q,H;const{price:r,priceRange:e,options:i,optionUIDs:a}=t;let{__typename:u}=t;function o(){var h;const w=r.regular.amount.value,d=((h=r.final)==null?void 0:h.amount.value)??r.regular.amount.value,g=r.regular.amount.currency==="NONE"?"USD":r==null?void 0:r.regular.amount.currency;return[w,d,d,g]}function s(){var S,C,E,_,T,V,v,p,A,I,F,U;const w=(S=e==null?void 0:e.minimum)==null?void 0:S.final.amount.value,d=(C=e==null?void 0:e.maximum)==null?void 0:C.final.amount.value;let g;((_=(E=e==null?void 0:e.minimum)==null?void 0:E.regular)==null?void 0:_.amount.value)===((V=(T=e==null?void 0:e.maximum)==null?void 0:T.regular)==null?void 0:V.amount.value)&&(g=(p=(v=e==null?void 0:e.minimum)==null?void 0:v.regular)==null?void 0:p.amount.value);const h=((I=(A=e==null?void 0:e.minimum)==null?void 0:A.final)==null?void 0:I.amount.currency)==="NONE"?"USD":(U=(F=e==null?void 0:e.minimum)==null?void 0:F.final)==null?void 0:U.amount.currency;return[g,w,d,h]}function l(){var E,_,T,V,v,p,A,I,F,U,X,z;let w=0,d=0;i==null||i.forEach(O=>{var W;const N=O==null?void 0:O.values;if(N&&Array.isArray(N)){const D=N.map(y=>{var $,L,Y,J;return(J=(Y=(L=($=y==null?void 0:y.product)==null?void 0:$.price)==null?void 0:L.regular)==null?void 0:Y.amount)==null?void 0:J.value}).filter(y=>y!==void 0),G=D.length>0?Math.max(...D):0;w+=G}else w+=0;(W=O==null?void 0:O.values)==null||W.forEach(D=>{var G,y,$,L;a!=null&&a.includes(D.id)&&(d+=(L=($=(y=(G=D==null?void 0:D.product)==null?void 0:G.price)==null?void 0:y.final)==null?void 0:$.amount)==null?void 0:L.value)})});const g=(E=e==null?void 0:e.minimum)==null?void 0:E.final.amount.value,h=(_=e==null?void 0:e.maximum)==null?void 0:_.final.amount.value;let S;((V=(T=e==null?void 0:e.minimum)==null?void 0:T.regular)==null?void 0:V.amount.value)===((p=(v=e==null?void 0:e.maximum)==null?void 0:v.regular)==null?void 0:p.amount.value)&&(S=(I=(A=e==null?void 0:e.minimum)==null?void 0:A.regular)==null?void 0:I.amount.value);const C=((U=(F=e==null?void 0:e.minimum)==null?void 0:F.final)==null?void 0:U.amount.currency)==="NONE"?"USD":(z=(X=e==null?void 0:e.minimum)==null?void 0:X.final)==null?void 0:z.amount.currency;return n&&!a?[S,g,h,C]:w===(e==null?void 0:e.maximum.regular.amount.value)?[d,d,d,C]:[S,g,h,C]}const[m,c,f,x]=u==="SimpleProductView"?o():n?l():s(),k=u==="SimpleProductView"?(b=r==null?void 0:r.roles)==null?void 0:b.includes("visible"):((B=(K=e==null?void 0:e.maximum)==null?void 0:K.roles)==null?void 0:B.includes("visible"))&&((H=(q=e==null?void 0:e.minimum)==null?void 0:q.roles)==null?void 0:H.includes("visible"));return f&&c===f?{regular:{amount:m,currency:x,variant:m&&c!==m?"strikethrough":"default"},final:{amount:f,currency:x,variant:"default"},visible:k}:{final:{minimumAmount:c,maximumAmount:f,currency:x},visible:k}}function Se(t){var r;let{optionUIDs:n}=t;return(r=t==null?void 0:t.options)==null||r.map(({values:e})=>{var a;((a=e==null?void 0:e[0])==null?void 0:a.__typename)==="ProductViewOptionValueProduct"&&!n&&(n=[],e==null||e.map(({id:u,isDefault:o})=>{o&&(n==null?void 0:n.indexOf(u))===-1&&n.push(u)}))}),n}const Ce=`
2
+ fragment ProductOptionFragment on ProductViewOption {
3
+ id
4
+ title
5
+ required
6
+ multi
7
+ values {
8
+ id
9
+ title
10
+ inStock
11
+ __typename
12
+ ... on ProductViewOptionValueProduct {
13
+ title
14
+ quantity
15
+ isDefault
16
+ __typename
17
+ product {
18
+ sku
19
+ shortDescription
20
+ metaDescription
21
+ metaKeyword
22
+ metaTitle
23
+ name
24
+ price {
25
+ final {
26
+ amount {
27
+ value
28
+ currency
29
+ }
30
+ }
31
+ regular {
32
+ amount {
33
+ value
34
+ currency
35
+ }
36
+ }
37
+ roles
38
+ }
39
+ }
40
+ }
41
+ ... on ProductViewOptionValueSwatch {
42
+ id
43
+ title
44
+ type
45
+ value
46
+ inStock
47
+ }
48
+ }
49
+ }
50
+ `,re=`
51
+ fragment ProductFragment on ProductView {
52
+ __typename
53
+ id
54
+ sku
55
+ name
56
+ shortDescription
57
+ metaDescription
58
+ metaKeyword
59
+ metaTitle
60
+ description
61
+ inStock
62
+ addToCartAllowed
63
+ url
64
+ urlKey
65
+ externalId
66
+
67
+ images(roles: []) {
68
+ url
69
+ label
70
+ roles
71
+ }
72
+
73
+ attributes(roles: []) {
74
+ name
75
+ label
76
+ value
77
+ roles
78
+ }
79
+
80
+ ... on SimpleProductView {
81
+ price {
82
+ roles
83
+
84
+ regular {
85
+ amount {
86
+ value
87
+ currency
88
+ }
89
+ }
90
+
91
+ final {
92
+ amount {
93
+ value
94
+ currency
95
+ }
96
+ }
97
+ }
98
+ }
99
+
100
+
101
+ ... on ComplexProductView {
102
+ options {
103
+ ...ProductOptionFragment
104
+ }
105
+
106
+ priceRange {
107
+ maximum {
108
+ final {
109
+ amount {
110
+ value
111
+ currency
112
+ }
113
+ }
114
+ regular {
115
+ amount {
116
+ value
117
+ currency
118
+ }
119
+ }
120
+ roles
121
+ }
122
+ minimum {
123
+ final {
124
+ amount {
125
+ value
126
+ currency
127
+ }
128
+ }
129
+ regular {
130
+ amount {
131
+ value
132
+ currency
133
+ }
134
+ }
135
+ roles
136
+ }
137
+ }
138
+ }
139
+ }
140
+
141
+ ${Ce}
142
+ `,ie=`
143
+ query GET_PRODUCT_DATA($skus: [String]) {
144
+ products(skus: $skus) {
145
+ ...ProductFragment
146
+ }
147
+ }
148
+
149
+ ${re}
150
+ `;function R(t){return t.some(n=>(n==null?void 0:n.__typename)==="ProductViewOptionValueProduct")}const Oe=async t=>{var a,u,o,s,l,m;const n=(o=(u=(a=P==null?void 0:P.getConfig())==null?void 0:a.models)==null?void 0:u.ProductDetails)==null?void 0:o.initialData;let r=(s=n==null?void 0:n.options)==null?void 0:s.some(c=>R(c.values));if(n)return M(n,!!r);const{data:e}=await j(ie,{method:"GET",variables:{skus:[t]}}),i=(l=e==null?void 0:e.products)==null?void 0:l[0];return r=(m=i==null?void 0:i.options)==null?void 0:m.some(c=>R(c.values)),M(i,!!r)},ke=`
151
+ query REFINE_PRODUCT_QUERY(
152
+ $optionIds: [String!]!
153
+ $sku: String!
154
+ ) {
155
+ # Refined Product
156
+ refineProduct(
157
+ optionIds: $optionIds
158
+ sku: $sku
159
+ ) {
160
+ ...ProductFragment
161
+ }
162
+
163
+ # Parent Product
164
+ products(skus: [$sku]) {
165
+ ...ProductFragment
166
+ }
167
+
168
+ # %extendedPlaceholder%
169
+ }
170
+
171
+ ${re}
172
+ `;async function ee(t,n,r){var o;if(r)return{...(o=(await j(ie,{method:"GET",variables:{skus:[t]}})).data)==null?void 0:o.products[0],optionUIDs:n};const e=_e(n),i=Te(e,t),a=ke.replace("# %extendedPlaceholder%",i),{data:u}=await j(a,{method:"GET",variables:{optionIds:n,sku:t}});return u}const Ee=async(t,n,r,e)=>{var f,x,k;let i;if(i=await ee(t,n,e),!i)return null;if(e)return M({...i,optionUIDs:n},!0);let{products:a,refineProduct:u,...o}=i;const s=a==null?void 0:a[0],l=Ve(Object.values(o),s.options,r);if(r!=null&&r.length&&u===null){n=ve(l,n,r);const b=await ee(t,n);u=b==null?void 0:b.refineProduct}const m=M({...u||s,sku:s.sku,name:s.name,externalParentId:s==null?void 0:s.externalId,options:l,optionUIDs:n,variantSku:(u==null?void 0:u.__typename)==="SimpleProductView"?u==null?void 0:u.sku:void 0}),c=(k=(x=(f=P==null?void 0:P.getConfig())==null?void 0:f.models)==null?void 0:x.ProductDetails)==null?void 0:k.fallbackData;return c?c(s,m):m};function _e(t){if(t.length<2)return[t];const n=[];return t.forEach(r=>{const e=[];t.forEach(i=>{r!==i&&e.push(i)}),n.push(e)}),n}function Te(t,n){return t.map((r,e)=>`
173
+ ProductOption${e}: refineProduct(
174
+ optionIds: [
175
+ ${r.map(i=>`"${i}"`).join(", ")}
176
+ ]
177
+ sku: "${n}"
178
+ ) {
179
+ ... on ComplexProductView {
180
+ options {
181
+ ...ProductOptionFragment
182
+ }
183
+ }
184
+ }
185
+ `).join("")}function Ve(t,n,r){const e=Object.values(t).filter(a=>!!a).reduce((a,u)=>u.options?[...a,...u.options]:[...a],[]),i=new Map(n.map(a=>[a.id,a]));return e.forEach(a=>{r!=null&&r.includes(a.id)||i.set(a.id,a)}),[...i.values()]}function ve(t,n,r){const e=[];let i;return t.forEach(a=>{var u,o,s,l;r.includes(a.id)?i=((o=(u=a.values)==null?void 0:u.find(m=>n.includes(m==null?void 0:m.id)))==null?void 0:o.id)||((s=a.values[0])==null?void 0:s.id):i=(l=a.values[0])==null?void 0:l.id,e.push(i)}),e}const te=async(t,n)=>{var s,l;const{models:r,anchors:e}=P.getConfig(),i=(n==null?void 0:n.optionsUIDs)??((s=se())==null?void 0:s.optionsUIDs)??P.getConfig().optionsUIDs,a=(l=r==null?void 0:r.ProductDetails)==null?void 0:l.initialData,u=pe(a);return i!=null&&i.length?await Ee(t,i,(n==null?void 0:n.anchors)??e,u):await Oe(t)};function pe(t){var n;return t?(n=t==null?void 0:t.options)==null?void 0:n.some(r=>{var e;return(e=r==null?void 0:r.values)==null?void 0:e.some(i=>i.__typename==="ProductViewOptionValueProduct")}):!1}export{Ge as a,Ne as b,P as c,Oe as d,Ee as e,j as f,Qe as g,te as h,Q as i,$e as j,we as p,Me as r,Le as s};
@@ -0,0 +1 @@
1
+ import{events as e}from"@dropins/tools/event-bus.js";const s=async()=>e._lastEvent["pdp/data"]?Promise.resolve(e._lastEvent["pdp/data"].payload):new Promise(a=>{const t=e.on("pdp/data",r=>{a(r),t==null||t.off()},{eager:!0})});export{s as g};
@@ -0,0 +1 @@
1
+ import{events as e}from"@dropins/tools/event-bus.js";const r=t=>{const o=n(),s=t(o);e.emit("pdp/values",{...s})},n=()=>{var t;return((t=e._lastEvent["pdp/values"])==null?void 0:t.payload)??null};export{n as g,r as s};
@@ -0,0 +1 @@
1
+ import{events as o}from"@dropins/tools/event-bus.js";const r=t=>{const n=a(),i=t(n);o.emit("pdp/valid",i)},a=()=>{var t;return((t=o._lastEvent["pdp/valid"])==null?void 0:t.payload)??null};export{a as i,r as s};
@@ -0,0 +1,9 @@
1
+ import { FunctionComponent, VNode } from 'preact';
2
+ import { HTMLAttributes } from 'preact/compat';
3
+
4
+ export interface HeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
5
+ title: VNode;
6
+ sku: VNode;
7
+ }
8
+ export declare const Header: FunctionComponent<HeaderProps>;
9
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './Header';
2
+ export { Header as default } from './Header';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { FunctionComponent, VNode } from 'preact';
2
+ import { HTMLAttributes } from 'preact/compat';
3
+
4
+ export interface PriceProps extends HTMLAttributes<HTMLDivElement> {
5
+ price?: VNode;
6
+ specialPrice?: VNode;
7
+ }
8
+ export declare const Price: FunctionComponent<PriceProps>;
9
+ //# sourceMappingURL=Price.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './Price';
2
+ export { Price as default } from './Price';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -26,6 +26,7 @@ type Selection = {
26
26
  export interface SwatchesProps extends HTMLAttributes<HTMLDivElement> {
27
27
  options: Array<Option>;
28
28
  hideSelectedValue?: boolean;
29
+ disablePreselections?: boolean;
29
30
  defaultOptions?: string[];
30
31
  selectionsToUpdate?: Option[];
31
32
  onValues?: (uids: Selection, current: string) => void;
@@ -20,4 +20,6 @@ export * from './PriceRange';
20
20
  export * from './Overlay';
21
21
  export * from './Swatches';
22
22
  export * from './Zoom';
23
+ export * from './Header';
24
+ export * from './Price';
23
25
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,8 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container } from '@dropins/tools/types/elsie/src/lib';
3
+ import { ProductModel } from '../../data/models';
4
+
5
+ export interface ProductAttributesProps extends HTMLAttributes<HTMLDivElement> {
6
+ }
7
+ export declare const ProductAttributes: Container<ProductAttributesProps, ProductModel | null>;
8
+ //# sourceMappingURL=ProductAttributes.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductAttributes';
2
+ export { ProductAttributes as default } from './ProductAttributes';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductAttributes/index'
2
+ import _default from './ProductAttributes/index'
3
+ export default _default
@@ -0,0 +1 @@
1
+ import{jsxs as a,jsx as i}from"@dropins/tools/preact-jsx-runtime.js";import{useState as n,useEffect as b}from"@dropins/tools/preact-compat.js";import{classes as h}from"@dropins/tools/lib.js";import{events as l}from"@dropins/tools/event-bus.js";import{i as P,t as S}from"../chunks/date.js";import{g as x}from"../chunks/getFetchedProductData.js";import{useText as L}from"@dropins/tools/i18n.js";import{c as j}from"../chunks/fetchPDPData.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/getProductConfigurationValues.js";const I=({initialData:c=null,children:N,...r})=>{var s;const m=L("PDP.Product.Details.label").label,{defaultLocale:f="en-US"}=j.getConfig(),[u,p]=n(f),[o,d]=n(c);return b(()=>{const e=l.on("pdp/data",d),t=l.on("locale",p);return()=>{e==null||e.off(),t==null||t.off()}},[]),o?a("div",{...r,className:h(["pdp-attributes",r.className]),children:[m,i("ul",{children:(s=o==null?void 0:o.attributes)==null?void 0:s.map(({label:e,value:t},g)=>{const D=P(t)?S(t,u):t.toString();return a("li",{children:[e,": ",i("span",{dangerouslySetInnerHTML:{__html:D}})]},g)})})]}):null};I.getInitialData=x;export{I as ProductAttributes,I as default};
@@ -0,0 +1,8 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container } from '@dropins/tools/types/elsie/src/lib';
3
+ import { ProductModel } from '../../data/models';
4
+
5
+ export interface ProductDescriptionProps extends HTMLAttributes<HTMLDivElement> {
6
+ }
7
+ export declare const ProductDescription: Container<ProductDescriptionProps, ProductModel | null>;
8
+ //# sourceMappingURL=ProductDescription.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductDescription';
2
+ export { ProductDescription as default } from './ProductDescription';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductDescription/index'
2
+ import _default from './ProductDescription/index'
3
+ export default _default
@@ -0,0 +1 @@
1
+ import{jsx as n}from"@dropins/tools/preact-jsx-runtime.js";import{useState as i,useEffect as a}from"@dropins/tools/preact-compat.js";import{classes as c}from"@dropins/tools/lib.js";import{events as m}from"@dropins/tools/event-bus.js";import{g as l}from"../chunks/getFetchedProductData.js";const f=({initialData:o=null,children:p,...r})=>{const[t,s]=i(o);return a(()=>{const e=m.on("pdp/data",s);return()=>{e==null||e.off()}},[]),t?n("div",{dangerouslySetInnerHTML:{__html:(t==null?void 0:t.description)??""},...r,className:c(["pdp-description",r.className])}):null};f.getInitialData=l;export{f as ProductDescription,f as default};
@@ -1,17 +1,12 @@
1
1
  import { HTMLAttributes } from 'preact/compat';
2
2
  import { Container, SlotProps, SlotMethod, ResolveImageUrlOptions } from '@dropins/tools/types/elsie/src/lib';
3
3
  import { ButtonProps } from '@dropins/tools/types/elsie/src/components';
4
- import { ProductModel } from '../../data/models';
4
+ import { ProductModel, ValuesModel } from '../../data/models';
5
5
 
6
6
  type IconType = keyof typeof import('@dropins/tools/types/elsie/src/icons');
7
- export type Values = {
8
- sku: string;
9
- quantity: number;
10
- optionsUIDs?: string[];
11
- };
12
7
  type DefaultSlotContext = {
13
8
  data: ProductModel | null;
14
- values: Values;
9
+ values: ValuesModel;
15
10
  valid: boolean;
16
11
  };
17
12
  export type CarouselConfig = {
@@ -73,9 +68,10 @@ export interface ProductDetailsProps extends HTMLAttributes<HTMLDivElement> {
73
68
  carousel?: CarouselConfig;
74
69
  optionsConfig?: OptionsConfig;
75
70
  useACDL?: boolean;
76
- onAddToCart?: (values: Values) => void;
71
+ onAddToCart?: (values: ValuesModel) => void;
77
72
  zoomType?: 'zoom' | 'overlay';
78
73
  closeButton?: boolean;
74
+ disableDropdownPreselection?: boolean;
79
75
  }
80
76
  export declare const ProductDetails: Container<ProductDetailsProps, ProductModel | null>;
81
77
  export {};
@@ -1 +1 @@
1
- import{jsxs as F,jsx as r,Fragment as Ae}from"@dropins/tools/preact-jsx-runtime.js";import*as fe from"@dropins/tools/preact-compat.js";import{useState as K,Children as ue,useRef as Le,useMemo as Ne,useEffect as ee,useCallback as ce}from"@dropins/tools/preact-compat.js";import{debounce as xe,classes as B,VComponent as Y,toLanguageTag as Me,Slot as J}from"@dropins/tools/lib.js";import{Button as we,Icon as Se,Price as ge,Picker as qe,ColorSwatch as je,ImageSwatch as Xe,TextSwatch as Fe,Incrementer as Ge,Breadcrumbs as De,Image as Oe}from"@dropins/tools/components.js";import{useText as Z}from"@dropins/tools/i18n.js";import{cloneElement as Ye}from"@dropins/tools/preact.js";import{c as Te,d as Be}from"../chunks/getRefinedProduct.js";import{events as ke}from"@dropins/tools/event-bus.js";import{c as We}from"../chunks/initialize.js";import"@dropins/tools/fetch-graphql.js";const Ke=t=>fe.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},fe.createElement("path",{d:"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"round"})),Ve=t=>fe.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},fe.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M18.3599 5.64001L5.62988 18.37",stroke:"currentColor"}),fe.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M18.3599 18.37L5.62988 5.64001",stroke:"currentColor"})),Ze=24,Ee=16,ve=2,Qe="32";var ze=(t=>(t[t.small=16]="small",t[t.medium=24]="medium",t[t.large=64]="large",t))(ze||{});const ye=({show:t=1,scrollbar:o=!1,peak:u=!1,arrows:p=!1,controls:s="dots",arrowsOnMainImage:f=!1,loop:d=!1,gap:v=null,direction:l="horizontal",width:G="100%",height:c="100%",defaultIndex:m=0,className:W,children:$,thumbnails:j=null,isZoomed:ne,...b})=>{const P=Z("PDP.Carousel.label").label,n=Z("PDP.Carousel.Slide.label").label,y=Z("PDP.Carousel.Previous.label").label,E=Z("PDP.Carousel.Next.label").label,I=Z("PDP.Carousel.Controls.label").label,A=Z("PDP.Carousel.Controls.Button.label").label,[N,me]=K(()=>$e(t)),e=Math.ceil(ue.count($)/N),M=u?Ze:0,D=v?ze[v]:0,q=ue.count($)%N,[L,te]=K(d?C()?m-1:m+1:m),x=Le([]),[re,oe]=K(0),[ie,be]=K(0),_e=Ne(()=>ue.toArray(j),[j]),T=Ne(()=>{const a=ue.toArray($).reduce((h,k,S)=>S%N===0?[...h,[k]]:[...h.slice(0,-1),[...h[h.length-1],k]],[]);return!d||a.length===1?a:d&&ue.count($)%N===0?[a[e-1]].concat(a).concat([a[0],a[1]]):[ue.toArray($).slice(-N)].concat(a).concat([a[0],a[1]])},[$,N,e,d]),le=Le(null),se=Le(null),g=s==="thumbnailsRow"||s==="thumbnailsColumn";ee(()=>{const a=document.body,h=xe(()=>{var O,ae;oe(((O=le.current)==null?void 0:O.offsetWidth)??0),be(((ae=le.current)==null?void 0:ae.offsetHeight)??0);const S=window.innerWidth,z=$e(t,S);z!==N&&me(z)},50),k=new ResizeObserver(h);return k.observe(a),()=>{k.unobserve(a)}},[N,t]);const Q=ce(a=>{const h=d?a-1:a,k=x==null?void 0:x.current[0],S=(k==null?void 0:k.offsetWidth)+Ee,z=(k==null?void 0:k.offsetHeight)+Ee,O=se.current,ae=s==="thumbnailsRow",Pe=s==="thumbnailsColumn",he=ae?O==null?void 0:O.offsetWidth:O==null?void 0:O.offsetHeight,X=ae?S:z;(ae||Pe)&&he&&(X*(h+1)>he&&(O.style.scrollBehavior="smooth",ae?O.scrollLeft=C()?O.scrollWidth-O.clientWidth-(h+ve)*X:(h+ve)*X:O.scrollTop=(h+ve)*X),(C()&&(ae?O.scrollLeft:O.scrollTop)<=-X*h||!C()&&(ae?O.scrollLeft:O.scrollTop)>X*h)&&(O.style.scrollBehavior="smooth",ae?O.scrollLeft=C()?-(h-ve)*X:(h-ve)*X:O.scrollTop=(h-ve)*X))},[s,d]);ee(()=>{Q(L)},[L,Q]);const U=ce((a,h,k)=>{g&&Q(a);const S=le.current,z=M?S.offsetWidth-M:S.offsetWidth-M+D;if(!Array.from(S.querySelectorAll("[data-index]")).filter(he=>{const X=Number(he.getAttribute("data-index"));return!isNaN(X)&&X>-1})[a])return;if(k){const he=a===0?e:0,X=z*(e+(q||N)/N);if(C()){if(S.scrollLeft<=0&&S.scrollLeft>-(z-5)){U(1,!0);return}if(S.scrollLeft<z-X&&S.scrollLeft>=-X){U(e,!0);return}S.style.scrollBehavior="auto",S.scrollLeft=he===0?0:-X,U(he===0?1:e,!0)}else{if(S.scrollLeft>=0&&S.scrollLeft<z-5){U(1,!0);return}if(S.scrollLeft>X-z&&S.scrollLeft<=X){U(e,!0);return}S.style.scrollBehavior="auto",S.scrollLeft=he===0?0:X,U(he===0?1:e,!0);return}}const Pe=(S.offsetWidth-D)/N*T[a].length-M;S.style.scrollBehavior=h?"smooth":"auto",S.scrollLeft=C()?-(T[a].length===N?z*a:z*(a-1)-Pe):T[a].length===N?z*a:z*(a-1)+Pe},[D,e,M,N,q,T,Q,s]),pe=ce(()=>{if(d){const h=L-1;U(h,!0,C()?L===e-1:L===1);return}const a=L<=0?0:L-1;U(a,!0)},[L,U,d]),i=ce(()=>{const a=T.length-1;if(d){const k=L+1;U(k,!0,C()?L===0:L===e);return}const h=L>=a?a:L+1;U(h,!0)},[T.length,d,L,U,e]);ee(()=>{const a=h=>{h.key==="ArrowLeft"&&(h.preventDefault(),C()?i():pe()),h.key==="ArrowRight"&&(h.preventDefault(),C()?pe():i())};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[i,pe]),ee(()=>{U(d?m+1:m,!1)},[m,U,d]);const _=xe(()=>{const a=le.current,h=M?a.offsetWidth-M:a.offsetWidth-M+D,k=Math.abs(a.scrollLeft)/h,S=Math.abs(Math.round(k)-k<1?Math.round(k):Math.ceil(k));if(g&&Q(S),d){const z=h*(e+(q||N)/N),O=C()?-a.scrollLeft:a.scrollLeft;if(Math.ceil(Math.abs(O))>=Math.ceil(z)-5){a.style.scrollBehavior="auto",a.scrollLeft=C()?-a.offsetWidth+(Math.ceil(O)-Math.ceil(z)-M):a.offsetWidth+(Math.ceil(O)-Math.ceil(z)-M);return}if(Math.abs(O)===0){a.style.scrollBehavior="auto",a.scrollLeft=C()?-(z-a.offsetWidth+M):z-a.offsetWidth+M;return}}L!==S&&te(S)},100);ee(()=>{const a=le.current;return a==null||a.addEventListener("scroll",_),()=>{a==null||a.removeEventListener("scroll",_)}},[_]);const w=(a,h,k)=>r(we,{className:B([["pdp-carousel__button",!a],[`pdp-carousel__button--${h}`,!a],[`pdp-carousel__button--${s}`,a]]),style:{"--height":`${ie}px`},variant:"tertiary","aria-label":h==="next"?E:y,onClick:k,disabled:d?!1:h==="next"?L>=T.length-1:L<1,children:r(Se,{className:B([["pdp-carousel__button__icon",!a],[`pdp-carousel__button__icon--${h}`,!a],[`pdp-carousel__button__icon--${s}--${h}`,a]]),size:Qe,source:Ke})}),V=p&&T.length!=1&&w(g,"prev",pe),H=p&&T.length!=1&&w(g,"next",i),R=p&&T.length!=1&&w(!1,"prev",pe),de=p&&T.length!=1&&w(!1,"next",i);return F("div",{role:"region","aria-roledescription":P,className:B(["pdp-carousel",["pdp-carousel--main-image-controls",f],["pdp-carousel--arrows",p&&!g],[`pdp-carousel--${s}`,g],W]),style:{"--flex-carousel":s==="thumbnailsColumn"?"row-reverse":"column","--gap":g?"0":"var(--spacing-small)","--width":G},...b,children:[r("div",{ref:le,className:B(["pdp-carousel__wrapper",`pdp-carousel__wrapper--${l}`,["pdp-carousel__wrapper--scrollbar",o],["pdp-carousel__wrapper--peak",u]]),style:{"--total-width":s==="thumbnailsColumn"?"81.6%":"100%","--height":s==="thumbnailsColumn"?"auto":c,"--gap":v?`var(--spacing-${v})`:"0px","--per-page":N},tabIndex:0,children:T.map((a,h)=>{const k=a.length<N;return r("div",{role:"group","aria-roledescription":n,"data-index":h,className:B(["pdp-carousel__slide",`pdp-carousel__slide--${l}`,["pdp-carousel__slide--active",L===h],["pdp-carousel__slide--orphan",k]]),style:{"--length":a.length},children:a},h)})}),!g&&F(Ae,{children:[V,H]}),g&&f&&F(Ae,{children:[R,de]}),s&&T.length!=1&&F("div",{className:B([[`pdp-carousel__controls__container--${s}`,g],["pdp-carousel__controls__container--no-arrows",!p||f]]),style:{"--width":s==="thumbnailsRow"?`${re}px`:G,"--height":`${ie}px`,"--nr-thumbnails":_e.length},children:[(g||ne)&&!f&&V,r("div",{ref:se,className:B([[`pdp-carousel__controls__wrapper--${s}`,g],["pdp-carousel__controls__wrapper",g]]),children:r("div",{role:"group","aria-label":I,className:B(["pdp-carousel__controls",[`pdp-carousel__controls--${s}`,g]]),children:(d?T.slice(0,e):T).map((a,h)=>{const k=d?e:T.length,S=d?L-1===h:L===h;return g?F("label",{className:B(["pdp-carousel__thumbnail__container"]),ref:z=>{z&&(x.current[h]=z)},children:[r("input",{type:"radio",name:"carousel-thumbnails","aria-label":A.replace("{key}",String(h+1)).replace("{total}",String(k)),checked:S&&re!==0,onChange:()=>{U(d?h+1:h,!0)},...b,className:B(["pdp-carousel__thumbnail",["pdp-carousel__thumbnail--selected",S&&re!==0]])}),r("span",{className:B(["pdp-carousel__thumbnail__span"]),children:_e[h]})]},h):r("button",{"aria-label":A.replace("{key}",String(h+1)).replace("{total}",String(k)),onClick:()=>{U(d?h+1:h,!0)},className:B(["pdp-carousel__controls__button",["pdp-carousel__controls__button--active",S]])},h)})})}),(g||ne)&&!f&&H]})]})};function $e(t,o=0){if(typeof t=="number")return t;const{small:u,medium:p,large:s}=t,d=[{breakpoint:1024,value:s},{breakpoint:786,value:p},{breakpoint:0,value:u}].find(({breakpoint:v})=>o>v);return d?d.value:u}function C(){return document.documentElement.dir==="rtl"}const Je=({title:t,breadcrumbs:o,galleryContent:u,infoContent:p,productContent:s,sku:f,outOfStock:d,shortDescription:v,description:l,attributes:G,images:c,options:m,price:W,specialPrice:$,className:j,children:ne,quantity:b,actions:P,carouselConfig:n,zoomType:y="overlay",closeButton:E=!0,...I})=>{var te,x,re,oe,ie,be,_e,T,le;const A=Z("PDP.Product.RegularPrice.label").label,N=Z("PDP.Product.SpecialPrice.label").label,me=Z("PDP.Product.OutOfStock.label").label,e=Z("PDP.Product.Image.label").label,[M,D]=K(null),q=c!=null&&c.length?c.map((se,g)=>{var U;const Q=((U=t==null?void 0:t.props)==null?void 0:U.children)&&(e==null?void 0:e.replace("{product}",t.props.children.toString()).replace("{key}",String(g+1)).replace("{total}",String(c.length)));return y==="zoom"?r(at,{closeButton:E,children:r(Y,{node:se,loading:g===0?"eager":"lazy",alt:Q},g)}):r(Y,{node:se,loading:g===0?"eager":"lazy",alt:Q,onClick:()=>D(g)},g)}):r("img",{src:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",className:"pdp-product__images__placeholder","aria-hidden":!0}),L=(te=n==null?void 0:n.thumbnails)!=null&&te.length?n.thumbnails.map((se,g)=>{var Q;return r(Y,{node:se,loading:(n==null?void 0:n.thumbnailsLoadingMode)||"lazy",alt:((Q=t==null?void 0:t.props)==null?void 0:Q.children)&&(e==null?void 0:e.replace("{product}",t.props.children.toString()).replace("{key}",String(g+1)).replace("{total}",String(c.length)))},g)}):r("img",{src:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",className:"pdp-product__images__placeholder","aria-hidden":!0});return F("div",{...I,className:B(["pdp-product",j]),children:[o&&r(Y,{node:o,className:"pdp-product__breadcrumbs"}),F("div",{className:"pdp-product__column-container pdp-product__gallery-column",children:[r("div",{className:"pdp-product__column-body",children:(x=n==null?void 0:n.controls)!=null&&x.desktop?r(ye,{className:"pdp-product__overlay__carousel",arrows:(c==null?void 0:c.length)>1,controls:(c==null?void 0:c.length)>1?n.controls.desktop:"dots",arrowsOnMainImage:n==null?void 0:n.arrowsOnMainImage,loop:(n==null?void 0:n.loopable)&&(c==null?void 0:c.length)>1,peak:((re=n==null?void 0:n.thumbnails)==null?void 0:re.length)>1&&((oe=n==null?void 0:n.peak)==null?void 0:oe.desktop)||!1,gap:(n==null?void 0:n.gap)||null,width:"100%",height:"100%",defaultIndex:M||0,thumbnails:L,children:q}):r(Ce,{className:"pdp-product__images",gap:"small",children:q})}),u&&r(Y,{node:u,className:"pdp-product__gallery-content"})]}),F("div",{className:"pdp-product__column-container pdp-product__content-column",children:[F("div",{className:"pdp-product__column-body",children:[F("div",{className:"pdp-product__header",children:[t&&r(Y,{node:t,className:"pdp-product__title"}),f&&r(Y,{node:f,className:"pdp-product__sku"})]}),F("div",{className:"pdp-product__prices",children:[$&&r(Y,{node:$,className:B(["pdp-product__price-special","pdp-product__price"]),"aria-label":N,role:"text"}),W&&r(Y,{node:W,className:B(["pdp-product__price-regular","pdp-product__price--grey"]),"aria-label":A,role:"text"})]}),(ie=n==null?void 0:n.controls)!=null&&ie.mobile&&((be=n==null?void 0:n.controls)==null?void 0:be.mobile)==="thumbnailsRow"?r(ye,{className:"pdp-product__images pdp-product__images--carousel pdp-product__images--carousel--thumbnails",width:"100%",height:"auto",arrows:(c==null?void 0:c.length)>1,controls:(c==null?void 0:c.length)>1?"thumbnailsRow":null,loop:(n==null?void 0:n.loopable)&&(c==null?void 0:c.length)>1,peak:((_e=n==null?void 0:n.thumbnails)==null?void 0:_e.length)>1&&((T=n==null?void 0:n.peak)==null?void 0:T.mobile)||!1,gap:(n==null?void 0:n.gap)||null,thumbnails:L,children:q}):r(ye,{className:"pdp-product__images pdp-product__images--carousel",peak:((le=n==null?void 0:n.peak)==null?void 0:le.mobile)&&(c==null?void 0:c.length)>1,gap:(n==null?void 0:n.gap)||null,width:"100%",height:"auto",arrows:(c==null?void 0:c.length)>1,controls:(c==null?void 0:c.length)>1?"dots":null,loop:(n==null?void 0:n.loopable)&&(c==null?void 0:c.length)>1,children:q}),F("div",{className:B(["pdp-product__actions",["pdp-product__actions--out-of-stock",d]]),children:[d&&r("div",{className:"pdp-product__out-of-stock__text",children:me}),m&&r(Y,{node:m,className:B(["pdp-product__options"])}),b&&r("div",{className:"pdp-product__quantity",children:r(Y,{node:b})}),P&&r(Y,{node:P,className:B(["pdp-product__buttons"])})]}),v&&r(Y,{node:v,className:B(["pdp-product__short_description"])}),l&&r(Y,{node:l,className:B(["pdp-product__description"])}),G?r("div",{className:"pdp-product__attributes",children:G}):null]}),p&&r(Y,{node:p,className:"pdp-product__info-content"})]}),s&&r(Y,{node:s,className:"pdp-product__content"}),M===null?null:r(et,{className:"pdp-product__overlay",onClose:()=>D(null),centered:!0,children:r(ye,{className:"pdp-product__overlay__carousel",arrows:(c==null?void 0:c.length)>1,width:"100%",height:"100%",defaultIndex:M||0,loop:(n==null?void 0:n.loopable)&&(c==null?void 0:c.length)>1,controls:(c==null?void 0:c.length)>1?"dots":null,isZoomed:!0,children:q})})]})},Ce=({children:t,gap:o=null,className:u,style:p,...s})=>{const f=ue.count(t);return r("div",{...s,className:B(["pdp-gallery-grid",u]),style:{"--gap":o?`var(--spacing-${o})`:"0px",...p},children:ue.map(t,(d,v)=>r("div",{className:"pdp-gallery-grid__item",children:r(Y,{node:d,loading:v===0?"eager":"lazy"},d.props.src)},f+v))})},Ie=({amount:t,currency:o,locale:u,variant:p,sale:s,minimumAmount:f,maximumAmount:d,className:v,...l})=>r(Ae,{children:t||f===d?r("div",{className:"pdp-price-range",...l,children:r(ge,{amount:t||f,currency:o,locale:u,variant:p,sale:s,className:v})}):F("div",{className:"pdp-price-range",...l,children:[r(ge,{amount:f,currency:o,locale:u,className:v}),r("span",{className:"pdp-price-range__label",children:"-"}),r(ge,{amount:d,currency:o,locale:u,className:v})]})}),et=({centered:t,onClose:o,className:u,children:p,...s})=>{const f=Z("PDP.Overlay.Close.label").label,d=ce(()=>{o==null||o()},[o]);return ee(()=>{const v=l=>{l.key==="Escape"&&d()};return document.addEventListener("keydown",v),()=>{document.removeEventListener("keydown",v)}},[d]),ee(()=>{const v=document.scrollingElement,l=v.style.overflow;return v.style.overflow="hidden",()=>{v.style.overflow=l}},[]),F("div",{...s,className:B(["pdp-overlay",["pdp-overlay--centered",t],u]),children:[r("div",{className:"pdp-overlay__content",children:p}),r(we,{"aria-label":f,variant:"tertiary",className:"pdp-overlay__close-button",onClick:d,icon:r(Ve,{})})]})},tt=["text","image","color","dropdown"],nt=t=>t.map(o=>({...o,text:o.label,disabled:!o.inStock}));function rt(t,o){return t.reduce((u,p)=>{const s=o==null?void 0:o.find(d=>d.items.find(v=>v.id===p));if(!s)return u;const f=s.items.find(d=>d.id===p);return{...u,[s.id]:{label:f.label,value:f.id}}},{})}const lt=({options:t,hideSelectedValue:o,selectedUIDs:u,onValues:p,onErrors:s,defaultOptions:f,selectionsToUpdate:d,className:v,children:l,...G})=>{const c=Z("PDP.Swatches.Required.label").label,[m,W]=K(()=>t==null?void 0:t.reduce((P,n)=>{const{items:y}=n,E=y==null?void 0:y.find(A=>f==null?void 0:f.includes(A.id)),I=y==null?void 0:y.find(A=>A.selected);return E?{...P,[n.id]:{label:E.label,value:E.id}}:I?{...P,[n.id]:{label:I.label,value:I.id}}:P},{}));ee(()=>{if(u){const b=rt(u,t);if(JSON.stringify(b)===JSON.stringify(m))return;$(Object.keys(b)[0],b[Object.keys(b)[0]].label,u[0])}},[u]),ee(()=>{d==null||d.forEach(b=>{W(P=>{var E;const n=(E=b==null?void 0:b.items)==null?void 0:E.find(I=>I.selected);return n?{...P,[b.id]:{label:n==null?void 0:n.label,value:n==null?void 0:n.id}}:P})})},[d,W]),Ne(()=>{const b=t==null?void 0:t.reduce((P,n)=>{var E;let y=!1;return(E=n==null?void 0:n.items)==null||E.forEach(I=>{var N;((N=m[n.id])==null?void 0:N.value)===I.id&&(y=!0)}),n.required&&!y&&(P[n.id]=c),P},{});return s==null||s(b),b},[m]);const $=ce((b,P,n)=>{W(y=>{const E={...y,[b]:{label:P,value:n}};return p==null||p(E,n),E})},[p]),j=(b,P)=>{var y;const n=((y=P.selectedOptions[0])==null?void 0:y.label)??"";$(b,n,P.value)},ne=ce(({items:b,id:P,required:n,type:y,selected:E,label:I})=>(b==null?void 0:b.length)>0&&r("div",{className:B(["pdp-swatches__options"]),children:(y==null?void 0:y.toLowerCase())==="dropdown"?r(qe,{"aria-label":I,handleSelect:A=>j(P,A.target),options:nt(b),value:E}):b==null?void 0:b.map(A=>{const N={key:A.id,id:A.id,name:P,value:A.value,label:A.label,groupAriaLabel:I,selected:E===A.id,outOfStock:!A.inStock,required:n===null?!0:n,onValue:()=>{$(P,A.label,A.id)}};switch(y){case"text":return r(Fe,{...N,label:A.label});case"image":return r(Xe,{...N,src:A.value,alt:A.label});case"color":return r(je,{...N,size:"large",color:A.value});default:return console.warn(`Invalid swatch type ${y}`),null}})}),[$]);return r("div",{...G,className:B(["pdp-swatches",v]),children:t==null?void 0:t.map(({type:b,label:P,id:n,multiple:y,required:E,items:I})=>{var A;return tt.includes(b)||console.warn(`Invalid swatch type ${b}`),y&&console.warn("Multiple selection swatches are not currently supported."),F("div",{id:`swatch-item-${n}`,"data-slot-key":`product-swatch--${n}`,className:"pdp-swatches__field",children:[r("div",{className:"pdp-swatches__field__label",children:m[n]?o?`${P}`:`${P}: ${m[n].label}`:P}),r(ne,{id:n,type:b,required:E,items:I,label:P,selected:(A=m[n])==null?void 0:A.value})]},`swatch-item-${n}`)})})},at=({children:t,scale:o=2,closeButton:u=!0})=>{const[p,s]=K(!1),[f,d]=K("pdp-zoom"),[v,l]=K(!1),[G,c]=K({x:0,y:0}),[m,W]=K({x:0,y:0}),[$,j]=K({x:0,y:0}),ne=e=>{!p||e.type!=="touchstart"||(c({x:e.touches[0].clientX,y:e.touches[0].clientY}),W({x:$.x,y:$.y}),l(!0))},b=e=>{var ie;if(!v||e.type!=="touchmove")return;const M=(ie=e.currentTarget)==null?void 0:ie.getBoundingClientRect(),D=(100-100/o)/2,q=e.touches[0].clientX-G.x,L=e.touches[0].clientY-G.y,te=q*100/(M.width*o),x=L*100/(M.height*o),re=m.x+te,oe=m.y+x;j({x:Math.max(-D,Math.min(re,D))||0,y:Math.max(-D,Math.min(oe,D))||0}),e.preventDefault()},P=e=>{var x;const M=(x=e.currentTarget)==null?void 0:x.getBoundingClientRect(),D=(100-100/o)/2;let q;if("touches"in e)q=e.touches[0];else if(e instanceof MouseEvent)q=e;else return;const L=D-(q.clientX-M.left)/M.width*100,te=D-(q.clientY-M.top)/M.height*100;j({x:Math.max(-D,Math.min(L,D))||0,y:Math.max(-D,Math.min(te,D))||0})},n=e=>{if(!v){if(p){if(u&&"touches"in e){ne(e);return}u||s(!1)}else s(!0),P(e);e.preventDefault()}},y=e=>{if(u&&"touches"in e){b(e);return}p&&P(e)},E=()=>{if(u){l(!1);return}s(!1)},I=e=>{s(!1),e.stopPropagation()},A=p?`scale(${o}) translateX(${$.x}%) translateY(${$.y}%)`:"none",N=Z("PDP.Zoom.Close.label").label,me=Ye(ue.only(t),{draggable:!1,style:{"--transform":A}});return ee(()=>{d(p?`pdp-zoom ${u?"pdp-zoom--no-effects":"pdp-zoom--zoomed"}`:"pdp-zoom")},[p,u]),F("figure",{className:f,onClick:n,onMouseMove:y,onMouseLeave:E,onTouchStart:n,onTouchMove:y,onTouchEnd:E,children:[me,u&&p&&r(we,{"aria-label":N,variant:"tertiary",className:"pdp-zoom__close-button",icon:r(Ve,{}),onClick:I})]})};function ct(t,o="en_US"){if(!Ue(t))throw Error("Invalid date string");return t.split(" ")[1]||(t=`${t} 00:00:00`),new Date(t).toLocaleDateString(Me(o)).toString()}function Ue(t){if(![/^\d{4}-\d{2}-\d{2}$/,/^\d{1,2}\/\d{1,2}\/\d{4}$/,/^\d{2}\/\d{2}\/\d{4}$/,/^\d{4}\/\d{2}\/\d{2}$/,/^\d{1,2}\.\d{1,2}\.\d{4}$/,/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/].some(p=>p.test(t)))return!1;const u=new Date(t);return!isNaN(u.getTime())}function ot(t){const o=new URLSearchParams(window.location.search);Object.entries(t).forEach(([p,s])=>{s===null?o.delete(p):o.set(p,String(s))});let u=window.location.pathname;u+=`?${o.toString()}`,u+=window.location.hash,window.history.replaceState({},"",u)}function it(){const t=new URLSearchParams(window.location.search),o={};return t.forEach((u,p)=>{o[p]=u}),o}function st(t){var o,u,p,s,f,d,v,l,G,c,m,W;return{productId:Number(t==null?void 0:t.externalId),name:t==null?void 0:t.name,sku:(t==null?void 0:t.variantSku)||(t==null?void 0:t.sku),topLevelSku:t==null?void 0:t.sku,specialToDate:void 0,specialFromDate:void 0,newToDate:void 0,newFromDate:void 0,createdAt:void 0,updatedAt:void 0,manufacturer:void 0,countryOfManufacture:void 0,categories:void 0,productType:void 0,pricing:{regularPrice:((u=(o=t==null?void 0:t.prices)==null?void 0:o.regular)==null?void 0:u.amount)||0,minimalPrice:(s=(p=t==null?void 0:t.prices)==null?void 0:p.final)==null?void 0:s.minimumAmount,maximalPrice:(d=(f=t==null?void 0:t.prices)==null?void 0:f.final)==null?void 0:d.maximumAmount,specialPrice:(l=(v=t==null?void 0:t.prices)==null?void 0:v.final)==null?void 0:l.amount,tierPricing:void 0,currencyCode:((c=(G=t==null?void 0:t.prices)==null?void 0:G.final)==null?void 0:c.currency)||"USD"},canonicalUrl:t==null?void 0:t.url,mainImageUrl:(W=(m=t==null?void 0:t.images)==null?void 0:m[0])==null?void 0:W.url}}const dt={PRODUCT_CONTEXT:"productContext"},ht={PRODUCT_PAGE_VIEW:"product-page-view"};function He(){return window.adobeDataLayer=window.adobeDataLayer||[],window.adobeDataLayer}function ut(t,o){const u=He();u.push({[t]:null}),u.push({[t]:o})}function pt(t,o){He().push(p=>{const s=p.getState?p.getState():{};p.push({event:t,eventInfo:{...s,...o}})})}function Re(t){const o=st(t);ut(dt.PRODUCT_CONTEXT,o),pt(ht.PRODUCT_PAGE_VIEW)}const mt=({sku:t,hideSku:o,hideQuantity:u,hideShortDescription:p,hideDescription:s,hideAttributes:f,hideURLParams:d,hideSelectedOptionValue:v,slots:l,children:G,initialData:c,carousel:m,optionsConfig:W,useACDL:$,onAddToCart:j,zoomType:ne,closeButton:b=!0,...P})=>{var g,Q,U,pe;const n=Z("PDP.Product.AddToCart.label").label,y=Z("PDP.Product.Incrementer.label").label,E=Z("PDP.Product.Details.label").label,[I,A]=K(We.getConfig().defaultLocale||"en-US"),[N,me]=K(),[e=null,M]=K(c),[D,q]=K(()=>{const i={sku:t,quantity:1};return e!=null&&e.optionUIDs&&(i.optionsUIDs=e.optionUIDs),i}),[L,te]=K(()=>{var i,_;return!(e!=null&&e.options&&((i=e==null?void 0:e.options)==null?void 0:i.length)>0&&((_=e==null?void 0:e.optionUIDs)==null?void 0:_.length)!==(e==null?void 0:e.options.length))}),x={data:e,values:D,valid:L};function re(i){return i==null?void 0:i.some(_=>(_==null?void 0:_.typename)==="ProductViewOptionValueProduct")}ee(()=>{const i=ke.on("pdp/setValues",_=>{q(w=>({...w,..._}))});return()=>{i==null||i.off()}},[]),ee(()=>{const i=ke.on("locale",_=>{_!==I&&(A(_),Te(t).then(M))});return()=>{i==null||i.off()}},[I,t]),ee(()=>{$&&c&&Object.keys(c).length>0&&Re(c)},[c]);const oe=ce(i=>{q(_=>({..._,...i}))},[]);ee(()=>{ke.emit("pdp/values",D)},[JSON.stringify(D)]);const ie=ce(i=>{var V,H;let _=Object.keys(i).map(R=>i[R].value).filter(R=>R!==void 0);!d&&(e!=null&&e.options)&&!re(e.options)&&ot({optionsUIDs:_.join(",")}),oe({optionsUIDs:_}),te((_==null?void 0:_.length)===((V=e==null?void 0:e.options)==null?void 0:V.length));const w=(H=e==null?void 0:e.options)==null?void 0:H.some(R=>re([R]));Be(t,_,W==null?void 0:W.anchorOptions,w).then(R=>{var de;M(R),(de=W==null?void 0:W.anchorOptions)!=null&&de.length&&be(R,_),$&&(R==null?void 0:R.variantSku)!==t&&Re(R)})},[t]),be=ce((i,_)=>{var H;const w=(i==null?void 0:i.optionUIDs)??[];_.every(R=>w.includes(R))||(me(i==null?void 0:i.options),oe({optionsUIDs:w}),te((w==null?void 0:w.length)===((H=i==null?void 0:i.options)==null?void 0:H.length)))},[t]),_e=ce(i=>{Object.keys(i).length!==0&&te(!1)},[]),T=Ne(()=>{var i;return(i=e==null?void 0:e.attributes)==null?void 0:i.map(({label:_,value:w},V)=>{const H=Ue(w)?ct(w,I):w.toString();return F("li",{children:[_,": ",r("span",{dangerouslySetInnerHTML:{__html:H}})]},V)})},[e==null?void 0:e.attributes,I]),le=!u&&(e!=null&&e.inStock)?r(J,{name:"Quantity",slot:l==null?void 0:l.Quantity,context:{...x},children:r(Ge,{name:"quantity",defaultValue:D.quantity.toString(),value:D.quantity.toString(),min:1,"aria-label":y,className:"pdp-product__quantity",onValue:i=>{oe({quantity:Number(i)})}},"quantity")}):void 0,se=()=>{if(e!=null&&e.options)return r(J,{name:"Options",slot:l==null?void 0:l.Options,context:{...x},children:r(lt,{selectedUIDs:D.optionsUIDs,options:e.options,defaultOptions:D.optionsUIDs,selectionsToUpdate:N,hideSelectedValue:v,onValues:ie,onErrors:_e})})};return r("div",{...P,children:r(Je,{title:r(J,{name:"Title",slot:l==null?void 0:l.Title,context:{...x},children:e==null?void 0:e.name}),sku:o?void 0:r(J,{name:"SKU",slot:l==null?void 0:l.SKU,context:{...x},children:e==null?void 0:e.sku}),options:se(),breadcrumbs:(l==null?void 0:l.Breadcrumbs)&&r(J,{name:"Breadcrumbs",slot:l==null?void 0:l.Breadcrumbs,context:{...x,setSeparator(i){this._registerMethod((..._)=>{const w=i(..._),V=w&&r(Se,{source:w});this._setProps(H=>({...H,separator:V,children:[r(De,{separator:V,categories:H.categories})]}))})},appendLink(i){this._registerMethod((..._)=>{const{text:w,...V}=i(..._),H=r("a",{...V,children:w});this._setProps(R=>{const de=[...R.categories||[],H];return{...R,categories:de,children:[r(De,{separator:R.separator,categories:de})]}})})},appendHTMLElement(i){this._registerMethod((..._)=>{const w=i(..._),V=this._htmlElementToVNode(w);this._setProps(H=>{const R=[...H.categories||[],V];return{...H,categories:R,children:[r(De,{separator:H.separator,categories:R})]}})})}}}),quantity:le,actions:r(J,{name:"Actions",slot:l==null?void 0:l.Actions,context:{...x,appendButton(i){this._registerMethod((..._)=>{const w=i(..._);if(!w)return;const{text:V,icon:H,...R}=w,de=r(we,{type:"button",...R,icon:H&&r(Se,{source:H}),children:V});this._setProps(a=>({children:[...a.children||[],de]}))})}},children:!(l!=null&&l.Actions)&&r(we,{size:"medium",type:"submit",icon:r(Se,{source:"Cart"}),disabled:!(e!=null&&e.inStock)||!L,"aria-label":n,onClick:()=>j==null?void 0:j(D),children:n})}),shortDescription:p?void 0:r(J,{name:"ShortDescription",slot:l==null?void 0:l.ShortDescription,context:{...x},children:r("div",{dangerouslySetInnerHTML:{__html:(e==null?void 0:e.shortDescription)??""}})}),description:s?void 0:r(J,{name:"Description",slot:l==null?void 0:l.Description,context:{...x},children:r("div",{dangerouslySetInnerHTML:{__html:(e==null?void 0:e.description)??""}})}),images:((g=e==null?void 0:e.images)==null?void 0:g.map(({label:i,url:_})=>{var w,V;return r(Oe,{title:i,alt:i,src:_,width:((w=m==null?void 0:m.imageParams)==null?void 0:w.width)??960,height:((V=m==null?void 0:m.imageParams)==null?void 0:V.height)??1191,params:(m==null?void 0:m.imageParams)??{width:960}},_)}))??[],specialPrice:(Q=e==null?void 0:e.prices)!=null&&Q.visible?r(J,{name:"SpecialPrice",slot:l==null?void 0:l.SpecialPrice,context:{...x},children:r(Ie,{...e.prices.final,locale:Me(I)})}):void 0,price:(U=e==null?void 0:e.prices)!=null&&U.visible&&e.prices.regular&&e.prices.final.amount!==(e==null?void 0:e.prices.regular.amount)?r(J,{name:"RegularPrice",slot:l==null?void 0:l.RegularPrice,context:{...x},children:r(Ie,{...e.prices.regular,locale:Me(I)})}):void 0,zoomType:ne,closeButton:b,carouselConfig:{...m,thumbnails:m&&Object.keys(m).length?((pe=e==null?void 0:e.images)==null?void 0:pe.map(({label:i,url:_})=>{var w,V;return r(Oe,{title:i,alt:i,src:_,width:((w=m==null?void 0:m.thumbnailParams)==null?void 0:w.width)??200,height:((V=m==null?void 0:m.thumbnailParams)==null?void 0:V.height)??248,params:(m==null?void 0:m.thumbnailParams)??{width:200}},_)}))??[]:[]},outOfStock:!(e!=null&&e.inStock),attributes:f?void 0:r(J,{name:"Attributes",slot:l==null?void 0:l.Attributes,context:{...x},children:T!=null&&T.length?F(Ae,{children:[E,r("ul",{children:T})]}):null}),galleryContent:(l==null?void 0:l.GalleryContent)&&r(J,{name:"GalleryContent",slot:l.GalleryContent,context:{...x}}),infoContent:(l==null?void 0:l.InfoContent)&&r(J,{name:"InfoContent",slot:l.InfoContent,context:{...x}}),productContent:(l==null?void 0:l.Content)&&r(J,{name:"Content",slot:l.Content,context:{...x}})})})};mt.getInitialData=async function({sku:t,optionsConfig:o}){var v,l,G,c,m,W,$;function u(j){return j.some(ne=>ne.__typename==="ProductViewOptionValueProduct")}let p;const s=We.getConfig(),f=((v=it().optionsUIDs)==null?void 0:v.split(","))||((c=(G=(l=s==null?void 0:s.models)==null?void 0:l.ProductDetails)==null?void 0:G.initialData)==null?void 0:c.optionsUIDs),d=(W=(m=s==null?void 0:s.models)==null?void 0:m.ProductDetails)==null?void 0:W.initialData;return d&&Object.keys(d).length>0&&(p=($=d.options)==null?void 0:$.some(j=>u(j==null?void 0:j.values))),f!=null&&f.length?await Be(t,f,o==null?void 0:o.anchorOptions,p):await Te(t)};export{mt as ProductDetails,mt as default};
1
+ import{jsx as e,jsxs as v,Fragment as St}from"@dropins/tools/preact-jsx-runtime.js";import{useState as x,Children as at,useEffect as F,useCallback as g,useMemo as Nt}from"@dropins/tools/preact-compat.js";import{VComponent as u,classes as N,Slot as A,toLanguageTag as ot}from"@dropins/tools/lib.js";import{Incrementer as vt,Breadcrumbs as dt,Button as _t,Icon as ct,Image as mt}from"@dropins/tools/components.js";/* empty css */import{Z as It,C,O as Ot}from"../chunks/Zoom.js";import{useText as s}from"@dropins/tools/i18n.js";import{P as ut}from"../chunks/PriceRange.js";import{S as Dt}from"../chunks/Swatches.js";import"@dropins/tools/preact.js";import{c as wt,h as Pt,p as bt,j as Vt,e as kt}from"../chunks/fetchPDPData.js";import{g as Bt,s as Ut}from"../chunks/getProductConfigurationValues.js";import{s as st}from"../chunks/isProductConfigurationValid.js";import{events as At}from"@dropins/tools/event-bus.js";import{i as Lt,t as Mt}from"../chunks/date.js";import"@dropins/tools/fetch-graphql.js";const Rt=({title:i,breadcrumbs:y,galleryContent:L,infoContent:M,productContent:R,sku:T,outOfStock:w,shortDescription:V,description:r,attributes:tt,images:d,options:h,price:P,specialPrice:z,className:G,children:lt,quantity:J,actions:$,carouselConfig:n,zoomType:W="overlay",closeButton:et=!0,...nt})=>{var k,E,m,Z,j,X,Y,f,B;const I=s("PDP.Product.RegularPrice.label").label,rt=s("PDP.Product.SpecialPrice.label").label,pt=s("PDP.Product.OutOfStock.label").label,O=s("PDP.Product.Image.label").label,[t,H]=x(null),b=d!=null&&d.length?d.map((q,S)=>{var K;const D=((K=i==null?void 0:i.props)==null?void 0:K.children)&&(O==null?void 0:O.replace("{product}",i.props.children.toString()).replace("{key}",String(S+1)).replace("{total}",String(d.length)));return W==="zoom"?e(It,{closeButton:et,children:e(u,{node:q,loading:S===0?"eager":"lazy",alt:D},S)}):e(u,{node:q,loading:S===0?"eager":"lazy",alt:D,onClick:()=>H(S)},S)}):e("img",{src:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",className:"pdp-product__images__placeholder","aria-hidden":!0}),Q=(k=n==null?void 0:n.thumbnails)!=null&&k.length?n.thumbnails.map((q,S)=>{var D;return e(u,{node:q,loading:(n==null?void 0:n.thumbnailsLoadingMode)||"lazy",alt:((D=i==null?void 0:i.props)==null?void 0:D.children)&&(O==null?void 0:O.replace("{product}",i.props.children.toString()).replace("{key}",String(S+1)).replace("{total}",String(d.length)))},S)}):e("img",{src:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",className:"pdp-product__images__placeholder","aria-hidden":!0});return v("div",{...nt,className:N(["pdp-product",G]),children:[y&&e(u,{node:y,className:"pdp-product__breadcrumbs"}),v("div",{className:"pdp-product__column-container pdp-product__gallery-column",children:[e("div",{className:"pdp-product__column-body",children:(E=n==null?void 0:n.controls)!=null&&E.desktop?e(C,{className:"pdp-product__overlay__carousel",arrows:(d==null?void 0:d.length)>1,controls:(d==null?void 0:d.length)>1?n.controls.desktop:"dots",arrowsOnMainImage:n==null?void 0:n.arrowsOnMainImage,loop:(n==null?void 0:n.loopable)&&(d==null?void 0:d.length)>1,peak:((m=n==null?void 0:n.thumbnails)==null?void 0:m.length)>1&&((Z=n==null?void 0:n.peak)==null?void 0:Z.desktop)||!1,gap:(n==null?void 0:n.gap)||null,width:"100%",height:"100%",defaultIndex:t||0,thumbnails:Q,children:b}):e(Tt,{className:"pdp-product__images",gap:"small",children:b})}),L&&e(u,{node:L,className:"pdp-product__gallery-content"})]}),v("div",{className:"pdp-product__column-container pdp-product__content-column",children:[v("div",{className:"pdp-product__column-body",children:[v("div",{className:"pdp-product__header",children:[i&&e(u,{node:i,className:"pdp-product__title"}),T&&e(u,{node:T,className:"pdp-product__sku"})]}),v("div",{className:"pdp-product__prices",children:[z&&e(u,{node:z,className:N(["pdp-product__price-special","pdp-product__price"]),"aria-label":rt,role:"text"}),P&&e(u,{node:P,className:N(["pdp-product__price-regular","pdp-product__price--grey"]),"aria-label":I,role:"text"})]}),(j=n==null?void 0:n.controls)!=null&&j.mobile&&((X=n==null?void 0:n.controls)==null?void 0:X.mobile)==="thumbnailsRow"?e(C,{className:"pdp-product__images pdp-product__images--carousel pdp-product__images--carousel--thumbnails",width:"100%",height:"auto",arrows:(d==null?void 0:d.length)>1,controls:(d==null?void 0:d.length)>1?"thumbnailsRow":null,loop:(n==null?void 0:n.loopable)&&(d==null?void 0:d.length)>1,peak:((Y=n==null?void 0:n.thumbnails)==null?void 0:Y.length)>1&&((f=n==null?void 0:n.peak)==null?void 0:f.mobile)||!1,gap:(n==null?void 0:n.gap)||null,thumbnails:Q,children:b}):e(C,{className:"pdp-product__images pdp-product__images--carousel",peak:((B=n==null?void 0:n.peak)==null?void 0:B.mobile)&&(d==null?void 0:d.length)>1,gap:(n==null?void 0:n.gap)||null,width:"100%",height:"auto",arrows:(d==null?void 0:d.length)>1,controls:(d==null?void 0:d.length)>1?"dots":null,loop:(n==null?void 0:n.loopable)&&(d==null?void 0:d.length)>1,children:b}),v("div",{className:N(["pdp-product__actions",["pdp-product__actions--out-of-stock",w]]),children:[w&&e("div",{className:"pdp-product__out-of-stock__text",children:pt}),h&&e(u,{node:h,className:N(["pdp-product__options"])}),J&&e("div",{className:"pdp-product__quantity",children:e(u,{node:J})}),$&&e(u,{node:$,className:N(["pdp-product__buttons"])})]}),V&&e(u,{node:V,className:N(["pdp-product__short_description"])}),r&&e(u,{node:r,className:N(["pdp-product__description"])}),tt?e("div",{className:"pdp-product__attributes",children:tt}):null]}),M&&e(u,{node:M,className:"pdp-product__info-content"})]}),R&&e(u,{node:R,className:"pdp-product__content"}),t===null?null:e(Ot,{className:"pdp-product__overlay",onClose:()=>H(null),centered:!0,children:e(C,{className:"pdp-product__overlay__carousel",arrows:(d==null?void 0:d.length)>1,width:"100%",height:"100%",defaultIndex:t||0,loop:(n==null?void 0:n.loopable)&&(d==null?void 0:d.length)>1,controls:(d==null?void 0:d.length)>1?"dots":null,isZoomed:!0,children:b})})]})},Tt=({children:i,gap:y=null,className:L,style:M,...R})=>{const T=at.count(i);return e("div",{...R,className:N(["pdp-gallery-grid",L]),style:{"--gap":y?`var(--spacing-${y})`:"0px",...M},children:at.map(i,(w,V)=>e("div",{className:"pdp-gallery-grid__item",children:e(u,{node:w,loading:V===0?"eager":"lazy"},w.props.src)},T+V))})},Et=({sku:i,hideSku:y,hideQuantity:L,hideShortDescription:M,hideDescription:R,hideAttributes:T,hideURLParams:w,hideSelectedOptionValue:V,slots:r,children:tt,initialData:d,carousel:h,optionsConfig:P,useACDL:z,onAddToCart:G,zoomType:lt,closeButton:J=!0,disableDropdownPreselection:$,...n})=>{var D,K,ht,it;const W=s("PDP.Product.AddToCart.label").label,et=s("PDP.Product.Incrementer.label").label,nt=s("PDP.Product.Details.label").label,[I,rt]=x(wt.getConfig().defaultLocale||"en-US"),[pt,O]=x(),[t=null,H]=x(d),[b,Q]=x(()=>{const p=Bt()??{sku:i,quantity:1};return t!=null&&t.optionUIDs&&(p.optionsUIDs=t.optionUIDs),p}),[k,E]=x(()=>{var p,c;return!(t!=null&&t.options&&((p=t==null?void 0:t.options)==null?void 0:p.length)>0&&((c=t==null?void 0:t.optionUIDs)==null?void 0:c.length)!==(t==null?void 0:t.options.length))}),m={data:t,values:b,valid:k};function Z(p){return p==null?void 0:p.some(c=>(c==null?void 0:c.typename)==="ProductViewOptionValueProduct")}F(()=>{const p=At.on("pdp/setValues",c=>{Q(l=>({...l,...c}))});return()=>{p==null||p.off()}},[]),F(()=>{const p=At.on("locale",c=>{c!==I&&(rt(c),Pt(i,{anchors:P==null?void 0:P.anchorOptions}).then(H))});return()=>{p==null||p.off()}},[I,i]),F(()=>{z&&d&&Object.keys(d).length>0&&bt(d)},[d]);const j=g(p=>{Q(c=>({...c,...p}))},[]);F(()=>{Ut(()=>b)},[JSON.stringify(b)]),F(()=>{st(()=>k)},[k]);const X=g(p=>{var o,_;let c=Object.keys(p).map(a=>p[a].value).filter(a=>a!==void 0);!w&&(t!=null&&t.options)&&!Z(t.options)&&Vt({optionsUIDs:c.join(",")}),j({optionsUIDs:c}),E((c==null?void 0:c.length)===((o=t==null?void 0:t.options)==null?void 0:o.length));const l=(_=t==null?void 0:t.options)==null?void 0:_.some(a=>Z([a]));kt(i,c,P==null?void 0:P.anchorOptions,l).then(a=>{var U;H(a),(U=P==null?void 0:P.anchorOptions)!=null&&U.length&&Y(a,c),z&&(a==null?void 0:a.variantSku)!==i&&bt(a)})},[i]),Y=g((p,c)=>{var _;const l=(p==null?void 0:p.optionUIDs)??[];c.every(a=>l.includes(a))||(O(p==null?void 0:p.options),j({optionsUIDs:l}),E((l==null?void 0:l.length)===((_=p==null?void 0:p.options)==null?void 0:_.length)))},[i]),f=g(p=>{Object.keys(p).length!==0&&E(!1)},[]),B=Nt(()=>{var p;return(p=t==null?void 0:t.attributes)==null?void 0:p.map(({label:c,value:l},o)=>{const _=Lt(l)?Mt(l,I):l.toString();return v("li",{children:[c,": ",e("span",{dangerouslySetInnerHTML:{__html:_}})]},o)})},[t==null?void 0:t.attributes,I]),q=!L&&(t!=null&&t.inStock)?e(A,{name:"Quantity",slot:r==null?void 0:r.Quantity,context:{...m},children:e(vt,{name:"quantity",defaultValue:b.quantity.toString(),value:b.quantity.toString(),min:1,"aria-label":et,className:"pdp-product__quantity",onValue:p=>{j({quantity:Number(p)})}},"quantity")}):void 0,S=()=>{if(t!=null&&t.options)return e(A,{name:"Options",slot:r==null?void 0:r.Options,context:{...m},children:e(Dt,{selectedUIDs:b.optionsUIDs,options:t.options,defaultOptions:b.optionsUIDs,selectionsToUpdate:pt,hideSelectedValue:V,disablePreselections:$,onValues:X,onErrors:f})})};return e("div",{...n,children:e(Rt,{title:e(A,{name:"Title",slot:r==null?void 0:r.Title,context:{...m},children:t==null?void 0:t.name}),sku:y?void 0:e(A,{name:"SKU",slot:r==null?void 0:r.SKU,context:{...m},children:t==null?void 0:t.sku}),options:S(),breadcrumbs:(r==null?void 0:r.Breadcrumbs)&&e(A,{name:"Breadcrumbs",slot:r==null?void 0:r.Breadcrumbs,context:{...m,setSeparator(p){this._registerMethod((...c)=>{const l=p(...c),o=l&&e(ct,{source:l});this._setProps(_=>({..._,separator:o,children:[e(dt,{separator:o,categories:_.categories})]}))})},appendLink(p){this._registerMethod((...c)=>{const{text:l,...o}=p(...c),_=e("a",{...o,children:l});this._setProps(a=>{const U=[...a.categories||[],_];return{...a,categories:U,children:[e(dt,{separator:a.separator,categories:U})]}})})},appendHTMLElement(p){this._registerMethod((...c)=>{const l=p(...c),o=this._htmlElementToVNode(l);this._setProps(_=>{const a=[..._.categories||[],o];return{..._,categories:a,children:[e(dt,{separator:_.separator,categories:a})]}})})}}}),quantity:q,actions:e(A,{name:"Actions",slot:r==null?void 0:r.Actions,context:{...m,appendButton(p){this._registerMethod((...c)=>{const l=p(...c);if(!l)return;const{text:o,icon:_,...a}=l,U=e(_t,{type:"button",...a,icon:_&&e(ct,{source:_}),children:o});this._setProps(yt=>({children:[...yt.children||[],U]}))})}},children:!(r!=null&&r.Actions)&&e(_t,{size:"medium",type:"submit",icon:e(ct,{source:"Cart"}),disabled:!(t!=null&&t.inStock)||!k,"aria-label":W,onClick:()=>G==null?void 0:G(b),children:W})}),shortDescription:M?void 0:e(A,{name:"ShortDescription",slot:r==null?void 0:r.ShortDescription,context:{...m},children:e("div",{dangerouslySetInnerHTML:{__html:(t==null?void 0:t.shortDescription)??""}})}),description:R?void 0:e(A,{name:"Description",slot:r==null?void 0:r.Description,context:{...m},children:e("div",{dangerouslySetInnerHTML:{__html:(t==null?void 0:t.description)??""}})}),images:((D=t==null?void 0:t.images)==null?void 0:D.map(({label:p,url:c})=>{var l,o;return e(mt,{title:p,alt:p,src:c,width:((l=h==null?void 0:h.imageParams)==null?void 0:l.width)??960,height:((o=h==null?void 0:h.imageParams)==null?void 0:o.height)??1191,params:(h==null?void 0:h.imageParams)??{width:960}},c)}))??[],specialPrice:(K=t==null?void 0:t.prices)!=null&&K.visible?e(A,{name:"SpecialPrice",slot:r==null?void 0:r.SpecialPrice,context:{...m},children:e(ut,{...t.prices.final,locale:ot(I)})}):void 0,price:(ht=t==null?void 0:t.prices)!=null&&ht.visible&&t.prices.regular&&t.prices.final.amount!==(t==null?void 0:t.prices.regular.amount)?e(A,{name:"RegularPrice",slot:r==null?void 0:r.RegularPrice,context:{...m},children:e(ut,{...t.prices.regular,locale:ot(I)})}):void 0,zoomType:lt,closeButton:J,carouselConfig:{...h,thumbnails:h&&Object.keys(h).length?((it=t==null?void 0:t.images)==null?void 0:it.map(({label:p,url:c})=>{var l,o;return e(mt,{title:p,alt:p,src:c,width:((l=h==null?void 0:h.thumbnailParams)==null?void 0:l.width)??200,height:((o=h==null?void 0:h.thumbnailParams)==null?void 0:o.height)??248,params:(h==null?void 0:h.thumbnailParams)??{width:200}},c)}))??[]:[]},outOfStock:!(t!=null&&t.inStock),attributes:T?void 0:e(A,{name:"Attributes",slot:r==null?void 0:r.Attributes,context:{...m},children:B!=null&&B.length?v(St,{children:[nt,e("ul",{children:B})]}):null}),galleryContent:(r==null?void 0:r.GalleryContent)&&e(A,{name:"GalleryContent",slot:r.GalleryContent,context:{...m}}),infoContent:(r==null?void 0:r.InfoContent)&&e(A,{name:"InfoContent",slot:r.InfoContent,context:{...m}}),productContent:(r==null?void 0:r.Content)&&e(A,{name:"Content",slot:r.Content,context:{...m}})})})};Et.getInitialData=async function({sku:i,optionsConfig:y}){return await Pt(i,{anchors:y==null?void 0:y.anchorOptions})};export{Et as ProductDetails,Et as default};
@@ -0,0 +1,18 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container, ResolveImageUrlOptions } from '@dropins/tools/types/elsie/src/lib';
3
+ import { ProductModel } from '../../data/models/product-model';
4
+
5
+ export interface ProductGalleryProps extends Omit<HTMLAttributes<HTMLDivElement>, 'controls'> {
6
+ controls?: 'thumbnailsRow' | 'thumbnailsColumn' | 'dots' | null;
7
+ loop?: boolean;
8
+ peak?: boolean;
9
+ gap?: 'small' | 'medium' | 'large' | null;
10
+ arrows?: boolean;
11
+ imageParams?: ResolveImageUrlOptions;
12
+ thumbnailParams?: ResolveImageUrlOptions;
13
+ zoom?: {
14
+ closeButton: boolean;
15
+ } | boolean;
16
+ }
17
+ export declare const ProductGallery: Container<ProductGalleryProps, ProductModel | null>;
18
+ //# sourceMappingURL=ProductGallery.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductGallery';
2
+ export { ProductGallery as default } from './ProductGallery';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductGallery/index'
2
+ import _default from './ProductGallery/index'
3
+ export default _default
@@ -0,0 +1 @@
1
+ import{jsx as l,jsxs as N}from"@dropins/tools/preact-jsx-runtime.js";import{useState as O,useEffect as Q,useMemo as S}from"@dropins/tools/preact-compat.js";import{Image as C}from"@dropins/tools/components.js";import{events as F}from"@dropins/tools/event-bus.js";import{g as q}from"../chunks/getFetchedProductData.js";import{Z as z,C as E,O as J}from"../chunks/Zoom.js";import"@dropins/tools/lib.js";/* empty css */import{useText as K}from"@dropins/tools/i18n.js";import"@dropins/tools/preact.js";const U=({initialData:R=null,controls:Z="dots",loop:g=!0,peak:j=!1,gap:G=null,arrows:T=!0,zoom:h=!1,imageParams:t,thumbnailParams:o,children:V,...k})=>{var u,w,B,y,I,_,x;const c=K("PDP.Product.Image.label").label,[e,v]=O(R),[d,s]=O(null);Q(()=>{const A=F.on("pdp/data",v);return()=>{A==null||A.off()}},[]);const f=S(()=>{var A;return((A=e==null?void 0:e.images)==null?void 0:A.map(({label:n,url:r},p)=>{const i=({...M})=>{var D;return l(C,{title:n,src:r,alt:c==null?void 0:c.replace("{product}",n).replace("{key}",String(p+1)).replace("{total}",String((D=e==null?void 0:e.images)==null?void 0:D.length)),width:(t==null?void 0:t.width)??960,height:(t==null?void 0:t.height)??1191,params:t??{width:960},loading:p===0?"eager":"lazy",...M})};return h?l(z,{closeButton:typeof h=="object"?h.closeButton:!1,children:l(i,{})},r):l(i,{onClick:()=>s(p)},r)}))??l("img",{src:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",className:"pdp-product-gallery__images__placeholder",width:(t==null?void 0:t.width)??960,height:(t==null?void 0:t.height)??1191,"aria-hidden":!0},"pleaceholder")},[c,e==null?void 0:e.images,t,h]),H=S(()=>{var A;return((A=e==null?void 0:e.images)==null?void 0:A.map(({label:n,url:r},p)=>{var i;return l(C,{title:n,src:r,alt:c==null?void 0:c.replace("{product}",n).replace("{key}",String(p+1)).replace("{total}",String((i=e==null?void 0:e.images)==null?void 0:i.length)),width:(o==null?void 0:o.width)??200,height:(o==null?void 0:o.height)??248,params:o??{width:200},loading:"lazy"},r)}))??l("img",{src:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",className:"pdp-product-gallery__thumbnail__placeholder",width:(o==null?void 0:o.width)??200,height:(o==null?void 0:o.height)??248,"aria-hidden":!0},"pleaceholder")},[c,e==null?void 0:e.images,o]);return e?N("div",{...k,children:[l(E,{arrows:!!((u=e==null?void 0:e.images)!=null&&u.length),arrowsOnMainImage:T,controls:(w=e==null?void 0:e.images)!=null&&w.length?Z:"dots",loop:g&&!!((B=e.images)!=null&&B.length),peak:!!((y=e==null?void 0:e.images)!=null&&y.length)&&j,gap:G,defaultIndex:d||0,thumbnails:H,children:f}),d===null?null:l(J,{onClose:()=>s(null),centered:!0,children:l(E,{arrows:!!((I=e==null?void 0:e.images)!=null&&I.length),width:"100%",height:"100%",defaultIndex:d||0,loop:g&&!!((_=e.images)!=null&&_.length),controls:(x=e==null?void 0:e.images)!=null&&x.length?"dots":null,isZoomed:!0,children:f})})]}):null};U.getInitialData=q;export{U as ProductGallery,U as default};
@@ -0,0 +1,8 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container } from '@dropins/tools/types/elsie/src/lib';
3
+ import { ProductModel } from '../../data/models';
4
+
5
+ export interface ProductHeaderProps extends HTMLAttributes<HTMLDivElement> {
6
+ }
7
+ export declare const ProductHeader: Container<ProductHeaderProps, ProductModel | null>;
8
+ //# sourceMappingURL=ProductHeader.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductHeader';
2
+ export { ProductHeader as default } from './ProductHeader';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductHeader/index'
2
+ import _default from './ProductHeader/index'
3
+ export default _default
@@ -0,0 +1 @@
1
+ import{jsxs as c,jsx as e,Fragment as s}from"@dropins/tools/preact-jsx-runtime.js";import{useState as l,useEffect as m}from"@dropins/tools/preact-compat.js";import{classes as p,VComponent as i}from"@dropins/tools/lib.js";import"@dropins/tools/components.js";/* empty css */import"@dropins/tools/preact.js";import{events as u}from"@dropins/tools/event-bus.js";import{g as f}from"../chunks/getFetchedProductData.js";const h=({className:r,title:n,sku:a,children:t,...d})=>c("div",{...d,className:p(["pdp-header",r]),children:[e("div",{className:"pdp-header__title",children:e(i,{node:n})}),e("div",{className:"pdp-header__sku",children:e(i,{node:a})})]}),g=({initialData:r=null,children:n,...a})=>{const[t,d]=l(r);return m(()=>{const o=u.on("pdp/data",d);return()=>{o==null||o.off()}},[]),t?e(h,{...a,title:e(s,{children:t.name}),sku:e(s,{children:t.sku})}):null};g.getInitialData=f;export{g as ProductHeader,g as default};
@@ -0,0 +1,22 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container, SlotProps } from '@dropins/tools/types/elsie/src/lib';
3
+ import { ProductModel } from '../../data/models';
4
+
5
+ export interface ProductOptionsProps extends HTMLAttributes<HTMLDivElement> {
6
+ hideSelectedValue?: boolean;
7
+ onValues?: (optionsUIDs: string[]) => void;
8
+ onErrors?: (errors: {
9
+ [id: string]: string;
10
+ }) => void;
11
+ slots?: {
12
+ Swatches: SlotProps<{
13
+ data: ProductModel | null;
14
+ optionsUIDs: string[];
15
+ }>;
16
+ };
17
+ }
18
+ export declare const ProductOptions: Container<ProductOptionsProps, {
19
+ data: ProductModel | null;
20
+ optionsUIDs: string[];
21
+ }>;
22
+ //# sourceMappingURL=ProductOptions.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductOptions';
2
+ export { ProductOptions as default } from './ProductOptions';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductOptions/index'
2
+ import _default from './ProductOptions/index'
3
+ export default _default
@@ -0,0 +1 @@
1
+ import{jsx as j}from"@dropins/tools/preact-jsx-runtime.js";import{useState as h,useEffect as L,useCallback as w}from"@dropins/tools/preact-compat.js";import{Slot as R}from"@dropins/tools/lib.js";import{events as d}from"@dropins/tools/event-bus.js";import"@dropins/tools/components.js";/* empty css */import{S as q}from"../chunks/Swatches.js";import"@dropins/tools/preact.js";import{c as z,j as A,h as G,p as H}from"../chunks/fetchPDPData.js";import{g as C,s as y}from"../chunks/getProductConfigurationValues.js";import{s as g}from"../chunks/isProductConfigurationValid.js";import{g as J}from"../chunks/getFetchedProductData.js";import"@dropins/tools/i18n.js";import"@dropins/tools/fetch-graphql.js";const K=({initialData:p={data:null,optionsUIDs:[]},hideSelectedValue:I=!1,slots:l,onValues:f,onErrors:u,children:N,...v})=>{const[o,O]=h(p.data),[n,b]=h(p.optionsUIDs),[B,M]=h();L(()=>{const i=d.on("pdp/data",O),r=d.on("pdp/values",({optionsUIDs:a})=>{a&&b(a)});return g(()=>o!=null&&o.options?(n==null?void 0:n.length)===o.options.length:!0),()=>{i==null||i.off(),r==null||r.off()}},[]);const T=w(async i=>{var P,D,S,U,k;if(!(o!=null&&o.sku))return;const{persistURLParams:r,anchors:a,acdl:F}=z.getConfig();let s=Object.keys(i).map(t=>i[t].value).filter(t=>t!==void 0);if(r&&((P=o==null?void 0:o.options)!=null&&P.some(c=>(c==null?void 0:c.typename)==="ProductViewOptionValueProduct")||A({optionsUIDs:s.join(",")})),((S=(D=C())==null?void 0:D.optionsUIDs)==null?void 0:S.join("|"))!==(s==null?void 0:s.join("|"))){y(e=>({...e,optionsUIDs:s})),f==null||f(s);const t=await G(o.sku,{optionsUIDs:s});d.emit("pdp/data",t);let c=(s==null?void 0:s.length)===((U=t==null?void 0:t.options)==null?void 0:U.length);if(a!=null&&a.length){const e=(t==null?void 0:t.optionUIDs)??[];s.every(m=>e.includes(m))||(M(t==null?void 0:t.options),y(m=>({...m,optionsUIDs:e})),c=(e==null?void 0:e.length)===((k=t==null?void 0:t.options)==null?void 0:k.length))}g(()=>c),F&&t&&(t==null?void 0:t.variantSku)!==o.sku&&H(t)}},[o==null?void 0:o.options,o==null?void 0:o.sku,f]),V=w(i=>{Object.keys(i).length!==0&&(g(()=>!1),u==null||u(i))},[u]);return!o||!o.options?null:j(R,{name:"Swatches",slot:l==null?void 0:l.Swatches,context:{data:o,optionsUIDs:n},children:j(q,{...v,options:o.options,selectedUIDs:n,defaultOptions:n,selectionsToUpdate:B,hideSelectedValue:I,onValues:T,onErrors:V})})};K.getInitialData=async function(){var p;return{data:await J(),optionsUIDs:((p=C())==null?void 0:p.optionsUIDs)??[]}};export{K as ProductOptions,K as default};
@@ -0,0 +1,8 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container } from '@dropins/tools/types/elsie/src/lib';
3
+ import { ProductModel } from '../../data/models';
4
+
5
+ export interface ProductPriceProps extends HTMLAttributes<HTMLDivElement> {
6
+ }
7
+ export declare const ProductPrice: Container<ProductPriceProps, ProductModel | null>;
8
+ //# sourceMappingURL=ProductPrice.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductPrice';
2
+ export { ProductPrice as default } from './ProductPrice';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductPrice/index'
2
+ import _default from './ProductPrice/index'
3
+ export default _default
@@ -0,0 +1 @@
1
+ import{jsxs as D,jsx as r}from"@dropins/tools/preact-jsx-runtime.js";import{useState as d,useEffect as L}from"@dropins/tools/preact-compat.js";import{classes as s,VComponent as f,toLanguageTag as g}from"@dropins/tools/lib.js";import"@dropins/tools/components.js";/* empty css */import{P}from"../chunks/PriceRange.js";import"@dropins/tools/preact.js";import{useText as b}from"@dropins/tools/i18n.js";import{events as _}from"@dropins/tools/event-bus.js";import{g as h}from"../chunks/getFetchedProductData.js";import{c as v}from"../chunks/fetchPDPData.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/getProductConfigurationValues.js";const S=({className:t,price:i,specialPrice:a,children:n,...e})=>{const c=b("PDP.Product.RegularPrice.label").label,o=b("PDP.Product.SpecialPrice.label").label;return D("div",{...e,className:s(["pdp-price",t]),children:[a&&r(f,{node:a,className:s(["pdp-price__amount-special","pdp-price__amount"]),"aria-label":o,role:"text"}),i&&r(f,{node:i,className:s(["pdp-price__amount-regular","pdp-price__amount--grey"]),"aria-label":c,role:"text"})]})},N=({initialData:t=null,children:i,...a})=>{var m,u;const{defaultLocale:n="en-US"}=v.getConfig(),[e,c]=d(t),[o,x]=d(n);return L(()=>{const l=_.on("pdp/data",c),p=_.on("locale",x);return()=>{l==null||l.off(),p==null||p.off()}},[]),e?r(S,{...a,specialPrice:(m=e.prices)!=null&&m.visible?r(P,{...e.prices.final,locale:g(o)}):void 0,price:(u=e.prices)!=null&&u.visible&&e.prices.regular&&e.prices.final.amount!==e.prices.regular.amount?r(P,{...e.prices.regular,locale:g(o)}):void 0}):null};N.getInitialData=h;export{N as ProductPrice,N as default};
@@ -0,0 +1,9 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container } from '@dropins/tools/types/elsie/src/lib';
3
+ import { ProductModel } from '../../data/models';
4
+
5
+ export interface ProductQuantityProps extends HTMLAttributes<HTMLDivElement> {
6
+ onValue?: (quantity: number) => void;
7
+ }
8
+ export declare const ProductQuantity: Container<ProductQuantityProps, ProductModel | null>;
9
+ //# sourceMappingURL=ProductQuantity.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductQuantity';
2
+ export { ProductQuantity as default } from './ProductQuantity';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductQuantity/index'
2
+ import _default from './ProductQuantity/index'
3
+ export default _default
@@ -0,0 +1 @@
1
+ import{jsx as d}from"@dropins/tools/preact-jsx-runtime.js";import{useState as s,useEffect as g}from"@dropins/tools/preact-compat.js";import{classes as P}from"@dropins/tools/lib.js";import{Incrementer as y}from"@dropins/tools/components.js";import{events as u}from"@dropins/tools/event-bus.js";import{s as I}from"../chunks/getProductConfigurationValues.js";import{g as b}from"../chunks/getFetchedProductData.js";import{useText as q}from"@dropins/tools/i18n.js";const D=({initialData:i=null,onValue:r,children:h,...n})=>{const m=q("PDP.Product.Incrementer.label").label,[c,l]=s(i),[o,f]=s(1);g(()=>{const e=u.on("pdp/data",l),t=u.on("pdp/values",({quantity:a})=>{f(a)},{eager:!0});return()=>{e==null||e.off(),t==null||t.off()}},[]);const p=e=>{const t=parseInt(e,10);I(a=>({...a,quantity:t})),r==null||r(t)};return c?d(y,{name:"quantity",defaultValue:o.toString(),value:o.toString(),min:1,"aria-label":m,onValue:p,...n,className:P(["pdp-quantity",n.className])},"quantity"):null};D.getInitialData=b;export{D as ProductQuantity,D as default};
@@ -0,0 +1,8 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container } from '@dropins/tools/types/elsie/src/lib';
3
+ import { ProductModel } from '../../data/models';
4
+
5
+ export interface ProductShortDescriptionProps extends HTMLAttributes<HTMLDivElement> {
6
+ }
7
+ export declare const ProductShortDescription: Container<ProductShortDescriptionProps, ProductModel | null>;
8
+ //# sourceMappingURL=ProductShortDescription.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductShortDescription';
2
+ export { ProductShortDescription as default } from './ProductShortDescription';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './ProductShortDescription/index'
2
+ import _default from './ProductShortDescription/index'
3
+ export default _default
@@ -0,0 +1 @@
1
+ import{jsx as n}from"@dropins/tools/preact-jsx-runtime.js";import{useState as i,useEffect as a}from"@dropins/tools/preact-compat.js";import{classes as c}from"@dropins/tools/lib.js";import{events as m}from"@dropins/tools/event-bus.js";import{g as l}from"../chunks/getFetchedProductData.js";const f=({initialData:o=null,children:p,...e})=>{const[t,s]=i(o);return a(()=>{const r=m.on("pdp/data",s);return()=>{r==null||r.off()}},[]),t?n("div",{dangerouslySetInnerHTML:{__html:(t==null?void 0:t.shortDescription)??""},...e,className:c(["pdp-short-description",e.className])}):null};f.getInitialData=l;export{f as ProductShortDescription,f as default};
@@ -14,4 +14,12 @@
14
14
  * from Adobe.
15
15
  */
16
16
  export * from './ProductDetails';
17
+ export * from './ProductPrice';
18
+ export * from './ProductOptions';
19
+ export * from './ProductQuantity';
20
+ export * from './ProductShortDescription';
21
+ export * from './ProductDescription';
22
+ export * from './ProductAttributes';
23
+ export * from './ProductGallery';
24
+ export * from './ProductHeader';
17
25
  //# sourceMappingURL=index.d.ts.map
@@ -14,4 +14,5 @@
14
14
  * from Adobe.
15
15
  */
16
16
  export * from './product-model';
17
+ export * from './values-model';
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,6 @@
1
+ export interface ValuesModel {
2
+ sku: string;
3
+ quantity: number;
4
+ optionsUIDs?: string[];
5
+ }
6
+ //# sourceMappingURL=values-model.d.ts.map
@@ -34,6 +34,9 @@ declare const _default: {
34
34
  "Swatches": {
35
35
  "Required": {
36
36
  "label": "Required"
37
+ },
38
+ "ChooseOption": {
39
+ "label": "Choose an option"
37
40
  }
38
41
  },
39
42
  "Carousel": {
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/storefront-pdp", "version": "0.5.0-alpha1", "@dropins/tools": "0.33.0"}
1
+ {"name": "@dropins/storefront-pdp", "version": "0.5.0-beta2", "@dropins/tools": "~0.33.0"}
package/render.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(p,t){try{if(typeof document<"u"){const r=document.createElement("style"),e=t.styleId;for(const a in t.attributes)r.setAttribute(a,t.attributes[a]);r.setAttribute("data-dropin",e),r.appendChild(document.createTextNode(p));const o=document.querySelector('style[data-dropin="sdk"]');if(o)o.after(r);else{const a=document.querySelector('link[rel="stylesheet"], style');a?a.before(r):document.head.append(r)}}}catch(r){console.error("dropin-styles (injectCodeFunction)",r)}})(".pdp-carousel{--icon-size: 32px;--icon-extra-padding: 8px;--thumb-peak: 32px;--thumbnails-col-width: 18.6%;position:relative;display:flex;flex-direction:var(--flex-carousel);align-items:center;gap:var(--gap);width:var(--width)}.pdp-carousel .dropin-button--tertiary--disabled:hover{color:var(--color-neutral-500)}.pdp-carousel--thumbnailsColumn{justify-content:flex-end;align-items:start}.pdp-carousel--thumbnailsRow{align-items:center}.pdp-carousel--arrows{padding-left:calc(var(--icon-size) + var(--icon-extra-padding));padding-right:calc(var(--icon-size) + var(--icon-extra-padding));width:calc(var(--width) - 2 * var(--icon-size) - 2 * var(--icon-extra-padding))}.pdp-carousel__button{position:absolute;top:50%;transform:translateY(-50%);padding:0}.pdp-carousel__button--prev{left:0}[dir=rtl] .pdp-carousel__button--prev{left:auto;right:0}[dir=rtl] .pdp-carousel__button--next{right:auto;left:0}.pdp-carousel__button__icon--next{transform:rotate(-90deg)}.pdp-carousel__button--next{right:0}.pdp-carousel__button__icon--prev{transform:rotate(90deg)}[dir=rtl] .pdp-carousel__button__icon--prev{transform:rotate(-90deg)}[dir=rtl] .pdp-carousel__button__icon--next{transform:rotate(90deg)}.pdp-carousel--main-image-controls.pdp-carousel--thumbnailsColumn .pdp-carousel__button--prev{left:var(--thumbnails-col-width)}.pdp-carousel--main-image-controls.pdp-carousel--thumbnailsRow .pdp-carousel__button--prev,.pdp-carousel--main-image-controls.pdp-carousel--thumbnailsRow .pdp-carousel__button--next{top:calc(var(--height) / 2)}.pdp-carousel__button--thumbnailsColumn{margin:auto;padding:0}.pdp-carousel__button--thumbnailsRow{padding:0}.pdp-carousel__button__icon--thumbnailsColumn--prev{transform:rotate(180deg)}.pdp-carousel__button__icon--thumbnailsRow--prev{transform:rotate(90deg)}[dir=rtl] .pdp-carousel__button__icon--thumbnailsRow--prev,.pdp-carousel__button__icon--thumbnailsRow--next{transform:rotate(-90deg)}[dir=rtl] .pdp-carousel__button__icon--thumbnailsRow--next{transform:rotate(90deg)}.pdp-carousel__wrapper{--peak: 0px;scroll-padding:var(--peak);width:var(--total-width);height:var(--height);display:flex;flex-wrap:nowrap;gap:var(--gap);-webkit-overflow-scrolling:touch}.pdp-carousel__wrapper--horizontal{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory}.pdp-carousel__slide{display:grid;grid-gap:var(--gap);grid-auto-columns:1fr;grid-auto-rows:100%;scroll-snap-align:end;scroll-snap-stop:always;flex-shrink:0}.pdp-carousel__slide--horizontal{grid-auto-flow:column;width:calc(100% - var(--peak))}.pdp-carousel__slide--horizontal.pdp-carousel__slide--orphan{width:calc((100% / var(--per-page) * var(--length)) - var(--peak) / var(--per-page) * var(--length) - var(--gap) / var(--per-page) * (var(--per-page) - var(--length)))}.pdp-carousel__slide>*{vertical-align:middle;max-width:100%;max-height:100%}.pdp-carousel__slide>img{object-fit:contain;width:100%;height:100%}.pdp-carousel__wrapper--peak{--peak: calc(var(--spacing-medium) + var(--gap))}.pdp-carousel__wrapper--scrollbar{--scroll-foreground: var(--color-neutral-600);--scroll-background: var(--color-neutral-400);scrollbar-color:var(--scroll-foreground) var(--scroll-background);scrollbar-width:thin}.pdp-carousel__wrapper:not(.pdp-carousel__wrapper--scrollbar){scrollbar-width:none}.pdp-carousel__wrapper:not(.pdp-carousel__wrapper--scrollbar)::-webkit-scrollbar{display:none}.pdp-carousel__wrapper--scrollbar::-webkit-scrollbar{width:4px;height:4px}.pdp-carousel__wrapper--scrollbar::-webkit-scrollbar-thumb{background:var(--scroll-foreground)}.pdp-carousel__wrapper--scrollbar::-webkit-scrollbar-track{background:var(--scroll-background)}.pdp-carousel__controls__container--thumbnailsRow{--thumbnails-spacing: var(--spacing-small);--thumbnails-box-width: var(--spacing-xxsmall);--thumbnails-rest: calc(var(--thumbnails-spacing) - var(--thumbnails-box-width));--thumbnails-width: calc((var(--width) - 2 * var(--icon-size) - 4 * var(--thumbnails-spacing) - var(--thumb-peak) - 2 * var(--thumbnails-box-width)) / 4);margin-top:var(--thumbnails-rest);width:var(--width);display:flex}.pdp-carousel__controls__container--thumbnailsColumn{--thumbnails-spacing: var(--spacing-small);--thumbnails-box-width: var(--spacing-xxsmall);--thumbnails-rest: calc(var(--thumbnails-spacing) - var(--thumbnails-box-width));--thumbnails-width: 100%;margin-right:var(--thumbnails-rest);width:calc(var(--thumbnails-col-width) - var(--thumbnails-rest))}.pdp-carousel__controls__container--thumbnailsColumn:not(.pdp-carousel__controls__container--no-arrows){height:calc(max(var(--height),4 * var(--thumbnails-spacing)) - 4 * var(--thumbnails-spacing))}.pdp-carousel__controls__container--thumbnailsColumn.pdp-carousel__controls__container--no-arrows{height:var(--height)}.pdp-carousel__controls__wrapper--thumbnailsColumn{max-height:100%;overflow-y:scroll}.pdp-carousel__controls__wrapper--thumbnailsRow{max-width:100%;overflow-x:scroll}.pdp-carousel__controls--thumbnailsRow>label>span:nth-last-child(1){margin-left:0;margin-right:var(--thumbnails-box-width)}[dir=rtl] .pdp-carousel__controls--thumbnailsRow>label>span:nth-last-child(1){margin-left:var(--thumbnails-box-width);margin-right:0}.pdp-carousel__controls__wrapper::-webkit-scrollbar{display:none}.pdp-carousel__controls__wrapper{-ms-overflow-style:none;scrollbar-width:none}.pdp-carousel__controls{display:flex;flex-direction:row;gap:var(--spacing-xsmall)}.pdp-carousel__controls--thumbnailsColumn{display:grid;grid-template-columns:repeat(1,1fr);grid-auto-rows:1fr;grid-row-gap:var(--thumbnails-spacing);padding:var(--thumbnails-box-width)}.pdp-carousel__controls--thumbnailsRow{grid-column-gap:var(--thumbnails-spacing);padding:var(--thumbnails-box-width)}.pdp-carousel__controls__button{border-radius:50%;width:10px;height:10px;padding:0;border:none;background:var(--color-neutral-400);cursor:pointer}.pdp-carousel__controls__button:hover{background:var(--color-neutral-500)}.pdp-carousel__controls__button:active,.pdp-carousel__controls__button--active{background:var(--color-neutral-600)}.pdp-carousel__slide--last{width:100%}.pdp-carousel__thumbnail__container input[type=radio]{opacity:0;position:absolute;width:0;height:0}.pdp-carousel__thumbnail__container .pdp-carousel__thumbnail__span{--bg-color: var(--color-neutral-300);display:inline-block;box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-400);position:relative;cursor:pointer;background-color:var(--bg-color);background-image:var(--background-image);background-repeat:no-repeat;background-size:cover;height:100%;width:100%;overflow:hidden}.pdp-carousel__thumbnail__content{width:inherit;position:absolute;top:-9999px;bottom:-9999px;left:-9999px;right:-9999px;margin:auto;overflow:hidden}.pdp-carousel__thumbnail__span:hover{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-500);outline:none}.pdp-carousel__controls__wrapper--thumbnailsRow .pdp-carousel__thumbnail__container{min-width:100px}.pdp-carousel__thumbnail__container input[type=radio]:not(:checked):active~.pdp-carousel-thumbnail__span{box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-500);outline:none}.pdp-carousel__thumbnail__container input[type=radio]:checked~.pdp-carousel__thumbnail__span,.pdp-carousel__thumbnail--selected{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-800)}.pdp-carousel__thumbnail__container input[type=radio]:checked:active~.pdp-carousel__thumbnail__span{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-600)}.pdp-carousel__thumbnail__container input[type=radio]:focus-visible+.pdp-carousel__thumbnail__span{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-900),0 0 0 6px var(--color-neutral-400)}.pdp-carousel__thumbnail__span>img{object-fit:cover;width:100%;height:100%}.pdp-product{display:grid;grid-template-columns:repeat(var(--grid-1-columns),1fr);grid-column-gap:var(--grid-1-gutters);margin:0 var(--grid-1-margins)}.pdp-product__gallery-column{display:none}.pdp-product__content-column{grid-column:1 / span 4;color:var(--color-neutral-800)}.pdp-product__header{display:grid;grid-auto-rows:max-content;margin-bottom:var(--spacing-medium)}.pdp-product__breadcrumbs{grid-column:1 / -1;padding:var(--spacing-medium) 0 var(--spacing-xxbig)}.pdp-product__title{font:var(--type-display-3-font);letter-spacing:var(--type-display-3-letter-spacing);margin:0}.pdp-product__sku{font:var(--type-body-1-default-font);max-width:600px}.pdp-product__prices{display:flex;gap:var(--spacing-xsmall);margin-top:var(--spacing-medium)}.pdp-product__out-of-stock__text{font:var(--type-headline-2-strong-font)}.pdp-product__options{grid-column:1 / span 4}.pdp-product__price,.pdp-product__price-special{font:var(--type-headline-2-strong-font)}.pdp-product__price,.pdp-product__sku,.pdp-product__price-special,.pdp-product__out-of-stock__text{letter-spacing:var(--type-headline-2-strong-letter-spacing)}.pdp-product__price--grey{color:var(--color-neutral-500)}.pdp-product__actions,.pdp-product__actions--out-of-stock{display:grid;grid-auto-flow:row;gap:var(--grid-1-gutters);grid-auto-rows:max-content;margin-bottom:var(--spacing-xxbig);margin-top:var(--spacing-big)}.pdp-product__short_description,.pdp-product__attributes{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing);margin-bottom:var(--spacing-small)}.pdp-product__description,.pdp-product__attributes li{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.pdp-product__attributes{margin-top:var(--spacing-xsmall)}.pdp-product__short_description p,.pdp-product__description p,.pdp-product__attributes li p{margin:0}.pdp-product__short_description figure,.pdp-product__description figure{margin:0}.pdp-product__short_description img,.pdp-product__description img{max-width:100%}.pdp-product__images--carousel{max-height:60vh}.pdp-product__images--carousel--thumbnails{max-height:90vh}.pdp-product__images__placeholder{background-color:var(--color-neutral-200)}.pdp-product__buttons{display:grid;grid-auto-rows:max-content;grid-gap:var(--grid-1-gutters)}.pdp-product__buttons a{text-align:center}.pdp-product__buttons a:hover{text-decoration:none}.pdp-product__overlay .pdp-overlay__content{width:100%;height:100%}.pdp-product__overlay__carousel{width:100%;height:100%;box-sizing:border-box}.pdp-product__overlay__carousel img{width:100%;height:100%;object-fit:contain}.pdp-carousel__controls__container--thumbnailsRow img,.pdp-carousel__controls__container--thumbnailsColumn img{object-fit:cover}.pdp-product__quantity,.pdp-product__buttons{grid-column:1 / span 4}@media only screen and (min-width: 1024px){.pdp-product__breadcrumbs{grid-column:2 / -2}.pdp-product{grid-template-columns:repeat(var(--grid-3-columns),1fr);grid-column-gap:var(--grid-3-gutters);margin:0 var(--grid-3-margins);position:relative}.pdp-product__column-container{position:relative;display:flex;flex-direction:column}.pdp-product__column-body{position:sticky;bottom:30%;align-self:flex-end}.pdp-product__gallery-column{display:block;grid-column:2 / span 6}.pdp-product__content-column{grid-column:8 / span 4;padding-top:var(--spacing-medium)}.pdp-product__images--carousel{display:none}.pdp-product__header{margin-bottom:var(--spacing-small)}.pdp-product__actions{grid-template-columns:repeat(var(--grid-1-columns),1fr);grid-column-gap:var(--grid-1-gutters);grid-row-gap:var(--spacing-xxbig);margin-top:var(--spacing-xxbig)}.pdp-product__quantity{grid-column:1 / span 2}.pdp-product__actions--out-of-stock{grid-template-columns:repeat(var(--grid-1-columns),1fr);grid-column-gap:var(--grid-1-gutters);grid-row-gap:var(--spacing-xxbig);margin-top:var(--spacing-small)}.pdp-product__buttons{grid-column:1 / span 4}.pdp-product__out-of-stock__text{grid-column:1 / span 2}.pdp-product__gallery-content,.pdp-product__content{grid-column:2 / span 6}}.pdp-gallery-grid{display:grid;grid-gap:var(--gap);grid-template-columns:repeat(1,1fr);grid-auto-rows:max-content}.pdp-gallery-grid__item>*{height:100%;max-width:100%;min-width:100%;vertical-align:middle;width:100%;object-fit:contain}.pdp-gallery-grid__item:only-child{grid-column:1 / span 2}.pdp-gallery-grid__item:first-child:nth-last-child(2){grid-column:1 / span 2;grid-row:1}.pdp-gallery-grid__item:nth-child(2):last-child{grid-column:1 / 3;grid-row:2}@media only screen and (min-width: 1024px){.pdp-gallery-grid{grid-template-columns:repeat(2,1fr)}}.pdp-price-range .dropin-price{letter-spacing:var(--type-headline-2-strong-letter-spacing);font:var(--type-headline-2-strong-font)}.pdp-price-range__label{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing);margin-left:5px;margin-right:5px}.pdp-overlay{position:fixed;top:0;left:0;z-index:1000;right:0;bottom:0;background-color:var(--color-neutral-50);display:flex;padding:var(--spacing-medium)}.pdp-overlay--centered{align-items:center;justify-content:center}.pdp-overlay__close-button{position:absolute;top:var(--spacing-medium);right:var(--spacing-medium);z-index:1001}.pdp-swatches{display:grid;grid-auto-flow:row;grid-gap:var(--grid-1-gutters);grid-auto-rows:max-content}.pdp-swatches__field{display:grid;font:var(--type-body-2-strong-font);grid-auto-rows:max-content;gap:var(--spacing-xsmall)}.pdp-swatches__field__label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);color:var(--color-neutral-800)}.pdp-swatches__options{display:flex;flex-wrap:wrap;gap:var(--spacing-xsmall)}.pdp-zoom{cursor:zoom-in;overflow:hidden;margin:0;position:relative}.pdp-zoom img{height:100%;max-width:100%;min-width:100%;object-fit:contain;position:relative;transition:transform .2s;transform:var(--transform);vertical-align:middle;width:100%}.pdp-zoom .pdp-zoom__close-button{background-color:var(--color-neutral-50);border-radius:50%;position:absolute;right:var(--spacing-small);top:var(--spacing-small)}.pdp-zoom.pdp-zoom--zoomed{cursor:zoom-out}.pdp-zoom.pdp-zoom--no-effects{cursor:default}@media only screen and (max-width: 768px){.pdp-zoom img{display:block;width:100%;height:100%;transition:transform .2s;transform:var(--transform)}}",{styleId:"PDP"});
2
- import{jsx as r}from"@dropins/tools/preact-jsx-runtime.js";import{deepmerge as c,Render as u}from"@dropins/tools/lib.js";import{useState as f,useEffect as m}from"@dropins/tools/preact-hooks.js";import{UIProvider as b}from"@dropins/tools/components.js";import{events as d}from"@dropins/tools/event-bus.js";import{c as g}from"./chunks/initialize.js";const C={Product:{Incrementer:{label:"Item Quantity"},OutOfStock:{label:"Out of Stock"},AddToCart:{label:"Add to Cart"},Details:{label:"Details"},RegularPrice:{label:"Regular Price"},SpecialPrice:{label:"Special Price"},PriceRange:{From:{label:"From"},To:{label:"to"}},Image:{label:"{product} Image {key} of {total}"}},Swatches:{Required:{label:"Required"}},Carousel:{label:"Carousel",Next:{label:"Next"},Previous:{label:"Previous"},Slide:{label:"Slide"},Controls:{label:"Carousel Controls",Button:{label:"Show slide {key} of {total}"}}},Overlay:{Close:{label:"Close"}},Zoom:{Close:{label:"Close"}}},P={quantityLabel:"Quantity"},p={PDP:C,Custom:P},S={default:p},D=({children:a})=>{var l;const[e,i]=f(),n=(l=g.getConfig())==null?void 0:l.langDefinitions;m(()=>{const o=d.on("locale",t=>{t!==e&&i(t)},{eager:!0});return()=>{o==null||o.off()}},[e]);const s=c(S,n??{});return r(b,{lang:e,langDefinitions:s,children:a})},O=new u(r(D,{}));export{O as render};
1
+ (function(p,t){try{if(typeof document<"u"){const r=document.createElement("style"),e=t.styleId;for(const a in t.attributes)r.setAttribute(a,t.attributes[a]);r.setAttribute("data-dropin",e),r.appendChild(document.createTextNode(p));const o=document.querySelector('style[data-dropin="sdk"]');if(o)o.after(r);else{const a=document.querySelector('link[rel="stylesheet"], style');a?a.before(r):document.head.append(r)}}}catch(r){console.error("dropin-styles (injectCodeFunction)",r)}})(".pdp-carousel{--icon-size: 32px;--icon-extra-padding: 8px;--thumb-peak: 32px;--thumbnails-col-width: 18.6%;position:relative;display:flex;flex-direction:var(--flex-carousel);align-items:center;gap:var(--gap);width:var(--width)}.pdp-carousel .dropin-button--tertiary--disabled:hover{color:var(--color-neutral-500)}.pdp-carousel--thumbnailsColumn{justify-content:flex-end;align-items:start}.pdp-carousel--thumbnailsRow{align-items:center}.pdp-carousel--arrows{padding-left:calc(var(--icon-size) + var(--icon-extra-padding));padding-right:calc(var(--icon-size) + var(--icon-extra-padding));width:calc(var(--width) - 2 * var(--icon-size) - 2 * var(--icon-extra-padding))}.pdp-carousel__button{position:absolute;top:50%;transform:translateY(-50%);padding:0}.pdp-carousel__button--prev{left:0}[dir=rtl] .pdp-carousel__button--prev{left:auto;right:0}[dir=rtl] .pdp-carousel__button--next{right:auto;left:0}.pdp-carousel__button__icon--next{transform:rotate(-90deg)}.pdp-carousel__button--next{right:0}.pdp-carousel__button__icon--prev{transform:rotate(90deg)}[dir=rtl] .pdp-carousel__button__icon--prev{transform:rotate(-90deg)}[dir=rtl] .pdp-carousel__button__icon--next{transform:rotate(90deg)}.pdp-carousel--main-image-controls.pdp-carousel--thumbnailsColumn .pdp-carousel__button--prev{left:var(--thumbnails-col-width)}.pdp-carousel--main-image-controls.pdp-carousel--thumbnailsRow .pdp-carousel__button--prev,.pdp-carousel--main-image-controls.pdp-carousel--thumbnailsRow .pdp-carousel__button--next{top:calc(var(--height) / 2)}.pdp-carousel__button--thumbnailsColumn{margin:auto;padding:0}.pdp-carousel__button--thumbnailsRow{padding:0}.pdp-carousel__button__icon--thumbnailsColumn--prev{transform:rotate(180deg)}.pdp-carousel__button__icon--thumbnailsRow--prev{transform:rotate(90deg)}[dir=rtl] .pdp-carousel__button__icon--thumbnailsRow--prev,.pdp-carousel__button__icon--thumbnailsRow--next{transform:rotate(-90deg)}[dir=rtl] .pdp-carousel__button__icon--thumbnailsRow--next{transform:rotate(90deg)}.pdp-carousel__wrapper{--peak: 0px;scroll-padding:var(--peak);width:var(--total-width);height:var(--height);display:flex;flex-wrap:nowrap;gap:var(--gap);-webkit-overflow-scrolling:touch}.pdp-carousel__wrapper--horizontal{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory}.pdp-carousel__slide{display:grid;grid-gap:var(--gap);grid-auto-columns:1fr;grid-auto-rows:100%;scroll-snap-align:end;scroll-snap-stop:always;flex-shrink:0}.pdp-carousel__slide--horizontal{grid-auto-flow:column;width:calc(100% - var(--peak))}.pdp-carousel__slide--horizontal.pdp-carousel__slide--orphan{width:calc((100% / var(--per-page) * var(--length)) - var(--peak) / var(--per-page) * var(--length) - var(--gap) / var(--per-page) * (var(--per-page) - var(--length)))}.pdp-carousel__slide>*{vertical-align:middle;max-width:100%;max-height:100%}.pdp-carousel__slide>img{object-fit:contain;width:100%;height:100%}.pdp-carousel__wrapper--peak{--peak: calc(var(--spacing-medium) + var(--gap))}.pdp-carousel__wrapper--scrollbar{--scroll-foreground: var(--color-neutral-600);--scroll-background: var(--color-neutral-400);scrollbar-color:var(--scroll-foreground) var(--scroll-background);scrollbar-width:thin}.pdp-carousel__wrapper:not(.pdp-carousel__wrapper--scrollbar){scrollbar-width:none}.pdp-carousel__wrapper:not(.pdp-carousel__wrapper--scrollbar)::-webkit-scrollbar{display:none}.pdp-carousel__wrapper--scrollbar::-webkit-scrollbar{width:4px;height:4px}.pdp-carousel__wrapper--scrollbar::-webkit-scrollbar-thumb{background:var(--scroll-foreground)}.pdp-carousel__wrapper--scrollbar::-webkit-scrollbar-track{background:var(--scroll-background)}.pdp-carousel__controls__container--thumbnailsRow{--thumbnails-spacing: var(--spacing-small);--thumbnails-box-width: var(--spacing-xxsmall);--thumbnails-rest: calc(var(--thumbnails-spacing) - var(--thumbnails-box-width));--thumbnails-width: calc((var(--width) - 2 * var(--icon-size) - 4 * var(--thumbnails-spacing) - var(--thumb-peak) - 2 * var(--thumbnails-box-width)) / 4);margin-top:var(--thumbnails-rest);width:var(--width);display:flex}.pdp-carousel__controls__container--thumbnailsColumn{--thumbnails-spacing: var(--spacing-small);--thumbnails-box-width: var(--spacing-xxsmall);--thumbnails-rest: calc(var(--thumbnails-spacing) - var(--thumbnails-box-width));--thumbnails-width: 100%;margin-right:var(--thumbnails-rest);width:calc(var(--thumbnails-col-width) - var(--thumbnails-rest))}.pdp-carousel__controls__container--thumbnailsColumn:not(.pdp-carousel__controls__container--no-arrows){height:calc(max(var(--height),4 * var(--thumbnails-spacing)) - 4 * var(--thumbnails-spacing))}.pdp-carousel__controls__container--thumbnailsColumn.pdp-carousel__controls__container--no-arrows{height:var(--height)}.pdp-carousel__controls__wrapper--thumbnailsColumn{max-height:100%;overflow-y:scroll}.pdp-carousel__controls__wrapper--thumbnailsRow{max-width:100%;overflow-x:scroll}.pdp-carousel__controls--thumbnailsRow>label>span:nth-last-child(1){margin-left:0;margin-right:var(--thumbnails-box-width)}[dir=rtl] .pdp-carousel__controls--thumbnailsRow>label>span:nth-last-child(1){margin-left:var(--thumbnails-box-width);margin-right:0}.pdp-carousel__controls__wrapper::-webkit-scrollbar{display:none}.pdp-carousel__controls__wrapper{-ms-overflow-style:none;scrollbar-width:none}.pdp-carousel__controls{display:flex;flex-direction:row;gap:var(--spacing-xsmall)}.pdp-carousel__controls--thumbnailsColumn{display:grid;grid-template-columns:repeat(1,1fr);grid-auto-rows:1fr;grid-row-gap:var(--thumbnails-spacing);padding:var(--thumbnails-box-width)}.pdp-carousel__controls--thumbnailsRow{grid-column-gap:var(--thumbnails-spacing);padding:var(--thumbnails-box-width)}.pdp-carousel__controls__button{border-radius:50%;width:10px;height:10px;padding:0;border:none;background:var(--color-neutral-400);cursor:pointer}.pdp-carousel__controls__button:hover{background:var(--color-neutral-500)}.pdp-carousel__controls__button:active,.pdp-carousel__controls__button--active{background:var(--color-neutral-600)}.pdp-carousel__slide--last{width:100%}.pdp-carousel__thumbnail__container input[type=radio]{opacity:0;position:absolute;width:0;height:0}.pdp-carousel__thumbnail__container .pdp-carousel__thumbnail__span{--bg-color: var(--color-neutral-300);display:inline-block;box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-400);position:relative;cursor:pointer;background-color:var(--bg-color);background-image:var(--background-image);background-repeat:no-repeat;background-size:cover;height:100%;width:100%;overflow:hidden}.pdp-carousel__thumbnail__content{width:inherit;position:absolute;top:-9999px;bottom:-9999px;left:-9999px;right:-9999px;margin:auto;overflow:hidden}.pdp-carousel__thumbnail__span:hover{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-500);outline:none}.pdp-carousel__controls__wrapper--thumbnailsRow .pdp-carousel__thumbnail__container{min-width:100px}.pdp-carousel__thumbnail__container input[type=radio]:not(:checked):active~.pdp-carousel-thumbnail__span{box-shadow:0 0 0 var(--shape-border-width-1) var(--color-neutral-500);outline:none}.pdp-carousel__thumbnail__container input[type=radio]:checked~.pdp-carousel__thumbnail__span,.pdp-carousel__thumbnail--selected{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-800)}.pdp-carousel__thumbnail__container input[type=radio]:checked:active~.pdp-carousel__thumbnail__span{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-50),0 0 0 var(--shape-border-width-4) var(--color-neutral-600)}.pdp-carousel__thumbnail__container input[type=radio]:focus-visible+.pdp-carousel__thumbnail__span{box-shadow:0 0 0 var(--shape-border-width-3) var(--color-neutral-900),0 0 0 6px var(--color-neutral-400)}.pdp-carousel__thumbnail__span>img{object-fit:cover;width:100%;height:100%}.pdp-product{display:grid;grid-template-columns:repeat(var(--grid-1-columns),1fr);grid-column-gap:var(--grid-1-gutters);margin:0 var(--grid-1-margins)}.pdp-product__gallery-column{display:none}.pdp-product__content-column{grid-column:1 / span 4;color:var(--color-neutral-800)}.pdp-product__header{display:grid;grid-auto-rows:max-content;margin-bottom:var(--spacing-medium)}.pdp-product__breadcrumbs{grid-column:1 / -1;padding:var(--spacing-medium) 0 var(--spacing-xxbig)}.pdp-product__title{font:var(--type-display-3-font);letter-spacing:var(--type-display-3-letter-spacing);margin:0}.pdp-product__sku{font:var(--type-body-1-default-font);max-width:600px}.pdp-product__prices{display:flex;gap:var(--spacing-xsmall);margin-top:var(--spacing-medium)}.pdp-product__out-of-stock__text{font:var(--type-headline-2-strong-font)}.pdp-product__options{grid-column:1 / span 4}.pdp-product__price,.pdp-product__price-special{font:var(--type-headline-2-strong-font)}.pdp-product__price,.pdp-product__sku,.pdp-product__price-special,.pdp-product__out-of-stock__text{letter-spacing:var(--type-headline-2-strong-letter-spacing)}.pdp-product__price--grey{color:var(--color-neutral-500)}.pdp-product__actions,.pdp-product__actions--out-of-stock{display:grid;grid-auto-flow:row;gap:var(--grid-1-gutters);grid-auto-rows:max-content;margin-bottom:var(--spacing-xxbig);margin-top:var(--spacing-big)}.pdp-product__short_description,.pdp-product__attributes{font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing);margin-bottom:var(--spacing-small)}.pdp-product__description,.pdp-product__attributes li{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.pdp-product__attributes{margin-top:var(--spacing-xsmall)}.pdp-product__short_description p,.pdp-product__description p,.pdp-product__attributes li p{margin:0}.pdp-product__short_description figure,.pdp-product__description figure{margin:0}.pdp-product__short_description img,.pdp-product__description img{max-width:100%}.pdp-product__images--carousel{max-height:60vh}.pdp-product__images--carousel--thumbnails{max-height:90vh}.pdp-product__images__placeholder{background-color:var(--color-neutral-200)}.pdp-product__buttons{display:grid;grid-auto-rows:max-content;grid-gap:var(--grid-1-gutters)}.pdp-product__buttons a{text-align:center}.pdp-product__buttons a:hover{text-decoration:none}.pdp-product__overlay .pdp-overlay__content{width:100%;height:100%}.pdp-product__overlay__carousel{width:100%;height:100%;box-sizing:border-box}.pdp-product__overlay__carousel img{width:100%;height:100%;object-fit:contain}.pdp-carousel__controls__container--thumbnailsRow img,.pdp-carousel__controls__container--thumbnailsColumn img{object-fit:cover}.pdp-product__quantity,.pdp-product__buttons{grid-column:1 / span 4}@media only screen and (min-width: 1024px){.pdp-product__breadcrumbs{grid-column:2 / -2}.pdp-product{grid-template-columns:repeat(var(--grid-3-columns),1fr);grid-column-gap:var(--grid-3-gutters);margin:0 var(--grid-3-margins);position:relative}.pdp-product__column-container{position:relative;display:flex;flex-direction:column}.pdp-product__column-body{position:sticky;bottom:30%;align-self:flex-end}.pdp-product__gallery-column{display:block;grid-column:2 / span 6}.pdp-product__content-column{grid-column:8 / span 4;padding-top:var(--spacing-medium)}.pdp-product__images--carousel{display:none}.pdp-product__header{margin-bottom:var(--spacing-small)}.pdp-product__actions{grid-template-columns:repeat(var(--grid-1-columns),1fr);grid-column-gap:var(--grid-1-gutters);grid-row-gap:var(--spacing-xxbig);margin-top:var(--spacing-xxbig)}.pdp-product__quantity{grid-column:1 / span 2}.pdp-product__actions--out-of-stock{grid-template-columns:repeat(var(--grid-1-columns),1fr);grid-column-gap:var(--grid-1-gutters);grid-row-gap:var(--spacing-xxbig);margin-top:var(--spacing-small)}.pdp-product__buttons{grid-column:1 / span 4}.pdp-product__out-of-stock__text{grid-column:1 / span 2}.pdp-product__gallery-content,.pdp-product__content{grid-column:2 / span 6}}.pdp-gallery-grid{display:grid;grid-gap:var(--gap);grid-template-columns:repeat(1,1fr);grid-auto-rows:max-content}.pdp-gallery-grid__item>*{height:100%;max-width:100%;min-width:100%;vertical-align:middle;width:100%;object-fit:contain}.pdp-gallery-grid__item:only-child{grid-column:1 / span 2}.pdp-gallery-grid__item:first-child:nth-last-child(2){grid-column:1 / span 2;grid-row:1}.pdp-gallery-grid__item:nth-child(2):last-child{grid-column:1 / 3;grid-row:2}@media only screen and (min-width: 1024px){.pdp-gallery-grid{grid-template-columns:repeat(2,1fr)}}.pdp-price-range .dropin-price{letter-spacing:var(--type-headline-2-strong-letter-spacing);font:var(--type-headline-2-strong-font)}.pdp-price-range__label{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing);margin-left:5px;margin-right:5px}.pdp-overlay{position:fixed;top:0;left:0;z-index:1000;right:0;bottom:0;background-color:var(--color-neutral-50);display:flex;padding:var(--spacing-medium)}.pdp-overlay--centered{align-items:center;justify-content:center}.pdp-overlay__content{display:flex;height:100%;width:100%}.pdp-overlay__close-button{position:absolute;top:var(--spacing-medium);right:var(--spacing-medium);z-index:1001}.pdp-swatches{display:grid;grid-auto-flow:row;grid-gap:var(--grid-1-gutters);grid-auto-rows:max-content;position:relative;z-index:0}.pdp-swatches__field{display:grid;font:var(--type-body-2-strong-font);grid-auto-rows:max-content;gap:var(--spacing-xsmall)}.pdp-swatches__field__label{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);color:var(--color-neutral-800)}.pdp-swatches__options{display:flex;flex-wrap:wrap;gap:var(--spacing-xsmall)}.pdp-zoom{cursor:zoom-in;overflow:hidden;margin:0;position:relative}.pdp-zoom img{height:100%;max-width:100%;min-width:100%;object-fit:contain;position:relative;transition:transform .2s;transform:var(--transform);vertical-align:middle;width:100%}.pdp-zoom .pdp-zoom__close-button{background-color:var(--color-neutral-50);border-radius:50%;position:absolute;right:var(--spacing-small);top:var(--spacing-small)}.pdp-zoom.pdp-zoom--zoomed{cursor:zoom-out}.pdp-zoom.pdp-zoom--no-effects{cursor:default}@media only screen and (max-width: 768px){.pdp-zoom img{display:block;width:100%;height:100%;transition:transform .2s;transform:var(--transform)}}.pdp-header{display:grid;grid-auto-rows:max-content}.pdp-header__title{font:var(--type-display-3-font);letter-spacing:var(--type-display-3-letter-spacing);margin:0}.pdp-header__sku{font:var(--type-body-1-default-font);max-width:600px}.pdp-price{display:flex;gap:var(--spacing-xsmall);margin-top:var(--spacing-medium)}.pdp-price__amount,.pdp-price__amount-special{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing)}.pdp-price__amount--grey{color:var(--color-neutral-500)}",{styleId:"PDP"});
2
+ import{jsx as r}from"@dropins/tools/preact-jsx-runtime.js";import{deepmerge as c,Render as u}from"@dropins/tools/lib.js";import{useState as m,useEffect as f}from"@dropins/tools/preact-hooks.js";import{UIProvider as b}from"@dropins/tools/components.js";import{events as d}from"@dropins/tools/event-bus.js";import{c as g}from"./chunks/fetchPDPData.js";import"@dropins/tools/fetch-graphql.js";import"./chunks/getProductConfigurationValues.js";const C={Product:{Incrementer:{label:"Item Quantity"},OutOfStock:{label:"Out of Stock"},AddToCart:{label:"Add to Cart"},Details:{label:"Details"},RegularPrice:{label:"Regular Price"},SpecialPrice:{label:"Special Price"},PriceRange:{From:{label:"From"},To:{label:"to"}},Image:{label:"{product} Image {key} of {total}"}},Swatches:{Required:{label:"Required"},ChooseOption:{label:"Choose an option"}},Carousel:{label:"Carousel",Next:{label:"Next"},Previous:{label:"Previous"},Slide:{label:"Slide"},Controls:{label:"Carousel Controls",Button:{label:"Show slide {key} of {total}"}}},Overlay:{Close:{label:"Close"}},Zoom:{Close:{label:"Close"}}},p={quantityLabel:"Quantity"},P={PDP:C,Custom:p},S={default:P},D=({children:a})=>{var t;const[e,i]=m(),n=(t=g.getConfig())==null?void 0:t.langDefinitions;f(()=>{const o=d.on("locale",l=>{l!==e&&i(l)},{eager:!0});return()=>{o==null||o.off()}},[e]);const s=c(S,n??{});return r(b,{lang:e,langDefinitions:s,children:a})},q=new u(r(D,{}));export{q as render};
@@ -1,185 +0,0 @@
1
- import{c as B}from"./initialize.js";import{FetchGraphQL as et}from"@dropins/tools/fetch-graphql.js";const{setEndpoint:gt,setFetchGraphQlHeader:ht,removeFetchGraphQlHeader:wt,setFetchGraphQlHeaders:xt,fetchGraphQl:q,getConfig:_t}=new et().getMethods();function K(e,r){var i,u,o;const n=e?{name:e.name,sku:e.sku,addToCartAllowed:e.addToCartAllowed,inStock:e.inStock,shortDescription:e.shortDescription,metaDescription:e.metaDescription,metaKeyword:e.metaKeyword,metaTitle:e.metaTitle,description:e.description,images:rt(e),prices:mt(e,!!r),attributes:nt(e),options:ut(e),optionUIDs:at(e),url:e.url,urlKey:e.urlKey,externalId:e.externalId,externalParentId:e.externalParentId,variantSku:e.variantSku}:null,t=(o=(u=(i=B.getConfig())==null?void 0:i.models)==null?void 0:u.ProductDetails)==null?void 0:o.transform;return t&&n?t(n):n}function rt(e){var r,n;return(n=(r=e.images)==null?void 0:r.filter(t=>{var i;return!((i=t.roles)!=null&&i.includes("hide_from_pdp"))}))==null?void 0:n.map(t=>(t.url=t.url.replace(/^https?:/,""),t))}function nt(e){var r,n;return(n=(r=e.attributes)==null?void 0:r.filter(({roles:t})=>(t==null?void 0:t.indexOf("visible_in_pdp"))!==-1))==null?void 0:n.map(({label:t,value:i,name:u})=>({id:u,label:t,value:i.toString().split(",").join(", ")}))}function ut(e){const{options:r,optionUIDs:n}=e;return r==null?void 0:r.map(({id:t,title:i,required:u,multi:o,values:m})=>{var d,s;const a=(d=m==null?void 0:m[0])==null?void 0:d.__typename;let l=m==null?void 0:m[0].type;const c=((s=m==null?void 0:m[0])==null?void 0:s.__typename)==="ProductViewOptionValueProduct";return l?l=l.replace("COLOR_HEX","color").replace("TEXT","text").replace("IMAGE","image"):l="dropdown",{id:t,type:l,typename:a,label:i,required:u,multiple:o,items:c?it(m,n):ot(m,n,l)}})}function it(e,r){return e==null?void 0:e.map(({id:n,title:t,inStock:i,isDefault:u,product:o})=>({id:n,inStock:i,label:t,selected:(r==null?void 0:r.indexOf(n))>-1||u,value:n,product:o}))}function ot(e,r,n){return e==null?void 0:e.map(({id:t,title:i,inStock:u,value:o})=>({id:t,inStock:u,label:i,selected:(r==null?void 0:r.indexOf(t))>-1,value:(n==null?void 0:n.toLowerCase())==="dropdown"?t:o==null?void 0:o.replace(/^https?:/,"")}))}function mt(e,r){var E,x,H,I,L;const{price:n,priceRange:t,options:i,optionUIDs:u}=e;let{__typename:o}=e;function m(){var g;const P=n.regular.amount.value,f=((g=n.final)==null?void 0:g.amount.value)??n.regular.amount.value,y=n.regular.amount.currency==="NONE"?"USD":n==null?void 0:n.regular.amount.currency;return[P,f,f,y]}function a(){var _,b,S,V,T,C,D,A,F,$,G,M;const P=(_=t==null?void 0:t.minimum)==null?void 0:_.final.amount.value,f=(b=t==null?void 0:t.maximum)==null?void 0:b.final.amount.value;let y;((V=(S=t==null?void 0:t.minimum)==null?void 0:S.regular)==null?void 0:V.amount.value)===((C=(T=t==null?void 0:t.maximum)==null?void 0:T.regular)==null?void 0:C.amount.value)&&(y=(A=(D=t==null?void 0:t.minimum)==null?void 0:D.regular)==null?void 0:A.amount.value);const g=(($=(F=t==null?void 0:t.minimum)==null?void 0:F.final)==null?void 0:$.amount.currency)==="NONE"?"USD":(M=(G=t==null?void 0:t.minimum)==null?void 0:G.final)==null?void 0:M.amount.currency;return[y,P,f,g]}function l(){var S,V,T,C,D,A,F,$,G,M,X,Y;let P=0,f=0;i==null||i.forEach(k=>{var z;const j=k==null?void 0:k.values;if(j&&Array.isArray(j)){const h=j.map(p=>{var Q,N,J,W;return(W=(J=(N=(Q=p==null?void 0:p.product)==null?void 0:Q.price)==null?void 0:N.regular)==null?void 0:J.amount)==null?void 0:W.value}).filter(p=>p!==void 0),v=h.length>0?Math.max(...h):0;P+=v}else P+=0;(z=k==null?void 0:k.values)==null||z.forEach(h=>{var v,p,Q,N;u!=null&&u.includes(h.id)&&(f+=(N=(Q=(p=(v=h==null?void 0:h.product)==null?void 0:v.price)==null?void 0:p.final)==null?void 0:Q.amount)==null?void 0:N.value)})});const y=(S=t==null?void 0:t.minimum)==null?void 0:S.final.amount.value,g=(V=t==null?void 0:t.maximum)==null?void 0:V.final.amount.value;let _;((C=(T=t==null?void 0:t.minimum)==null?void 0:T.regular)==null?void 0:C.amount.value)===((A=(D=t==null?void 0:t.maximum)==null?void 0:D.regular)==null?void 0:A.amount.value)&&(_=($=(F=t==null?void 0:t.minimum)==null?void 0:F.regular)==null?void 0:$.amount.value);const b=((M=(G=t==null?void 0:t.minimum)==null?void 0:G.final)==null?void 0:M.amount.currency)==="NONE"?"USD":(Y=(X=t==null?void 0:t.minimum)==null?void 0:X.final)==null?void 0:Y.amount.currency;return r&&!u?[_,y,g,b]:P===(t==null?void 0:t.maximum.regular.amount.value)?[f,f,f,b]:[_,y,g,b]}const[c,d,s,w]=o==="SimpleProductView"?m():r?l():a(),O=o==="SimpleProductView"?(E=n==null?void 0:n.roles)==null?void 0:E.includes("visible"):((H=(x=t==null?void 0:t.maximum)==null?void 0:x.roles)==null?void 0:H.includes("visible"))&&((L=(I=t==null?void 0:t.minimum)==null?void 0:I.roles)==null?void 0:L.includes("visible"));return s&&d===s?{regular:{amount:c,currency:w,variant:c&&d!==c?"strikethrough":"default"},final:{amount:s,currency:w,variant:"default"},visible:O}:{final:{minimumAmount:d,maximumAmount:s,currency:w},visible:O}}function at(e){var n;let{optionUIDs:r}=e;return(n=e==null?void 0:e.options)==null||n.map(({values:t})=>{var u;((u=t==null?void 0:t[0])==null?void 0:u.__typename)==="ProductViewOptionValueProduct"&&!r&&(r=[],t==null||t.map(({id:o,isDefault:m})=>{m&&(r==null?void 0:r.indexOf(o))===-1&&r.push(o)}))}),r}const lt=`
2
- fragment ProductOptionFragment on ProductViewOption {
3
- id
4
- title
5
- required
6
- multi
7
- values {
8
- id
9
- title
10
- inStock
11
- __typename
12
- ... on ProductViewOptionValueProduct {
13
- title
14
- quantity
15
- isDefault
16
- __typename
17
- product {
18
- sku
19
- shortDescription
20
- metaDescription
21
- metaKeyword
22
- metaTitle
23
- name
24
- price {
25
- final {
26
- amount {
27
- value
28
- currency
29
- }
30
- }
31
- regular {
32
- amount {
33
- value
34
- currency
35
- }
36
- }
37
- roles
38
- }
39
- }
40
- }
41
- ... on ProductViewOptionValueSwatch {
42
- id
43
- title
44
- type
45
- value
46
- inStock
47
- }
48
- }
49
- }
50
- `,R=`
51
- fragment ProductFragment on ProductView {
52
- __typename
53
- id
54
- sku
55
- name
56
- shortDescription
57
- metaDescription
58
- metaKeyword
59
- metaTitle
60
- description
61
- inStock
62
- addToCartAllowed
63
- url
64
- urlKey
65
- externalId
66
-
67
- images(roles: []) {
68
- url
69
- label
70
- roles
71
- }
72
-
73
- attributes(roles: []) {
74
- name
75
- label
76
- value
77
- roles
78
- }
79
-
80
- ... on SimpleProductView {
81
- price {
82
- roles
83
-
84
- regular {
85
- amount {
86
- value
87
- currency
88
- }
89
- }
90
-
91
- final {
92
- amount {
93
- value
94
- currency
95
- }
96
- }
97
- }
98
- }
99
-
100
-
101
- ... on ComplexProductView {
102
- options {
103
- ...ProductOptionFragment
104
- }
105
-
106
- priceRange {
107
- maximum {
108
- final {
109
- amount {
110
- value
111
- currency
112
- }
113
- }
114
- regular {
115
- amount {
116
- value
117
- currency
118
- }
119
- }
120
- roles
121
- }
122
- minimum {
123
- final {
124
- amount {
125
- value
126
- currency
127
- }
128
- }
129
- regular {
130
- amount {
131
- value
132
- currency
133
- }
134
- }
135
- roles
136
- }
137
- }
138
- }
139
- }
140
-
141
- ${lt}
142
- `,tt=`
143
- query GET_PRODUCT_DATA($skus: [String]) {
144
- products(skus: $skus) {
145
- ...ProductFragment
146
- }
147
- }
148
-
149
- ${R}
150
- `;function Z(e){return e.some(r=>(r==null?void 0:r.__typename)==="ProductViewOptionValueProduct")}const bt=async e=>{var u,o,m,a,l,c,d;const r=(a=(m=(o=(u=B)==null?void 0:u.getConfig())==null?void 0:o.models)==null?void 0:m.ProductDetails)==null?void 0:a.initialData;let n=(l=r==null?void 0:r.options)==null?void 0:l.some(s=>Z(s.values));if(r)return K(r,!!n);const{data:t}=await q(tt,{method:"GET",variables:{skus:[e]}}),i=(c=t==null?void 0:t.products)==null?void 0:c[0];return n=(d=i==null?void 0:i.options)==null?void 0:d.some(s=>Z(s.values)),K(i,!!n)},ct=`
151
- query REFINE_PRODUCT_QUERY(
152
- $optionIds: [String!]!
153
- $sku: String!
154
- ) {
155
- # Refined Product
156
- refineProduct(
157
- optionIds: $optionIds
158
- sku: $sku
159
- ) {
160
- ...ProductFragment
161
- }
162
-
163
- # Parent Product
164
- products(skus: [$sku]) {
165
- ...ProductFragment
166
- }
167
-
168
- # %extendedPlaceholder%
169
- }
170
-
171
- ${R}
172
- `;async function U(e,r,n){var m;if(n)return{...(m=(await q(tt,{method:"GET",variables:{skus:[e]}})).data)==null?void 0:m.products[0],optionUIDs:r};const t=st(r),i=dt(t,e),u=ct.replace("# %extendedPlaceholder%",i),{data:o}=await q(u,{method:"GET",variables:{optionIds:r,sku:e}});return o}const kt=async(e,r,n,t)=>{var s,w,O,E;let i;if(i=await U(e,r,t),!i)return null;if(t)return K({...i,optionUIDs:r},!0);let{products:u,refineProduct:o,...m}=i;const a=u==null?void 0:u[0],l=ft(Object.values(m),a.options,n);if(n!=null&&n.length&&o===null){r=Pt(l,r,n);const x=await U(e,r);o=x==null?void 0:x.refineProduct}const c=K({...o||a,sku:a.sku,name:a.name,externalParentId:a==null?void 0:a.externalId,options:l,optionUIDs:r,variantSku:(o==null?void 0:o.__typename)==="SimpleProductView"?o==null?void 0:o.sku:void 0}),d=(E=(O=(w=(s=B)==null?void 0:s.getConfig())==null?void 0:w.models)==null?void 0:O.ProductDetails)==null?void 0:E.fallbackData;return d?d(a,c):c};function st(e){if(e.length<2)return[e];const r=[];return e.forEach(n=>{const t=[];e.forEach(i=>{n!==i&&t.push(i)}),r.push(t)}),r}function dt(e,r){return e.map((n,t)=>`
173
- ProductOption${t}: refineProduct(
174
- optionIds: [
175
- ${n.map(i=>`"${i}"`).join(", ")}
176
- ]
177
- sku: "${r}"
178
- ) {
179
- ... on ComplexProductView {
180
- options {
181
- ...ProductOptionFragment
182
- }
183
- }
184
- }
185
- `).join("")}function ft(e,r,n){const t=Object.values(e).filter(u=>!!u).reduce((u,o)=>o.options?[...u,...o.options]:[...u],[]),i=new Map(r.map(u=>[u.id,u]));return t.forEach(u=>{n!=null&&n.includes(u.id)||i.set(u.id,u)}),[...i.values()]}function Pt(e,r,n){const t=[];let i;return e.forEach(u=>{var o,m,a,l;n.includes(u.id)?i=((m=(o=u.values)==null?void 0:o.find(c=>r.includes(c==null?void 0:c.id)))==null?void 0:m.id)||((a=u.values[0])==null?void 0:a.id):i=(l=u.values[0])==null?void 0:l.id,t.push(i)}),t}export{ht as a,xt as b,bt as c,kt as d,q as f,_t as g,wt as r,gt as s};
@@ -1 +0,0 @@
1
- import{Initializer as t}from"@dropins/tools/lib.js";const i=new t({init:async n=>{const o={defaultLocale:"en-US"};i.config.setConfig({...o,...n})},listeners:()=>[]}),c=i.config;export{c,i};