@dropins/storefront-pdp 0.5.0-beta5 → 1.0.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 (69) hide show
  1. package/api/fetchProductData/fetchProductData.d.ts +24 -0
  2. package/api/fetchProductData/index.d.ts +17 -0
  3. package/api/getFetchedProductData/getFetchedProductData.d.ts +4 -0
  4. package/api/getFetchedProductData/index.d.ts +17 -0
  5. package/api/getProductConfigurationValues/getProductConfigurationValues.d.ts +4 -0
  6. package/api/getProductConfigurationValues/index.d.ts +17 -0
  7. package/api/getProductData/getProductData.d.ts +1 -1
  8. package/api/getRefinedProduct/getRefinedProduct.d.ts +1 -1
  9. package/api/index.d.ts +6 -0
  10. package/api/initialize/initialize.d.ts +9 -1
  11. package/api/isProductConfigurationValid/index.d.ts +17 -0
  12. package/api/isProductConfigurationValid/isProductConfigurationValid.d.ts +17 -0
  13. package/api/setProductConfigurationValid/index.d.ts +17 -0
  14. package/api/setProductConfigurationValid/setProductConfigurationValid.d.ts +17 -0
  15. package/api/setProductConfigurationValues/index.d.ts +17 -0
  16. package/api/setProductConfigurationValues/setProductConfigurationValues.d.ts +4 -0
  17. package/api.js +3 -1
  18. package/chunks/PriceRange.js +3 -0
  19. package/chunks/Swatches.js +3 -0
  20. package/chunks/Zoom.js +3 -0
  21. package/chunks/date.js +3 -0
  22. package/chunks/getFetchedProductData.js +3 -0
  23. package/chunks/getProductConfigurationValues.js +3 -0
  24. package/chunks/isProductConfigurationValid.js +187 -0
  25. package/components/Header/Header.d.ts +10 -0
  26. package/components/Header/index.d.ts +18 -0
  27. package/components/Price/Price.d.ts +9 -0
  28. package/components/Price/index.d.ts +18 -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 +18 -0
  32. package/containers/ProductAttributes.d.ts +3 -0
  33. package/containers/ProductAttributes.js +3 -0
  34. package/containers/ProductDescription/ProductDescription.d.ts +8 -0
  35. package/containers/ProductDescription/index.d.ts +18 -0
  36. package/containers/ProductDescription.d.ts +3 -0
  37. package/containers/ProductDescription.js +3 -0
  38. package/containers/ProductDetails.js +3 -1
  39. package/containers/ProductGallery/ProductGallery.d.ts +18 -0
  40. package/containers/ProductGallery/index.d.ts +3 -0
  41. package/containers/ProductGallery.d.ts +3 -0
  42. package/containers/ProductGallery.js +3 -0
  43. package/containers/ProductHeader/ProductHeader.d.ts +9 -0
  44. package/containers/ProductHeader/index.d.ts +18 -0
  45. package/containers/ProductHeader.d.ts +3 -0
  46. package/containers/ProductHeader.js +3 -0
  47. package/containers/ProductOptions/ProductOptions.d.ts +22 -0
  48. package/containers/ProductOptions/index.d.ts +18 -0
  49. package/containers/ProductOptions.d.ts +3 -0
  50. package/containers/ProductOptions.js +3 -0
  51. package/containers/ProductPrice/ProductPrice.d.ts +8 -0
  52. package/containers/ProductPrice/index.d.ts +18 -0
  53. package/containers/ProductPrice.d.ts +3 -0
  54. package/containers/ProductPrice.js +3 -0
  55. package/containers/ProductQuantity/ProductQuantity.d.ts +9 -0
  56. package/containers/ProductQuantity/index.d.ts +18 -0
  57. package/containers/ProductQuantity.d.ts +3 -0
  58. package/containers/ProductQuantity.js +3 -0
  59. package/containers/ProductShortDescription/ProductShortDescription.d.ts +8 -0
  60. package/containers/ProductShortDescription/index.d.ts +18 -0
  61. package/containers/ProductShortDescription.d.ts +3 -0
  62. package/containers/ProductShortDescription.js +3 -0
  63. package/containers/index.d.ts +8 -0
  64. package/data/models/index.d.ts +1 -0
  65. package/data/models/values-model.d.ts +6 -0
  66. package/package.json +1 -1
  67. package/render.js +4 -2
  68. package/chunks/getRefinedProduct.js +0 -185
  69. package/chunks/initialize.js +0 -1
@@ -1,185 +0,0 @@
1
- import{c as j}from"./initialize.js";import{FetchGraphQL as re}from"@dropins/tools/fetch-graphql.js";const{setEndpoint:we,setFetchGraphQlHeader:he,removeFetchGraphQlHeader:Se,setFetchGraphQlHeaders:_e,fetchGraphQl:R,getConfig:ke}=new re().getMethods();var N=(t=>(t.ComplexProduct="complex",t.SimpleProduct="simple",t))(N||{}),ee=(t=>(t.ComplexProductView="ComplexProductView",t.SimpleProductView="SimpleProductView",t))(ee||{});function K(t,u){var m,l,s,c,a,f,d;const i=((c=(s=(l=(m=t==null?void 0:t.options)==null?void 0:m[0])==null?void 0:l.values)==null?void 0:s[0])==null?void 0:c.__typename)==="ProductViewOptionValueProduct",r=ce(t,i,u==null?void 0:u.preselectFirstOption),e=(t==null?void 0:t.__typename)===ee.SimpleProductView?N.SimpleProduct:N.ComplexProduct,n=t?{name:t.name,sku:t.sku,isBundle:i,addToCartAllowed:t.addToCartAllowed,inStock:t.inStock,shortDescription:t.shortDescription,metaDescription:t.metaDescription,metaKeyword:t.metaKeyword,metaTitle:t.metaTitle,description:t.description,images:ne(t),prices:me(t,i,r),attributes:ue(t),options:ie(t,i),optionUIDs:r,url:t.url,urlKey:t.urlKey,externalId:t.externalId,externalParentId:t.externalParentId,variantSku:t.variantSku,productType:e}:null,o=(d=(f=(a=j.getConfig())==null?void 0:a.models)==null?void 0:f.ProductDetails)==null?void 0:d.transform;return o&&n?o(n):n}function ne(t){var u,i;return(i=(u=t.images)==null?void 0:u.filter(r=>{var e;return!((e=r.roles)!=null&&e.includes("hide_from_pdp"))}))==null?void 0:i.map(r=>(r.url=r.url.replace(/^https?:/,""),r))}function ue(t){var u,i;return(i=(u=t.attributes)==null?void 0:u.filter(({roles:r})=>(r==null?void 0:r.indexOf("visible_in_pdp"))!==-1))==null?void 0:i.map(({label:r,value:e,name:n})=>({id:n,label:r,value:e.toString().split(",").join(", ")}))}function ie(t,u){const{options:i,optionUIDs:r}=t;return i==null?void 0:i.map(({id:e,title:n,required:o,multi:m,values:l})=>{var a;const s=(a=l==null?void 0:l[0])==null?void 0:a.__typename;let c=l==null?void 0:l[0].type;return c?c=c.replace("COLOR_HEX","color").replace("TEXT","text").replace("IMAGE","image"):c="dropdown",{id:e,type:c,typename:s,label:n,required:o,multiple:m,items:u?oe(l,r):le(l,r,c)}})}function oe(t,u){return t==null?void 0:t.map(({id:i,title:r,inStock:e,isDefault:n,product:o})=>({id:i,inStock:e,label:r,selected:(u==null?void 0:u.indexOf(i))>-1||n,value:i,product:o}))}function le(t,u,i){return t==null?void 0:t.map(({id:r,title:e,inStock:n,value:o})=>({id:r,inStock:n,label:e,selected:(u==null?void 0:u.indexOf(r))>-1,value:(i==null?void 0:i.toLowerCase())==="dropdown"?r:o==null?void 0:o.replace(/^https?:/,"")}))}function me(t,u,i){var q,H,L,B,X;const{price:r,priceRange:e,options:n,optionUIDs:o=i}=t;let{__typename:m}=t;function l(){var x;const y=r.regular.amount.value,P=((x=r.final)==null?void 0:x.amount.value)??r.regular.amount.value,g=r.regular.amount.currency==="NONE"?"USD":r==null?void 0:r.regular.amount.currency;return[y,P,P,g]}function s(){var _,k,b,E,C,D,V,F,T,v,A,$;const y=(_=e==null?void 0:e.minimum)==null?void 0:_.final.amount.value,P=(k=e==null?void 0:e.maximum)==null?void 0:k.final.amount.value;let g;((E=(b=e==null?void 0:e.minimum)==null?void 0:b.regular)==null?void 0:E.amount.value)===((D=(C=e==null?void 0:e.maximum)==null?void 0:C.regular)==null?void 0:D.amount.value)&&(g=(F=(V=e==null?void 0:e.minimum)==null?void 0:V.regular)==null?void 0:F.amount.value);const x=((v=(T=e==null?void 0:e.minimum)==null?void 0:T.final)==null?void 0:v.amount.currency)==="NONE"?"USD":($=(A=e==null?void 0:e.minimum)==null?void 0:A.final)==null?void 0:$.amount.currency;return[g,y,P,x]}function c(){var b,E,C,D,V,F,T,v,A,$,Y,U;let y=0,P=0;n==null||n.forEach(O=>{var z;const I=O==null?void 0:O.values;if(I&&Array.isArray(I)){const w=I.map(p=>{var G,M,J,W;return(W=(J=(M=(G=p==null?void 0:p.product)==null?void 0:G.price)==null?void 0:M.regular)==null?void 0:J.amount)==null?void 0:W.value}).filter(p=>p!==void 0),Q=w.length>0?Math.max(...w):0;y+=Q}(z=O==null?void 0:O.values)==null||z.forEach(w=>{var Q,p,G,M;o!=null&&o.includes(w.id)&&(P+=(M=(G=(p=(Q=w==null?void 0:w.product)==null?void 0:Q.price)==null?void 0:p.final)==null?void 0:G.amount)==null?void 0:M.value)})});const g=(b=e==null?void 0:e.minimum)==null?void 0:b.final.amount.value,x=(E=e==null?void 0:e.maximum)==null?void 0:E.final.amount.value;let _;((D=(C=e==null?void 0:e.minimum)==null?void 0:C.regular)==null?void 0:D.amount.value)===((F=(V=e==null?void 0:e.maximum)==null?void 0:V.regular)==null?void 0:F.amount.value)&&(_=(v=(T=e==null?void 0:e.minimum)==null?void 0:T.regular)==null?void 0:v.amount.value);const k=(($=(A=e==null?void 0:e.minimum)==null?void 0:A.final)==null?void 0:$.amount.currency)==="NONE"?"USD":(U=(Y=e==null?void 0:e.minimum)==null?void 0:Y.final)==null?void 0:U.amount.currency;return u&&(o==null?void 0:o.length)<1?[_,g,x,k]:y===(e==null?void 0:e.maximum.regular.amount.value)?[P,P,P,k]:[_,g,x,k]}const[a,f,d,h]=m==="SimpleProductView"?l():u?c():s(),S=m==="SimpleProductView"?(q=r==null?void 0:r.roles)==null?void 0:q.includes("visible"):((L=(H=e==null?void 0:e.maximum)==null?void 0:H.roles)==null?void 0:L.includes("visible"))&&((X=(B=e==null?void 0:e.minimum)==null?void 0:B.roles)==null?void 0:X.includes("visible"));return d&&f===d?{regular:{amount:a,currency:h,variant:a&&f!==a?"strikethrough":"default"},final:{amount:d,currency:h,variant:"default"},visible:S}:{final:{minimumAmount:f,maximumAmount:d,currency:h},visible:S}}function ce(t,u,i){var r;return u?((r=t==null?void 0:t.options)==null?void 0:r.map(({values:n})=>{var l;const o=((l=n==null?void 0:n.find(({isDefault:s})=>s))==null?void 0:l.id)??null,m=i?n[0].id:null;return o||m})).filter(n=>n!==null):t==null?void 0:t.optionUIDs}const se=`
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
- `,te=`
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
- ${se}
142
- `,ae=`
143
- query GET_PRODUCT_DATA($skus: [String]) {
144
- products(skus: $skus) {
145
- ...ProductFragment
146
- }
147
- }
148
-
149
- ${te}
150
- `,Oe=async(t,u)=>{var n,o,m,l,s;const i=(l=(m=(o=(n=j)==null?void 0:n.getConfig())==null?void 0:o.models)==null?void 0:m.ProductDetails)==null?void 0:l.initialData;if(i)return K(i);const{data:r}=await R(ae,{method:"GET",variables:{skus:[t]}}),e=(s=r==null?void 0:r.products)==null?void 0:s[0];return u!=null&&u.optionsUIDs&&(e.optionUIDs=u.optionsUIDs),K(e,{preselectFirstOption:u==null?void 0:u.preselectFirstOption})},de=`
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
- ${te}
172
- `;async function Z(t,u){const i=fe(u),r=Pe(i,t),e=de.replace("# %extendedPlaceholder%",r),{data:n}=await R(e,{method:"GET",variables:{optionIds:u,sku:t}});return n}const be=async(t,u,i)=>{var a,f,d,h;const r=await Z(t,u);if(!r)return null;let{products:e,refineProduct:n,...o}=r;const m=e==null?void 0:e[0],l=pe(Object.values(o),m.options,i);if(i!=null&&i.length&&n===null){u=ye(l,u,i);const S=await Z(t,u);n=S==null?void 0:S.refineProduct}const s=K({...n||m,sku:m.sku,name:m.name,externalParentId:m==null?void 0:m.externalId,options:l,optionUIDs:u,variantSku:(n==null?void 0:n.__typename)==="SimpleProductView"?n==null?void 0:n.sku:void 0}),c=(h=(d=(f=(a=j)==null?void 0:a.getConfig())==null?void 0:f.models)==null?void 0:d.ProductDetails)==null?void 0:h.fallbackData;return c?c(m,s):s};function fe(t){if(t.length<2)return[t];const u=[];return t.forEach(i=>{const r=[];t.forEach(e=>{i!==e&&r.push(e)}),u.push(r)}),u}function Pe(t,u){return t.map((i,r)=>`
173
- ProductOption${r}: refineProduct(
174
- optionIds: [
175
- ${i.map(e=>`"${e}"`).join(", ")}
176
- ]
177
- sku: "${u}"
178
- ) {
179
- ... on ComplexProductView {
180
- options {
181
- ...ProductOptionFragment
182
- }
183
- }
184
- }
185
- `).join("")}function pe(t,u,i){const r=Object.values(t).filter(n=>!!n).reduce((n,o)=>o.options?[...n,...o.options]:[...n],[]),e=new Map(u.map(n=>[n.id,n]));return r.forEach(n=>{i!=null&&i.includes(n.id)||e.set(n.id,n)}),[...e.values()]}function ye(t,u,i){const r=[];let e;return t.forEach(n=>{var o,m,l,s;i.includes(n.id)?e=((m=(o=n.values)==null?void 0:o.find(c=>u.includes(c==null?void 0:c.id)))==null?void 0:m.id)||((l=n.values[0])==null?void 0:l.id):e=(s=n.values[0])==null?void 0:s.id,r.push(e)}),r}export{he as a,_e as b,Oe as c,be as d,R as f,ke as g,Se as r,we 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};