@dropins/storefront-pdp 3.4.0-alpha-20261026164529 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,63 @@
1
1
  # @dropins/storefront-pdp
2
2
 
3
- ## 3.4.0-alpha-20261026164529
3
+ ## 3.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 4b7a9aa: Add a typed data model for the `ac_customizable_options` product
8
+ attribute (Magento Customizable Options: priced selectable choices and
9
+ shopper-input fields). Adds `getCustomizableOptionsAttribute()` in
10
+ `useProductData` for typed, JSON-string-or-object-safe access, coercing string
11
+ `price` fields to numbers, and exports `isCustomOptionUID` from
12
+ `getRefinedProduct` for reuse.
13
+ - bd4f3a7: Render priced selectable customizable options
14
+ (drop_down/radio/checkbox/multiple) from the `ac_customizable_options` product
15
+ attribute. Adds a `CustomizableOptions` component and
16
+ `ProductCustomizableOptions` container, and wires an equivalent
17
+ `renderCustomizableOptions()` into the deprecated `ProductDetails`/`Product`
18
+ components. Selecting a value toggles its `custom-option/<optionId>/<valueId>`
19
+ UID in `values.optionsUIDs`; required options are shown with a "Required"
20
+ label. Products with no `ac_customizable_options` attribute render nothing
21
+ extra. Required-option enforcement/Add-to-Cart gating and a live price-delta
22
+ preview are out of scope for this change and tracked separately.
23
+ - a5e4a7e: Support text, multiline text, date, local date-time, and time
24
+ customizable options in both PDP rendering paths. Preserve entered option UIDs
25
+ and values alongside selectable options and bundle quantities, and display a
26
+ disabled placeholder for file options.
27
+
28
+ ### Patch Changes
29
+
30
+ - b489882: Fix accessibility issues in the product image preview modal: keyboard
31
+ focus is now trapped inside the dialog while open and restored to the trigger
32
+ on close, and the carousel slide indicators now expose their selected state to
33
+ assistive technology and meet minimum color contrast requirements.
34
+ - 8307ce4: Upgrade `@adobe-commerce/elsie` from `~1.9.0` to
35
+ `3.0.0-alpha-20261007160511` and migrate the repository from Yarn to pnpm
36
+ 11.17.0. This combines the v1→v2 and v2→v3 elsie toolchain migrations:
37
+ `.elsie.js` moves to `elsie.config.js`, `.eslintrc.js` is replaced by a flat
38
+ `eslint.config.js` composed from Elsie's named layers, `jest.config.js` uses
39
+ the `defineConfig({ preset: 'preact' })` factory, and
40
+ `prettier.config.js`/Husky are replaced by the `"prettier"` package.json key,
41
+ Elsie's `format`/`format:check` scripts, and a native `.githooks/pre-commit`
42
+ hook. Tests import `render`/`fireEvent`/etc. from
43
+ `@adobe-commerce/elsie/tests/preact` instead of the removed
44
+ `@adobe-commerce/elsie/lib/tests`. The pnpm migration adds a seven-day
45
+ dependency release-age gate (`minimumReleaseAge`) and explicit build-script
46
+ permissions (`allowBuilds`) in `pnpm-workspace.yaml`, for both the package
47
+ root and the `cypress/` sub-project. Storybook resolves its framework, addons,
48
+ and a11y test-runner hooks through Elsie's `storybook/config` and
49
+ `storybook/test-runner` entry points.
50
+
51
+ Because Elsie now supplies `axe-playwright`, the Storybook accessibility
52
+ checks run for the first time and surfaced a contrast issue in the regular
53
+ price shown next to a special price. `.pdp-price__amount--grey` and
54
+ `.pdp-product__price--grey` used `--color-neutral-500`, documented in the
55
+ design system as "Disabled text" and measuring 1.95:1 against white. Both now
56
+ use `--color-neutral-700` ("Secondary text"), measuring 5.7:1 and meeting the
57
+ WCAG 2 AA 4.5:1 minimum. The affected element is meaningful content labelled
58
+ `Regular Price` for assistive technology, not a disabled control.
59
+
60
+ ## 3.4.0-beta.0
4
61
 
5
62
  ### Minor Changes
6
63
 
@@ -24,16 +81,6 @@
24
81
  customizable options in both PDP rendering paths. Preserve entered option UIDs
25
82
  and values alongside selectable options and bundle quantities, and display a
26
83
  disabled placeholder for file options.
27
- - 8add2e5: Add the `ProductRating` container, which renders the product average
28
- rating and review count with the SDK `StarRating` component. Values come from
29
- the `ac_rating_summary` (0–100) and `ac_review_count` product attributes; the
30
- container renders nothing when they are missing (for example, when reviews are
31
- disabled or the product has no approved reviews). Configurable products keep
32
- the parent product's rating when a variant is selected.
33
-
34
- Requires `StarRating`, currently only available in the `@dropins/tools` 3.0
35
- alpha (`3.0.0-alpha-20261021202251`). Do not include in a stable release until
36
- `StarRating` ships in a stable `@dropins/tools`.
37
84
 
38
85
  ### Patch Changes
39
86
 
package/api.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- import{merge as ve,Initializer as _e}from"@dropins/tools/lib.js";import{events as E}from"@dropins/tools/event-bus.js";import{PRODUCT_FRAGMENT as ne}from"./fragments.js";import{FetchGraphQL as Se}from"@dropins/tools/fetch-graphql.js";function Tt(e){const r=new URLSearchParams(window.location.search);Object.entries(e).forEach(([n,t])=>{t===null?r.delete(n):r.set(n,String(t))});let i=window.location.pathname;i+=`?${r.toString()}`,i+=window.location.hash,window.history.replaceState({},"",i)}function Te(){const e=new URLSearchParams(window.location.search),r={};return e.forEach((i,n)=>{r[n]=i}),r}function Ae(e=1){const i=(Te()||{}).quantity;if(i){const n=parseInt(i,10);if(!isNaN(n)&&Number.isInteger(n)&&n>0)return n}return e}function xe(e){var r,i,n,t,s,u,l,a,c,o,m,f;return{productId:Number(e==null?void 0:e.externalId),name:e==null?void 0:e.name,sku:(e==null?void 0:e.variantSku)||(e==null?void 0:e.sku),topLevelSku:e==null?void 0:e.sku,variantName:e==null?void 0:e.variantName,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:e==null?void 0:e.productType,pricing:{regularPrice:((i=(r=e==null?void 0:e.prices)==null?void 0:r.regular)==null?void 0:i.amount)||0,minimalPrice:(t=(n=e==null?void 0:e.prices)==null?void 0:n.final)==null?void 0:t.minimumAmount,maximalPrice:(u=(s=e==null?void 0:e.prices)==null?void 0:s.final)==null?void 0:u.maximumAmount,specialPrice:(a=(l=e==null?void 0:e.prices)==null?void 0:l.final)==null?void 0:a.amount,tierPricing:void 0,currencyCode:((o=(c=e==null?void 0:e.prices)==null?void 0:c.final)==null?void 0:o.currency)||"USD"},canonicalUrl:e==null?void 0:e.url,mainImageUrl:(f=(m=e==null?void 0:e.images)==null?void 0:m[0])==null?void 0:f.url}}const we={PRODUCT_CONTEXT:"productContext",CHANNEL_CONTEXT:"channelContext"},Ue={PRODUCT_PAGE_VIEW:"product-page-view"};function Oe(){return window.adobeDataLayer=window.adobeDataLayer||[],window.adobeDataLayer}function ke(){return{_id:"https://ns.adobe.com/xdm/channels/web",_type:"https://ns.adobe.com/xdm/channel-types/web"}}function Ce(e,r){const i=Oe();i.push({[e]:null}),i.push({[e]:r})}function Ne(){typeof window>"u"||Ce(we.CHANNEL_CONTEXT,ke())}function Ie(e,r){Oe().push(n=>{const t=n.getState?n.getState():{};n.push({event:e,eventInfo:{...t,...r}})})}function Fe(e){const r=xe(e);Ce(we.PRODUCT_CONTEXT,r),Ne(),Ie(Ue.PRODUCT_PAGE_VIEW)}var Z=(e=>(e.ComplexProduct="complex",e.SimpleProduct="simple",e))(Z||{}),De=(e=>(e.ComplexProductView="ComplexProductView",e.SimpleProductView="SimpleProductView",e))(De||{});function Qe(e){return!!e.canEditQuantity}function Ve(e){const r=e.quantity??e.qty,i=Number(r);return Number.isFinite(i)&&i>0?i:1}function Me(e,r){if(!(e!=null&&e.length)||!(r!=null&&r.length))return{};const i={};for(const n of e)if(n.typename==="ProductViewOptionValueProduct")for(const t of n.items)r.includes(t.id)&&(i[t.id]=t.quantity??1);return i}function Ge(e,r,i){const n=Me(r,i);return e?Object.fromEntries(Object.entries(n).map(([t,s])=>[t,e[t]??s])):n}function be(e){return e?Object.entries(e).map(([r,i])=>({uid:r,value:String(i)})):[]}function Le(e){if(!(e!=null&&e.length))return{};const r={};for(const i of e){const n=Number(i.value);Number.isFinite(n)&&n>0&&(r[i.uid]=n)}return r}function qe(e,r,i){const n=new Set([...Object.keys(r||{}),...Object.keys(i)]);return[...(e||[]).filter(t=>!n.has(t.uid)),...be(i)]}function z(e,r){var u,l,a,c,o,m,f,P,h,v,C,b;const i=((c=(a=(l=(u=e==null?void 0:e.options)==null?void 0:u[0])==null?void 0:l.values)==null?void 0:a[0])==null?void 0:c.__typename)==="ProductViewOptionValueProduct",n=Ye(e,i,r==null?void 0:r.preselectFirstOption),t=(e==null?void 0:e.__typename)===De.SimpleProductView?Z.SimpleProduct:Z.ComplexProduct,s=e?{name:e.name,sku:e.sku,isBundle:i,addToCartAllowed:e.addToCartAllowed,inStock:e.inStock,shortDescription:e.shortDescription,metaDescription:e.metaDescription,metaKeyword:e.metaKeyword,metaTitle:e.metaTitle,description:e.description,images:Re(e),videos:Be(e),prices:Ke(e,i,n),attributes:je(e),options:$e(He(e,i)),optionUIDs:n,url:e.url,urlKey:e.urlKey,externalId:e.externalId,externalParentId:e.externalParentId,variantSku:e.variantSku,variantName:e.variantName,productType:t}:null;return ve(s,((P=(f=(m=(o=I.getConfig())==null?void 0:o.models)==null?void 0:m.ProductDetails)==null?void 0:f.transformer)==null?void 0:P.call(f,e))??((b=(C=(v=(h=I.getConfig())==null?void 0:h.models)==null?void 0:v.ProductDetails)==null?void 0:C.transform)==null?void 0:b.call(C,e)))}function $e(e){var i,n,t;if(!e)return;const r=(t=(n=(i=I.getConfig())==null?void 0:i.models)==null?void 0:n.ProductOptions)==null?void 0:t.optionsTransformer;if(!r)return e;try{return r(e)??e}catch(s){return console.error("product-transform: optionsTransformer threw an error, using original options",s),e}}function Re(e){var r,i;return(i=(r=e.images)==null?void 0:r.filter(n=>{var t;return!((t=n.roles)!=null&&t.includes("hide_from_pdp"))}))==null?void 0:i.map(n=>(n.url=n.url.replace(/^https?:/,""),n))}function Be(e){var r;return(r=e.videos)==null?void 0:r.map(i=>{var n,t;return{url:(n=i.url)==null?void 0:n.replace(/^https?:/,""),title:i.title,description:i.description,preview:i.preview?{url:(t=i.preview.url)==null?void 0:t.replace(/^https?:/,""),label:i.preview.label,roles:i.preview.roles}:void 0}})}function je(e){var r,i;return(i=(r=e.attributes)==null?void 0:r.filter(({roles:n})=>(n==null?void 0:n.indexOf("visible_in_pdp"))!==-1))==null?void 0:i.map(({label:n,value:t,name:s})=>{if(s!=null&&s.startsWith("ac_"))try{let u;typeof t=="string"?u=JSON.parse(t):typeof t=="object"&&(u=t);const l=ee(u);return{id:s,label:n,value:JSON.stringify(l)}}catch{return{id:s,label:n,value:t.toString().split(",").join(", ")}}return{id:s,label:n,value:t.toString().split(",").join(", ")}})}function ee(e){if(Array.isArray(e))return e.map(ee);if(e!==null&&typeof e=="object"){const r={};for(const[i,n]of Object.entries(e)){let t=i;i==="validation_rule"?t="validationRule":i==="min_length"?t="minLength":i==="max_length"?t="maxLength":i==="purchase_separately"&&(t="purchaseSeparately"),r[t]=ee(n)}return r}return e}function He(e,r){const{options:i,optionUIDs:n}=e;return i==null?void 0:i.map(({id:t,title:s,required:u,multi:l,values:a})=>{var m,f;const c=(m=a==null?void 0:a[0])==null?void 0:m.__typename;let o=(f=a==null?void 0:a[0])==null?void 0:f.type;return o?o=o.replace("COLOR_HEX","color").replace("TEXT","text").replace("IMAGE","image"):o="dropdown",{id:t,type:o,typename:c,label:s,required:u,multiple:l,items:r?We(a,n):Xe(a,n,o)}})}function We(e,r){return e==null?void 0:e.filter(({enabled:i})=>typeof i>"u"||i).map(i=>{const{id:n,title:t,inStock:s,isDefault:u,product:l}=i;return{id:n,inStock:s,label:t,selected:(r==null?void 0:r.indexOf(n))>-1||u,value:n,product:l,quantity:Ve(i),canEditQuantity:Qe(i)}})}function Xe(e,r,i){return e==null?void 0:e.map(({id:n,title:t,inStock:s,value:u})=>({id:n,inStock:s,label:t,selected:(r==null?void 0:r.indexOf(n))>-1,value:(i==null?void 0:i.toLowerCase())==="dropdown"?n:u==null?void 0:u.replace(/^https?:/,"")}))}function Ke(e,r,i){var b,ie,se,ue,ae;const{price:n,priceRange:t,options:s,optionUIDs:u=i}=e;if(!n&&!t)return null;const{__typename:l}=e;function a(){var D,p,g,w,O,_,S,A,x,U;const T=(p=(D=n==null?void 0:n.regular)==null?void 0:D.amount)==null?void 0:p.value,d=((w=(g=n==null?void 0:n.final)==null?void 0:g.amount)==null?void 0:w.value)??((_=(O=n==null?void 0:n.regular)==null?void 0:O.amount)==null?void 0:_.value),y=((A=(S=n==null?void 0:n.regular)==null?void 0:S.amount)==null?void 0:A.currency)==="NONE"?"USD":(U=(x=n==null?void 0:n.regular)==null?void 0:x.amount)==null?void 0:U.currency;return[T,d,d,y]}function c(){var p,g,w,O,_,S,A,x,U,Q,V,M,G,L,q,$,R,B,j,H,W;const T=(w=(g=(p=t==null?void 0:t.minimum)==null?void 0:p.final)==null?void 0:g.amount)==null?void 0:w.value,d=(S=(_=(O=t==null?void 0:t.maximum)==null?void 0:O.final)==null?void 0:_.amount)==null?void 0:S.value;let y;((U=(x=(A=t==null?void 0:t.minimum)==null?void 0:A.regular)==null?void 0:x.amount)==null?void 0:U.value)===((M=(V=(Q=t==null?void 0:t.maximum)==null?void 0:Q.regular)==null?void 0:V.amount)==null?void 0:M.value)&&(y=(q=(L=(G=t==null?void 0:t.minimum)==null?void 0:G.regular)==null?void 0:L.amount)==null?void 0:q.value);const D=((B=(R=($=t==null?void 0:t.minimum)==null?void 0:$.final)==null?void 0:R.amount)==null?void 0:B.currency)==="NONE"?"USD":(W=(H=(j=t==null?void 0:t.minimum)==null?void 0:j.final)==null?void 0:H.amount)==null?void 0:W.currency;return[y,T,d,D]}function o(){var w,O,_,S,A,x,U,Q,V,M,G,L,q,$,R,B,j,H,W,oe,le,ce,me,fe;let T=0,d=0;s==null||s.forEach(F=>{var de;const J=F==null?void 0:F.values;if(J&&Array.isArray(J)){const N=J.map(k=>{var X,K,Pe,he;return(he=(Pe=(K=(X=k==null?void 0:k.product)==null?void 0:X.price)==null?void 0:K.regular)==null?void 0:Pe.amount)==null?void 0:he.value}).filter(k=>k!==void 0),Y=N.length>0?Math.max(...N):0;T+=Y}(de=F==null?void 0:F.values)==null||de.forEach(N=>{var Y,k,X,K;u!=null&&u.includes(N.id)&&(d+=(K=(X=(k=(Y=N==null?void 0:N.product)==null?void 0:Y.price)==null?void 0:k.final)==null?void 0:X.amount)==null?void 0:K.value)})});const y=(_=(O=(w=t==null?void 0:t.minimum)==null?void 0:w.final)==null?void 0:O.amount)==null?void 0:_.value,D=(x=(A=(S=t==null?void 0:t.maximum)==null?void 0:S.final)==null?void 0:A.amount)==null?void 0:x.value;let p;((V=(Q=(U=t==null?void 0:t.minimum)==null?void 0:U.regular)==null?void 0:Q.amount)==null?void 0:V.value)===((L=(G=(M=t==null?void 0:t.maximum)==null?void 0:M.regular)==null?void 0:G.amount)==null?void 0:L.value)&&(p=(R=($=(q=t==null?void 0:t.minimum)==null?void 0:q.regular)==null?void 0:$.amount)==null?void 0:R.value);const g=((H=(j=(B=t==null?void 0:t.minimum)==null?void 0:B.final)==null?void 0:j.amount)==null?void 0:H.currency)==="NONE"?"USD":(le=(oe=(W=t==null?void 0:t.minimum)==null?void 0:W.final)==null?void 0:oe.amount)==null?void 0:le.currency;return r&&(u==null?void 0:u.length)<1?[p,y,D,g]:T===((fe=(me=(ce=t==null?void 0:t.maximum)==null?void 0:ce.regular)==null?void 0:me.amount)==null?void 0:fe.value)?[d,d,d,g]:[p,y,D,g]}const[m,f,P,h]=l==="SimpleProductView"?a():r?o():c(),v=l==="SimpleProductView"?(b=n==null?void 0:n.roles)==null?void 0:b.includes("visible"):((se=(ie=t==null?void 0:t.maximum)==null?void 0:ie.roles)==null?void 0:se.includes("visible"))&&((ae=(ue=t==null?void 0:t.minimum)==null?void 0:ue.roles)==null?void 0:ae.includes("visible"));function C(T){return!T||!Array.isArray(T)?[]:T.map(d=>{var y,D,p,g,w,O;return{tier:{amount:(D=(y=d.tier)==null?void 0:y.amount)==null?void 0:D.value,currency:((g=(p=d.tier)==null?void 0:p.amount)==null?void 0:g.currency)||h},quantity:((w=d.quantity[0])==null?void 0:w.gte)||((O=d.quantity[0])==null?void 0:O.lt)||0}}).sort((d,y)=>d.quantity-y.quantity)}return P&&f===P?{regular:{amount:m,currency:h,variant:m&&f!==m?"strikethrough":"default"},final:{amount:P,currency:h,variant:"default"},tiers:C(n==null?void 0:n.tiers),visible:v}:{final:{minimumAmount:f,maximumAmount:P,currency:h},tiers:C(n==null?void 0:n.tiers),visible:v}}function Ye(e,r,i){var n;if(r){const t=Array.isArray(e==null?void 0:e.optionUIDs)?e.optionUIDs.filter(Boolean):[];if(t.length>0)return t;const s=[];return(n=e==null?void 0:e.options)==null||n.forEach(({values:u,multi:l})=>{var o;const a=u==null?void 0:u.filter(({enabled:m})=>typeof m>"u"||m),c=a==null?void 0:a.filter(({isDefault:m})=>m);if(c!=null&&c.length){l?c.forEach(m=>s.push(m.id)):s.push(c[0].id);return}i&&((o=a==null?void 0:a[0])!=null&&o.id)&&s.push(a[0].id)}),s}return e==null?void 0:e.optionUIDs}function wt(e,r){if(!(r!=null&&r.length))return Object.values(e).flatMap(n=>"values"in n?n.values:n.value?[n.value]:[]);const i=[];for(const n of r){const t=e[n.id];if(t)if("values"in t){const s=new Map(n.items.map((l,a)=>[l.id,a])),u=[...t.values].sort((l,a)=>(s.get(l)??0)-(s.get(a)??0));i.push(...u)}else"value"in t&&t.value&&i.push(t.value)}return i}function ze(e,r,i){if(!(e!=null&&e.length))return!0;const n=r??[];return i?e.every(t=>t.required?t.items.filter(u=>n.includes(u.id)).length>=1:!0):n.length===e.length}const te=new _e({init:async e=>{var l,a,c;const r=(a=(l=e==null?void 0:e.models)==null?void 0:l.ProductDetails)==null?void 0:a.initialData,n=((c=(Te()||{}).optionsUIDs)==null?void 0:c.split(","))||(r==null?void 0:r.optionsUIDs),t=Ae(1),u={...{defaultLocale:"en-US",globalLocale:"en-US",persistURLParams:!1,acdl:!1,optionsUIDs:n},...e};if(te.config.setConfig({...u}),u!=null&&u.sku){const o=r?z(r):await ge(u.sku,{preselectFirstOption:u.preselectFirstOption});E.emit("pdp/data",o,{scope:u.scope});const m=Ee({scope:u.scope}),f=(m==null?void 0:m.bundleOptionQuantities)??Le(m==null?void 0:m.enteredOptions),P=o!=null&&o.isBundle?Ge(f,o==null?void 0:o.options,o==null?void 0:o.optionUIDs):void 0,h={sku:u.sku,quantity:t,optionsUIDs:o==null?void 0:o.optionUIDs,...P&&{bundleOptionQuantities:P,enteredOptions:be(P)}};ft(()=>({...h}),{scope:u.scope}),dt(()=>o!=null&&o.options?ze(o.options,o.optionUIDs,o.isBundle):!0,{scope:u.scope}),u.acdl&&o&&Fe(o)}},listeners:()=>[E.on("locale",async()=>{const{sku:e,scope:r}=te.config.getConfig();if(e){const i=await ge(e);E.emit("pdp/data",i,{scope:r})}})]}),I=te.config,{setEndpoint:Ot,setFetchGraphQlHeader:Ct,removeFetchGraphQlHeader:Dt,setFetchGraphQlHeaders:bt,getFetchGraphQlHeader:Et,fetchGraphQl:re,getConfig:vt}=new Se().getMethods();function _t(e){return{schemaVersion:e.schemaVersion,selectable:e.selectable.map(r=>({...r,values:r.values.map(i=>({...i,price:Number(i.price)}))})),shopperInput:e.shopperInput.map(r=>({...r,price:r.price===void 0?void 0:Number(r.price)}))}}const Je=`
3
+ import{merge as ve,Initializer as Ee}from"@dropins/tools/lib.js";import{events as v}from"@dropins/tools/event-bus.js";import{PRODUCT_FRAGMENT as ne}from"./fragments.js";import{FetchGraphQL as Se}from"@dropins/tools/fetch-graphql.js";function Pt(e){const r=new URLSearchParams(window.location.search);Object.entries(e).forEach(([n,t])=>{t===null?r.delete(n):r.set(n,String(t))});let i=window.location.pathname;i+=`?${r.toString()}`,i+=window.location.hash,window.history.replaceState({},"",i)}function ge(){const e=new URLSearchParams(window.location.search),r={};return e.forEach((i,n)=>{r[n]=i}),r}function xe(e=1){const i=(ge()||{}).quantity;if(i){const n=parseInt(i,10);if(!isNaN(n)&&Number.isInteger(n)&&n>0)return n}return e}function _e(e){var r,i,n,t,s,u,l,o,c,a,m,f;return{productId:Number(e==null?void 0:e.externalId),name:e==null?void 0:e.name,sku:(e==null?void 0:e.variantSku)||(e==null?void 0:e.sku),topLevelSku:e==null?void 0:e.sku,variantName:e==null?void 0:e.variantName,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:e==null?void 0:e.productType,pricing:{regularPrice:((i=(r=e==null?void 0:e.prices)==null?void 0:r.regular)==null?void 0:i.amount)||0,minimalPrice:(t=(n=e==null?void 0:e.prices)==null?void 0:n.final)==null?void 0:t.minimumAmount,maximalPrice:(u=(s=e==null?void 0:e.prices)==null?void 0:s.final)==null?void 0:u.maximumAmount,specialPrice:(o=(l=e==null?void 0:e.prices)==null?void 0:l.final)==null?void 0:o.amount,tierPricing:void 0,currencyCode:((a=(c=e==null?void 0:e.prices)==null?void 0:c.final)==null?void 0:a.currency)||"USD"},canonicalUrl:e==null?void 0:e.url,mainImageUrl:(f=(m=e==null?void 0:e.images)==null?void 0:m[0])==null?void 0:f.url}}const Oe={PRODUCT_CONTEXT:"productContext",CHANNEL_CONTEXT:"channelContext"},ke={PRODUCT_PAGE_VIEW:"product-page-view"};function we(){return window.adobeDataLayer=window.adobeDataLayer||[],window.adobeDataLayer}function Ae(){return{_id:"https://ns.adobe.com/xdm/channels/web",_type:"https://ns.adobe.com/xdm/channel-types/web"}}function Ce(e,r){const i=we();i.push({[e]:null}),i.push({[e]:r})}function Ne(){typeof window>"u"||Ce(Oe.CHANNEL_CONTEXT,Ae())}function Ue(e,r){we().push(n=>{const t=n.getState?n.getState():{};n.push({event:e,eventInfo:{...t,...r}})})}function Ie(e){const r=_e(e);Ce(Oe.PRODUCT_CONTEXT,r),Ne(),Ue(ke.PRODUCT_PAGE_VIEW)}var Z=(e=>(e.ComplexProduct="complex",e.SimpleProduct="simple",e))(Z||{}),De=(e=>(e.ComplexProductView="ComplexProductView",e.SimpleProductView="SimpleProductView",e))(De||{});function Fe(e){return!!e.canEditQuantity}function Qe(e){const r=e.quantity??e.qty,i=Number(r);return Number.isFinite(i)&&i>0?i:1}function Ve(e,r){if(!(e!=null&&e.length)||!(r!=null&&r.length))return{};const i={};for(const n of e)if(n.typename==="ProductViewOptionValueProduct")for(const t of n.items)r.includes(t.id)&&(i[t.id]=t.quantity??1);return i}function Ge(e,r,i){const n=Ve(r,i);return e?Object.fromEntries(Object.entries(n).map(([t,s])=>[t,e[t]??s])):n}function Te(e){return e?Object.entries(e).map(([r,i])=>({uid:r,value:String(i)})):[]}function Me(e){if(!(e!=null&&e.length))return{};const r={};for(const i of e){const n=Number(i.value);Number.isFinite(n)&&n>0&&(r[i.uid]=n)}return r}function Le(e,r,i){const n=new Set([...Object.keys(r||{}),...Object.keys(i)]);return[...(e||[]).filter(t=>!n.has(t.uid)),...Te(i)]}function J(e,r){var u,l,o,c,a,m,f,P,h,E,D,b;const i=((c=(o=(l=(u=e==null?void 0:e.options)==null?void 0:u[0])==null?void 0:l.values)==null?void 0:o[0])==null?void 0:c.__typename)==="ProductViewOptionValueProduct",n=We(e,i,r==null?void 0:r.preselectFirstOption),t=(e==null?void 0:e.__typename)===De.SimpleProductView?Z.SimpleProduct:Z.ComplexProduct,s=e?{name:e.name,sku:e.sku,isBundle:i,addToCartAllowed:e.addToCartAllowed,inStock:e.inStock,shortDescription:e.shortDescription,metaDescription:e.metaDescription,metaKeyword:e.metaKeyword,metaTitle:e.metaTitle,description:e.description,images:$e(e),videos:je(e),prices:Re(e,i,n),attributes:Be(e),options:qe(He(e,i)),optionUIDs:n,url:e.url,urlKey:e.urlKey,externalId:e.externalId,externalParentId:e.externalParentId,variantSku:e.variantSku,variantName:e.variantName,productType:t}:null;return ve(s,((P=(f=(m=(a=I.getConfig())==null?void 0:a.models)==null?void 0:m.ProductDetails)==null?void 0:f.transformer)==null?void 0:P.call(f,e))??((b=(D=(E=(h=I.getConfig())==null?void 0:h.models)==null?void 0:E.ProductDetails)==null?void 0:D.transform)==null?void 0:b.call(D,e)))}function qe(e){var i,n,t;if(!e)return;const r=(t=(n=(i=I.getConfig())==null?void 0:i.models)==null?void 0:n.ProductOptions)==null?void 0:t.optionsTransformer;if(!r)return e;try{return r(e)??e}catch(s){return console.error("product-transform: optionsTransformer threw an error, using original options",s),e}}function $e(e){var r,i;return(i=(r=e.images)==null?void 0:r.filter(n=>{var t;return!((t=n.roles)!=null&&t.includes("hide_from_pdp"))}))==null?void 0:i.map(n=>(n.url=n.url.replace(/^https?:/,""),n))}function je(e){var r;return(r=e.videos)==null?void 0:r.map(i=>{var n,t;return{url:(n=i.url)==null?void 0:n.replace(/^https?:/,""),title:i.title,description:i.description,preview:i.preview?{url:(t=i.preview.url)==null?void 0:t.replace(/^https?:/,""),label:i.preview.label,roles:i.preview.roles}:void 0}})}function Be(e){var r,i;return(i=(r=e.attributes)==null?void 0:r.filter(({roles:n})=>(n==null?void 0:n.indexOf("visible_in_pdp"))!==-1))==null?void 0:i.map(({label:n,value:t,name:s})=>{if(s!=null&&s.startsWith("ac_"))try{let u;typeof t=="string"?u=JSON.parse(t):typeof t=="object"&&(u=t);const l=ee(u);return{id:s,label:n,value:JSON.stringify(l)}}catch{return{id:s,label:n,value:t.toString().split(",").join(", ")}}return{id:s,label:n,value:t.toString().split(",").join(", ")}})}function ee(e){if(Array.isArray(e))return e.map(ee);if(e!==null&&typeof e=="object"){const r={};for(const[i,n]of Object.entries(e)){let t=i;i==="validation_rule"?t="validationRule":i==="min_length"?t="minLength":i==="max_length"?t="maxLength":i==="purchase_separately"&&(t="purchaseSeparately"),r[t]=ee(n)}return r}return e}function He(e,r){const{options:i,optionUIDs:n}=e;return i==null?void 0:i.map(({id:t,title:s,required:u,multi:l,values:o})=>{var m,f;const c=(m=o==null?void 0:o[0])==null?void 0:m.__typename;let a=(f=o==null?void 0:o[0])==null?void 0:f.type;return a?a=a.replace("COLOR_HEX","color").replace("TEXT","text").replace("IMAGE","image"):a="dropdown",{id:t,type:a,typename:c,label:s,required:u,multiple:l,items:r?Xe(o,n):Ke(o,n,a)}})}function Xe(e,r){return e==null?void 0:e.filter(({enabled:i})=>typeof i>"u"||i).map(i=>{const{id:n,title:t,inStock:s,isDefault:u,product:l}=i;return{id:n,inStock:s,label:t,selected:(r==null?void 0:r.indexOf(n))>-1||u,value:n,product:l,quantity:Qe(i),canEditQuantity:Fe(i)}})}function Ke(e,r,i){return e==null?void 0:e.map(({id:n,title:t,inStock:s,value:u})=>({id:n,inStock:s,label:t,selected:(r==null?void 0:r.indexOf(n))>-1,value:(i==null?void 0:i.toLowerCase())==="dropdown"?n:u==null?void 0:u.replace(/^https?:/,"")}))}function Re(e,r,i){var b,ie,se,ue,oe;const{price:n,priceRange:t,options:s,optionUIDs:u=i}=e;if(!n&&!t)return null;const{__typename:l}=e;function o(){var T,y,g,w,C,S,x,_,k,A;const O=(y=(T=n==null?void 0:n.regular)==null?void 0:T.amount)==null?void 0:y.value,d=((w=(g=n==null?void 0:n.final)==null?void 0:g.amount)==null?void 0:w.value)??((S=(C=n==null?void 0:n.regular)==null?void 0:C.amount)==null?void 0:S.value),p=((_=(x=n==null?void 0:n.regular)==null?void 0:x.amount)==null?void 0:_.currency)==="NONE"?"USD":(A=(k=n==null?void 0:n.regular)==null?void 0:k.amount)==null?void 0:A.currency;return[O,d,d,p]}function c(){var y,g,w,C,S,x,_,k,A,Q,V,G,M,L,q,$,j,B,H,X,K;const O=(w=(g=(y=t==null?void 0:t.minimum)==null?void 0:y.final)==null?void 0:g.amount)==null?void 0:w.value,d=(x=(S=(C=t==null?void 0:t.maximum)==null?void 0:C.final)==null?void 0:S.amount)==null?void 0:x.value;let p;((A=(k=(_=t==null?void 0:t.minimum)==null?void 0:_.regular)==null?void 0:k.amount)==null?void 0:A.value)===((G=(V=(Q=t==null?void 0:t.maximum)==null?void 0:Q.regular)==null?void 0:V.amount)==null?void 0:G.value)&&(p=(q=(L=(M=t==null?void 0:t.minimum)==null?void 0:M.regular)==null?void 0:L.amount)==null?void 0:q.value);const T=((B=(j=($=t==null?void 0:t.minimum)==null?void 0:$.final)==null?void 0:j.amount)==null?void 0:B.currency)==="NONE"?"USD":(K=(X=(H=t==null?void 0:t.minimum)==null?void 0:H.final)==null?void 0:X.amount)==null?void 0:K.currency;return[p,O,d,T]}function a(){var w,C,S,x,_,k,A,Q,V,G,M,L,q,$,j,B,H,X,K,ae,le,ce,me,fe;let O=0,d=0;s==null||s.forEach(F=>{var de;const Y=F==null?void 0:F.values;if(Y&&Array.isArray(Y)){const U=Y.map(N=>{var R,W,Pe,he;return(he=(Pe=(W=(R=N==null?void 0:N.product)==null?void 0:R.price)==null?void 0:W.regular)==null?void 0:Pe.amount)==null?void 0:he.value}).filter(N=>N!==void 0),z=U.length>0?Math.max(...U):0;O+=z}(de=F==null?void 0:F.values)==null||de.forEach(U=>{var z,N,R,W;u!=null&&u.includes(U.id)&&(d+=(W=(R=(N=(z=U==null?void 0:U.product)==null?void 0:z.price)==null?void 0:N.final)==null?void 0:R.amount)==null?void 0:W.value)})});const p=(S=(C=(w=t==null?void 0:t.minimum)==null?void 0:w.final)==null?void 0:C.amount)==null?void 0:S.value,T=(k=(_=(x=t==null?void 0:t.maximum)==null?void 0:x.final)==null?void 0:_.amount)==null?void 0:k.value;let y;((V=(Q=(A=t==null?void 0:t.minimum)==null?void 0:A.regular)==null?void 0:Q.amount)==null?void 0:V.value)===((L=(M=(G=t==null?void 0:t.maximum)==null?void 0:G.regular)==null?void 0:M.amount)==null?void 0:L.value)&&(y=(j=($=(q=t==null?void 0:t.minimum)==null?void 0:q.regular)==null?void 0:$.amount)==null?void 0:j.value);const g=((X=(H=(B=t==null?void 0:t.minimum)==null?void 0:B.final)==null?void 0:H.amount)==null?void 0:X.currency)==="NONE"?"USD":(le=(ae=(K=t==null?void 0:t.minimum)==null?void 0:K.final)==null?void 0:ae.amount)==null?void 0:le.currency;return r&&(u==null?void 0:u.length)<1?[y,p,T,g]:O===((fe=(me=(ce=t==null?void 0:t.maximum)==null?void 0:ce.regular)==null?void 0:me.amount)==null?void 0:fe.value)?[d,d,d,g]:[y,p,T,g]}const[m,f,P,h]=l==="SimpleProductView"?o():r?a():c(),E=l==="SimpleProductView"?(b=n==null?void 0:n.roles)==null?void 0:b.includes("visible"):((se=(ie=t==null?void 0:t.maximum)==null?void 0:ie.roles)==null?void 0:se.includes("visible"))&&((oe=(ue=t==null?void 0:t.minimum)==null?void 0:ue.roles)==null?void 0:oe.includes("visible"));function D(O){return!O||!Array.isArray(O)?[]:O.map(d=>{var p,T,y,g,w,C;return{tier:{amount:(T=(p=d.tier)==null?void 0:p.amount)==null?void 0:T.value,currency:((g=(y=d.tier)==null?void 0:y.amount)==null?void 0:g.currency)||h},quantity:((w=d.quantity[0])==null?void 0:w.gte)||((C=d.quantity[0])==null?void 0:C.lt)||0}}).sort((d,p)=>d.quantity-p.quantity)}return P&&f===P?{regular:{amount:m,currency:h,variant:m&&f!==m?"strikethrough":"default"},final:{amount:P,currency:h,variant:"default"},tiers:D(n==null?void 0:n.tiers),visible:E}:{final:{minimumAmount:f,maximumAmount:P,currency:h},tiers:D(n==null?void 0:n.tiers),visible:E}}function We(e,r,i){var n;if(r){const t=Array.isArray(e==null?void 0:e.optionUIDs)?e.optionUIDs.filter(Boolean):[];if(t.length>0)return t;const s=[];return(n=e==null?void 0:e.options)==null||n.forEach(({values:u,multi:l})=>{var a;const o=u==null?void 0:u.filter(({enabled:m})=>typeof m>"u"||m),c=o==null?void 0:o.filter(({isDefault:m})=>m);if(c!=null&&c.length){l?c.forEach(m=>s.push(m.id)):s.push(c[0].id);return}i&&((a=o==null?void 0:o[0])!=null&&a.id)&&s.push(o[0].id)}),s}return e==null?void 0:e.optionUIDs}function ht(e,r){if(!(r!=null&&r.length))return Object.values(e).flatMap(n=>"values"in n?n.values:n.value?[n.value]:[]);const i=[];for(const n of r){const t=e[n.id];if(t)if("values"in t){const s=new Map(n.items.map((l,o)=>[l.id,o])),u=[...t.values].sort((l,o)=>(s.get(l)??0)-(s.get(o)??0));i.push(...u)}else"value"in t&&t.value&&i.push(t.value)}return i}function ze(e,r,i){if(!(e!=null&&e.length))return!0;const n=r??[];return i?e.every(t=>t.required?t.items.filter(u=>n.includes(u.id)).length>=1:!0):n.length===e.length}const te=new Ee({init:async e=>{var l,o,c;const r=(o=(l=e==null?void 0:e.models)==null?void 0:l.ProductDetails)==null?void 0:o.initialData,n=((c=(ge()||{}).optionsUIDs)==null?void 0:c.split(","))||(r==null?void 0:r.optionsUIDs),t=xe(1),u={...{defaultLocale:"en-US",globalLocale:"en-US",persistURLParams:!1,acdl:!1,optionsUIDs:n},...e};if(te.config.setConfig({...u}),u!=null&&u.sku){const a=r?J(r):await ye(u.sku,{preselectFirstOption:u.preselectFirstOption});v.emit("pdp/data",a,{scope:u.scope});const m=be({scope:u.scope}),f=(m==null?void 0:m.bundleOptionQuantities)??Me(m==null?void 0:m.enteredOptions),P=a!=null&&a.isBundle?Ge(f,a==null?void 0:a.options,a==null?void 0:a.optionUIDs):void 0,h={sku:u.sku,quantity:t,optionsUIDs:a==null?void 0:a.optionUIDs,...P&&{bundleOptionQuantities:P,enteredOptions:Te(P)}};ot(()=>({...h}),{scope:u.scope}),at(()=>a!=null&&a.options?ze(a.options,a.optionUIDs,a.isBundle):!0,{scope:u.scope}),u.acdl&&a&&Ie(a)}},listeners:()=>[v.on("locale",async()=>{const{sku:e,scope:r}=te.config.getConfig();if(e){const i=await ye(e);v.emit("pdp/data",i,{scope:r})}})]}),I=te.config,{setEndpoint:pt,setFetchGraphQlHeader:yt,removeFetchGraphQlHeader:gt,setFetchGraphQlHeaders:Ot,getFetchGraphQlHeader:wt,fetchGraphQl:re,getConfig:Ct}=new Se().getMethods();function Dt(e){return{schemaVersion:e.schemaVersion,selectable:e.selectable.map(r=>({...r,values:r.values.map(i=>({...i,price:Number(i.price)}))})),shopperInput:e.shopperInput.map(r=>({...r,price:r.price===void 0?void 0:Number(r.price)}))}}const Je=`
4
4
  query GET_PRODUCT_DATA($skus: [String]) {
5
5
  products(skus: $skus) {
6
6
  ...PRODUCT_FRAGMENT
@@ -8,7 +8,7 @@ query GET_PRODUCT_DATA($skus: [String]) {
8
8
  }
9
9
 
10
10
  ${ne}
11
- `,Ze=async(e,r,i)=>{var s;const{data:n}=await re(Je,{method:"GET",variables:{skus:[e]}}),t=(s=n==null?void 0:n.products)==null?void 0:s[0];return r!=null&&r.optionsUIDs&&(t.optionUIDs=r.optionsUIDs),t?i?t:z(t,{preselectFirstOption:r==null?void 0:r.preselectFirstOption}):null},et=`
11
+ `,Ye=async(e,r,i)=>{var s;const{data:n}=await re(Je,{method:"GET",variables:{skus:[e]}}),t=(s=n==null?void 0:n.products)==null?void 0:s[0];return r!=null&&r.optionsUIDs&&(t.optionUIDs=r.optionsUIDs),t?i?t:J(t,{preselectFirstOption:r==null?void 0:r.preselectFirstOption}):null},Ze=`
12
12
  query GET_PRODUCTS_DATA($skus: [String]) {
13
13
  products(skus: $skus) {
14
14
  ...PRODUCT_FRAGMENT
@@ -16,7 +16,7 @@ query GET_PRODUCTS_DATA($skus: [String]) {
16
16
  }
17
17
 
18
18
  ${ne}
19
- `,St=async(e,r)=>{if(!e||e.length===0)return null;const i=e.map(u=>u.sku),{data:n}=await re(et,{method:"GET",variables:{skus:i}}),t=n==null?void 0:n.products;if(!t||t.length===0)return null;const s=e.reduce((u,l)=>(u[l.sku]=l,u),{});return r?t:t.map(u=>{const l=s[u.sku];return l!=null&&l.optionsUIDs&&(u.optionUIDs=l.optionsUIDs),z(u,{preselectFirstOption:l==null?void 0:l.preselectFirstOption})})},tt="ac_rating_summary",nt="ac_review_count",rt=[tt,nt],it=`
19
+ `,Tt=async(e,r)=>{if(!e||e.length===0)return null;const i=e.map(u=>u.sku),{data:n}=await re(Ze,{method:"GET",variables:{skus:i}}),t=n==null?void 0:n.products;if(!t||t.length===0)return null;const s=e.reduce((u,l)=>(u[l.sku]=l,u),{});return r?t:t.map(u=>{const l=s[u.sku];return l!=null&&l.optionsUIDs&&(u.optionUIDs=l.optionsUIDs),J(u,{preselectFirstOption:l==null?void 0:l.preselectFirstOption})})},et=`
20
20
  query REFINE_PRODUCT_QUERY(
21
21
  $optionIds: [String!]!
22
22
  $sku: String!
@@ -38,7 +38,7 @@ query REFINE_PRODUCT_QUERY(
38
38
  }
39
39
 
40
40
  ${ne}
41
- `;function st(e){try{return atob(e).startsWith("custom-option/")}catch{return!1}}const ye=({name:e})=>!!e&&rt.includes(e);function ut(e,r){var n;const i=((n=e==null?void 0:e.attributes)==null?void 0:n.filter(ye))??[];return!r||!i.length?{}:{attributes:[...(r.attributes??[]).filter(t=>!ye(t)),...i]}}async function pe(e,r){const i=r.filter(l=>!st(l)),n=ot(i),t=lt(n,e),s=it.replace("# %extendedPlaceholder%",t),{data:u}=await re(s,{method:"GET",variables:{optionIds:i,sku:e}});return u}const at=async(e,r,i,n)=>{var h,v,C;const t=await pe(e,r);if(!t)return null;const{products:s,refineProduct:u,...l}=t;let a=u;const c=s==null?void 0:s[0],o=ct(Object.values(l),c.options,i);if(i!=null&&i.length&&a===null){r=mt(o,r,i);const b=await pe(e,r);a=b==null?void 0:b.refineProduct}const m={...a||c,...ut(c,a),sku:c.sku,name:c.name,externalParentId:c==null?void 0:c.externalId,options:o,optionUIDs:r,variantSku:(a==null?void 0:a.__typename)==="SimpleProductView"?a==null?void 0:a.sku:void 0,variantName:(a==null?void 0:a.__typename)==="SimpleProductView"?a==null?void 0:a.name:void 0},f=n?m:z(m),P=(C=(v=(h=I==null?void 0:I.getConfig())==null?void 0:h.models)==null?void 0:v.ProductDetails)==null?void 0:C.fallbackData;return P?P(c,f):f};function ot(e){if(e.length<2)return[e];const r=[];return e.forEach(i=>{const n=[];e.forEach(t=>{i!==t&&n.push(t)}),r.push(n)}),r}function lt(e,r){return e.map((i,n)=>`
41
+ `;function tt(e){try{return atob(e).startsWith("custom-option/")}catch{return!1}}async function pe(e,r){const i=r.filter(l=>!tt(l)),n=rt(i),t=it(n,e),s=et.replace("# %extendedPlaceholder%",t),{data:u}=await re(s,{method:"GET",variables:{optionIds:i,sku:e}});return u}const nt=async(e,r,i,n)=>{var h,E,D;const t=await pe(e,r);if(!t)return null;const{products:s,refineProduct:u,...l}=t;let o=u;const c=s==null?void 0:s[0],a=st(Object.values(l),c.options,i);if(i!=null&&i.length&&o===null){r=ut(a,r,i);const b=await pe(e,r);o=b==null?void 0:b.refineProduct}const m={...o||c,sku:c.sku,name:c.name,externalParentId:c==null?void 0:c.externalId,options:a,optionUIDs:r,variantSku:(o==null?void 0:o.__typename)==="SimpleProductView"?o==null?void 0:o.sku:void 0,variantName:(o==null?void 0:o.__typename)==="SimpleProductView"?o==null?void 0:o.name:void 0},f=n?m:J(m),P=(D=(E=(h=I==null?void 0:I.getConfig())==null?void 0:h.models)==null?void 0:E.ProductDetails)==null?void 0:D.fallbackData;return P?P(c,f):f};function rt(e){if(e.length<2)return[e];const r=[];return e.forEach(i=>{const n=[];e.forEach(t=>{i!==t&&n.push(t)}),r.push(n)}),r}function it(e,r){return e.map((i,n)=>`
42
42
  ProductOption${n}: refineProduct(
43
43
  optionIds: [
44
44
  ${i.map(t=>`"${t}"`).join(", ")}
@@ -51,5 +51,5 @@ ${ne}
51
51
  }
52
52
  }
53
53
  }
54
- `).join("")}function ct(e,r=[],i){const n=Object.values(e).filter(s=>!!s).reduce((s,u)=>u.options?[...s,...u.options]:[...s],[]),t=new Map(r.map(s=>[s.id,s]));return n.forEach(s=>{i!=null&&i.includes(s.id)||t.set(s.id,s)}),[...t.values()]}function mt(e,r,i){const n=[];let t;return e.forEach(s=>{var u,l,a,c;i.includes(s.id)?t=((l=(u=s.values)==null?void 0:u.find(o=>r.includes(o==null?void 0:o.id)))==null?void 0:l.id)||((a=s.values[0])==null?void 0:a.id):t=(c=s.values[0])==null?void 0:c.id,n.push(t)}),n}const ge=async(e,r)=>{const{anchors:i,optionsUIDs:n}=I.getConfig(),{optionsUIDs:t=n,anchors:s=i,preselectFirstOption:u,isBundle:l,skipTransform:a}=r??{};return!l&&t&&t.length>0?await at(e,t,s,a):await Ze(e,{preselectFirstOption:u,optionsUIDs:t},a)},ft=(e,r)=>{const i=Ee({scope:r==null?void 0:r.scope})??{},n=e(i);n.bundleOptionQuantities&&(n.enteredOptions=qe(n.enteredOptions,i.bundleOptionQuantities,n.bundleOptionQuantities)),E.emit("pdp/values",{...n},{scope:r==null?void 0:r.scope})},Ee=({scope:e}={})=>E.lastPayload("pdp/values",{scope:e})??null,dt=(e,r)=>{const i=Pt({scope:r==null?void 0:r.scope}),n=e(i);E.emit("pdp/valid",n,{scope:r==null?void 0:r.scope})},At=async({scope:e}={})=>{const r=E.lastPayload("pdp/data",{scope:e});return r?Promise.resolve(r):new Promise(i=>{const n=E.on("pdp/data",t=>{i(t),n==null||n.off()},{eager:!0,scope:e})})},Pt=({scope:e}={})=>E.lastPayload("pdp/valid",{scope:e})??null;export{tt as R,nt as a,wt as b,Me as c,I as config,be as d,qe as e,_t as f,re as fetchGraphQl,ge as fetchProductData,Ae as g,vt as getConfig,Et as getFetchGraphQlHeader,At as getFetchedProductData,Ee as getProductConfigurationValues,Ze as getProductData,St as getProductsData,at as getRefinedProduct,ze as i,te as initialize,st as isCustomOptionUID,Pt as isProductConfigurationValid,Ge as m,Fe as p,Dt as removeFetchGraphQlHeader,Tt as s,Ot as setEndpoint,Ct as setFetchGraphQlHeader,bt as setFetchGraphQlHeaders,dt as setProductConfigurationValid,ft as setProductConfigurationValues,z as t};
54
+ `).join("")}function st(e,r=[],i){const n=Object.values(e).filter(s=>!!s).reduce((s,u)=>u.options?[...s,...u.options]:[...s],[]),t=new Map(r.map(s=>[s.id,s]));return n.forEach(s=>{i!=null&&i.includes(s.id)||t.set(s.id,s)}),[...t.values()]}function ut(e,r,i){const n=[];let t;return e.forEach(s=>{var u,l,o,c;i.includes(s.id)?t=((l=(u=s.values)==null?void 0:u.find(a=>r.includes(a==null?void 0:a.id)))==null?void 0:l.id)||((o=s.values[0])==null?void 0:o.id):t=(c=s.values[0])==null?void 0:c.id,n.push(t)}),n}const ye=async(e,r)=>{const{anchors:i,optionsUIDs:n}=I.getConfig(),{optionsUIDs:t=n,anchors:s=i,preselectFirstOption:u,isBundle:l,skipTransform:o}=r??{};return!l&&t&&t.length>0?await nt(e,t,s,o):await Ye(e,{preselectFirstOption:u,optionsUIDs:t},o)},ot=(e,r)=>{const i=be({scope:r==null?void 0:r.scope})??{},n=e(i);n.bundleOptionQuantities&&(n.enteredOptions=Le(n.enteredOptions,i.bundleOptionQuantities,n.bundleOptionQuantities)),v.emit("pdp/values",{...n},{scope:r==null?void 0:r.scope})},be=({scope:e}={})=>v.lastPayload("pdp/values",{scope:e})??null,at=(e,r)=>{const i=lt({scope:r==null?void 0:r.scope}),n=e(i);v.emit("pdp/valid",n,{scope:r==null?void 0:r.scope})},bt=async({scope:e}={})=>{const r=v.lastPayload("pdp/data",{scope:e});return r?Promise.resolve(r):new Promise(i=>{const n=v.on("pdp/data",t=>{i(t),n==null||n.off()},{eager:!0,scope:e})})},lt=({scope:e}={})=>v.lastPayload("pdp/valid",{scope:e})??null;export{ht as a,Ve as b,Te as c,I as config,Le as d,Dt as e,re as fetchGraphQl,ye as fetchProductData,xe as g,Ct as getConfig,wt as getFetchGraphQlHeader,bt as getFetchedProductData,be as getProductConfigurationValues,Ye as getProductData,Tt as getProductsData,nt as getRefinedProduct,ze as i,te as initialize,tt as isCustomOptionUID,lt as isProductConfigurationValid,Ge as m,Ie as p,gt as removeFetchGraphQlHeader,Pt as s,pt as setEndpoint,yt as setFetchGraphQlHeader,Ot as setFetchGraphQlHeaders,at as setProductConfigurationValid,ot as setProductConfigurationValues,J as t};
55
55
  //# sourceMappingURL=api.js.map