@dropins/storefront-cart 1.6.0-alpha6 → 3.0.0-beta1
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/chunks/ChevronDown.js +1 -1
- package/chunks/ChevronDown.js.map +1 -1
- package/chunks/ChevronUp.js +1 -1
- package/chunks/ChevronUp.js.map +1 -1
- package/chunks/Coupons.js +1 -1
- package/chunks/Coupons.js.map +1 -1
- package/chunks/GiftCard.js +1 -1
- package/chunks/GiftCard.js.map +1 -1
- package/chunks/WarningWithCircle.js +1 -1
- package/chunks/WarningWithCircle.js.map +1 -1
- package/chunks/createGuestCart.js +2 -2
- package/chunks/createGuestCart.js.map +1 -1
- package/containers/GiftOptions.js +1 -1
- package/containers/GiftOptions.js.map +1 -1
- package/package.json +1 -1
package/chunks/ChevronDown.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import*as e from"@dropins/tools/preact-compat.js";const o=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("path",{d:"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701",stroke:"currentColor",strokeWidth:1
|
|
3
|
+
import*as e from"@dropins/tools/preact-compat.js";const o=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701",stroke:"currentColor",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round"}));export{o as S};
|
|
4
4
|
//# sourceMappingURL=ChevronDown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChevronDown.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronDown.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701\", stroke: \"currentColor\", strokeWidth: 1
|
|
1
|
+
{"version":3,"file":"ChevronDown.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronDown.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"square\", strokeLinejoin: \"round\" }));\nexport default SvgChevronDown;\n"],"names":["SvgChevronDown","props","React"],"mappings":"kDACK,MAACA,EAAkBC,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAK,EAAoBC,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,kDAAmD,OAAQ,eAAgB,YAAa,EAAG,cAAe,SAAU,eAAgB,QAAS,CAAC","x_google_ignoreList":[0]}
|
package/chunks/ChevronUp.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import*as e from"@dropins/tools/preact-compat.js";const o=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("path",{d:"M7.74512 14.132L12.0001 9.87701L16.2551 14.132",stroke:"currentColor",strokeWidth:1
|
|
3
|
+
import*as e from"@dropins/tools/preact-compat.js";const o=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("path",{d:"M7.74512 14.132L12.0001 9.87701L16.2551 14.132",stroke:"currentColor",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round"}));export{o as S};
|
|
4
4
|
//# sourceMappingURL=ChevronUp.js.map
|
package/chunks/ChevronUp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChevronUp.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronUp.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.74512 14.132L12.0001 9.87701L16.2551 14.132\", stroke: \"currentColor\", strokeWidth: 1
|
|
1
|
+
{"version":3,"file":"ChevronUp.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronUp.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.74512 14.132L12.0001 9.87701L16.2551 14.132\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"square\", strokeLinejoin: \"round\" }));\nexport default SvgChevronUp;\n"],"names":["SvgChevronUp","props","React"],"mappings":"kDACK,MAACA,EAAgBC,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAK,EAAoBC,EAAM,cAAc,OAAQ,CAAE,EAAG,iDAAkD,OAAQ,eAAgB,YAAa,EAAG,cAAe,SAAU,eAAgB,QAAS,CAAC","x_google_ignoreList":[0]}
|
package/chunks/Coupons.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as t,jsxs as u}from"@dropins/tools/preact-jsx-runtime.js";import*as o from"@dropins/tools/preact-compat.js";import{useRef as k}from"@dropins/tools/preact-compat.js";import{classes as e,VComponent as r,getFormValues as x}from"@dropins/tools/lib.js";import{Accordion as L,AccordionSection as N}from"@dropins/tools/components.js";/* empty css */import{S}from"./Coupon.js";import{useText as C}from"@dropins/tools/i18n.js";const I=n=>o.createElement("svg",{id:"Icon_Add_Base","data-name":"Icon \\u2013 Add \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...n},o.createElement("g",{id:"Large"},o.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),o.createElement("g",{id:"Add_icon","data-name":"Add icon",transform:"translate(9.734 9.737)"},o.createElement("line",{vectorEffect:"non-scaling-stroke",id:"Line_579","data-name":"Line 579",y2:12.7,transform:"translate(2.216 -4.087)",fill:"none",stroke:"currentColor"}),o.createElement("line",{vectorEffect:"non-scaling-stroke",id:"Line_580","data-name":"Line 580",x2:12.7,transform:"translate(-4.079 2.263)",fill:"none",stroke:"currentColor"})))),P=n=>o.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},o.createElement("path",{d:"M17.3332 11.75H6.6665",strokeWidth:1
|
|
3
|
+
import{jsx as t,jsxs as u}from"@dropins/tools/preact-jsx-runtime.js";import*as o from"@dropins/tools/preact-compat.js";import{useRef as k}from"@dropins/tools/preact-compat.js";import{classes as e,VComponent as r,getFormValues as x}from"@dropins/tools/lib.js";import{Accordion as L,AccordionSection as N}from"@dropins/tools/components.js";/* empty css */import{S}from"./Coupon.js";import{useText as C}from"@dropins/tools/i18n.js";const I=n=>o.createElement("svg",{id:"Icon_Add_Base","data-name":"Icon \\u2013 Add \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...n},o.createElement("g",{id:"Large"},o.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),o.createElement("g",{id:"Add_icon","data-name":"Add icon",transform:"translate(9.734 9.737)"},o.createElement("line",{vectorEffect:"non-scaling-stroke",id:"Line_579","data-name":"Line 579",y2:12.7,transform:"translate(2.216 -4.087)",fill:"none",stroke:"currentColor"}),o.createElement("line",{vectorEffect:"non-scaling-stroke",id:"Line_580","data-name":"Line 580",x2:12.7,transform:"translate(-4.079 2.263)",fill:"none",stroke:"currentColor"})))),P=n=>o.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n},o.createElement("path",{d:"M17.3332 11.75H6.6665",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke",fill:"none",stroke:"currentColor"})),V=({accordionSectionTitle:n,accordionSectionIcon:h,className:p,children:b,couponCodeField:i,applyCouponsButton:s,appliedCoupons:d,error:m,onApplyCoupon:a,...g})=>{const c=k(null),_=C({couponTitle:"Cart.PriceSummary.coupon.title"}),v=w=>{var f;w.preventDefault();const E=x(c.current);a==null||a(E);const l=(f=c==null?void 0:c.current)==null?void 0:f.querySelector("input");l&&(l.value="")};return t("div",{...g,"data-testid":"cart-coupons",className:e(["cart-coupons",p]),children:t(L,{"data-testid":"coupon-code",className:e(["cart-coupons__accordion"]),actionIconPosition:"right",iconOpen:I,iconClose:P,children:u(N,{title:n??_.couponTitle,iconLeft:h??S,showIconLeft:!0,renderContentWhenClosed:!1,"data-testid":"coupon-code-accordion-section",className:e(["cart-coupons__accordion-section"]),children:[t("form",{"data-testid":"coupon-code-form",className:e(["coupon-code-form--edit"]),ref:c,children:u("div",{className:e(["coupon-code-form__action"]),children:[i&&t(r,{node:i,className:e(["coupon-code-form__codes"])}),s&&t(r,{node:s,className:e(["coupon-code-form--button"]),onClick:v,type:"submit"})]})}),m&&t(r,{node:m,className:e(["coupon-code-form__error"])}),d&&t(r,{node:d,className:e(["coupon-code-form__applied"])})]})})})};export{V as C};
|
|
4
4
|
//# sourceMappingURL=Coupons.js.map
|
package/chunks/Coupons.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Coupons.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/Add.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Minus.svg","/@dropins/storefront-cart/src/components/Coupons/Coupons.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgAdd = (props) => /* @__PURE__ */ React.createElement(\"svg\", { id: \"Icon_Add_Base\", \"data-name\": \"Icon \\\\u2013 Add \\\\u2013 Base\", xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Large\" }, /* @__PURE__ */ React.createElement(\"rect\", { id: \"Placement_area\", \"data-name\": \"Placement area\", width: 24, height: 24, fill: \"#fff\", opacity: 0 }), /* @__PURE__ */ React.createElement(\"g\", { id: \"Add_icon\", \"data-name\": \"Add icon\", transform: \"translate(9.734 9.737)\" }, /* @__PURE__ */ React.createElement(\"line\", { vectorEffect: \"non-scaling-stroke\", id: \"Line_579\", \"data-name\": \"Line 579\", y2: 12.7, transform: \"translate(2.216 -4.087)\", fill: \"none\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"line\", { vectorEffect: \"non-scaling-stroke\", id: \"Line_580\", \"data-name\": \"Line 580\", x2: 12.7, transform: \"translate(-4.079 2.263)\", fill: \"none\", stroke: \"currentColor\" }))));\nexport default SvgAdd;\n","import * as React from \"react\";\nconst SvgMinus = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.3332 11.75H6.6665\", strokeWidth: 1
|
|
1
|
+
{"version":3,"file":"Coupons.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/Add.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Minus.svg","/@dropins/storefront-cart/src/components/Coupons/Coupons.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgAdd = (props) => /* @__PURE__ */ React.createElement(\"svg\", { id: \"Icon_Add_Base\", \"data-name\": \"Icon \\\\u2013 Add \\\\u2013 Base\", xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Large\" }, /* @__PURE__ */ React.createElement(\"rect\", { id: \"Placement_area\", \"data-name\": \"Placement area\", width: 24, height: 24, fill: \"#fff\", opacity: 0 }), /* @__PURE__ */ React.createElement(\"g\", { id: \"Add_icon\", \"data-name\": \"Add icon\", transform: \"translate(9.734 9.737)\" }, /* @__PURE__ */ React.createElement(\"line\", { vectorEffect: \"non-scaling-stroke\", id: \"Line_579\", \"data-name\": \"Line 579\", y2: 12.7, transform: \"translate(2.216 -4.087)\", fill: \"none\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"line\", { vectorEffect: \"non-scaling-stroke\", id: \"Line_580\", \"data-name\": \"Line 580\", x2: 12.7, transform: \"translate(-4.079 2.263)\", fill: \"none\", stroke: \"currentColor\" }))));\nexport default SvgAdd;\n","import * as React from \"react\";\nconst SvgMinus = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.3332 11.75H6.6665\", strokeWidth: 1, strokeLinecap: \"square\", strokeLinejoin: \"round\", vectorEffect: \"non-scaling-stroke\", fill: \"none\", stroke: \"currentColor\" }));\nexport default SvgMinus;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes, useRef } from 'preact/compat';\nimport { classes, VComponent, getFormValues } from '@adobe-commerce/elsie/lib';\nimport { Accordion, AccordionSection } from '@adobe-commerce/elsie/components';\nimport { Add, Minus, Coupon } from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport '@/cart/components/Coupons/Coupons.css';\n\nexport interface CouponsProps extends HTMLAttributes<HTMLDivElement> {\n accordionSectionTitle?: string;\n accordionSectionIcon?: string;\n couponCodeField?: VNode<HTMLAttributes<HTMLInputElement>>;\n applyCouponsButton?: VNode<HTMLAttributes<HTMLButtonElement>>;\n appliedCoupons?: VNode<HTMLAttributes<HTMLDivElement>>;\n error?: VNode<HTMLAttributes<HTMLDivElement>>;\n onApplyCoupon?: (formData: any) => void;\n}\n\nexport const Coupons: FunctionComponent<CouponsProps> = ({\n accordionSectionTitle,\n accordionSectionIcon,\n className,\n children,\n couponCodeField,\n applyCouponsButton,\n appliedCoupons,\n error,\n onApplyCoupon,\n ...props\n}) => {\n const couponFormRef = useRef<HTMLFormElement>(null);\n\n const dictionary = useText({\n couponTitle: 'Cart.PriceSummary.coupon.title',\n });\n\n const onSubmitCoupons = (e: Event) => {\n e.preventDefault();\n\n const formData = getFormValues(couponFormRef.current!);\n\n onApplyCoupon?.(formData);\n\n const input = couponFormRef?.current?.querySelector('input');\n if (input) {\n input.value = '';\n }\n };\n\n return (\n <div\n {...props}\n data-testid=\"cart-coupons\"\n className={classes(['cart-coupons', className])}\n >\n <Accordion\n data-testid=\"coupon-code\"\n className={classes(['cart-coupons__accordion'])}\n actionIconPosition=\"right\"\n iconOpen={Add}\n iconClose={Minus}\n >\n <AccordionSection\n title={accordionSectionTitle ?? dictionary.couponTitle}\n iconLeft={accordionSectionIcon ?? Coupon}\n showIconLeft={true}\n renderContentWhenClosed={false}\n data-testid=\"coupon-code-accordion-section\"\n className={classes(['cart-coupons__accordion-section'])}\n >\n <form\n data-testid=\"coupon-code-form\"\n className={classes(['coupon-code-form--edit'])}\n ref={couponFormRef}\n >\n <div className={classes(['coupon-code-form__action'])}>\n {couponCodeField && (\n <VComponent\n node={couponCodeField}\n className={classes(['coupon-code-form__codes'])}\n />\n )}\n {applyCouponsButton && (\n <VComponent\n node={applyCouponsButton}\n className={classes(['coupon-code-form--button'])}\n onClick={onSubmitCoupons}\n type=\"submit\"\n />\n )}\n </div>\n </form>\n\n {error && (\n <VComponent\n node={error}\n className={classes(['coupon-code-form__error'])}\n />\n )}\n\n {appliedCoupons && (\n <VComponent\n node={appliedCoupons}\n className={classes(['coupon-code-form__applied'])}\n />\n )}\n </AccordionSection>\n </Accordion>\n </div>\n );\n};\n"],"names":["SvgAdd","props","React","SvgMinus","Coupons","accordionSectionTitle","accordionSectionIcon","className","children","couponCodeField","applyCouponsButton","appliedCoupons","error","onApplyCoupon","couponFormRef","useRef","dictionary","useText","onSubmitCoupons","e","formData","getFormValues","input","_a","jsx","classes","Accordion","Add","Minus","jsxs","AccordionSection","Coupon","VComponent"],"mappings":"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","x_google_ignoreList":[0,1]}
|
package/chunks/GiftCard.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import*as t from"@dropins/tools/preact-compat.js";const
|
|
3
|
+
import*as t from"@dropins/tools/preact-compat.js";const o=e=>t.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},t.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M22 12.8571V6.75774C22 6.33761 21.5848 6 21.0884 6H2.91155C2.40614 6 2 6.34511 2 6.75774V12.8571M22 12.8571H2M22 12.8571V17.0049C22 17.5468 21.5939 18 21.0884 18H2.91155C2.41516 18 2 17.5567 2 17.0049V12.8571M5.18182 16.0886L8.64545 12.8229M8.64545 12.8229L12.1087 16.0886M8.64545 12.8229C8.64545 12.8229 8.09964 10.4743 7.56328 9.96857C7.02692 9.46286 6.15419 9.46286 5.61783 9.96857C5.08146 10.4743 5.08146 11.2971 5.61783 11.8029C6.15419 12.3086 8.64545 12.8229 8.64545 12.8229ZM8.64545 12.8229C8.64545 12.8229 11.1542 12.2914 11.6905 11.7857C12.2269 11.28 12.2269 10.4571 11.6905 9.95141C11.1542 9.4457 10.2814 9.4457 9.74507 9.95141C9.2087 10.4571 8.64545 12.8229 8.64545 12.8229ZM8.64506 17.2886V6.70286",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round"}));export{o as S};
|
|
4
4
|
//# sourceMappingURL=GiftCard.js.map
|
package/chunks/GiftCard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GiftCard.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/GiftCard.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgGiftCard = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M22 12.8571V6.75774C22 6.33761 21.5848 6 21.0884 6H2.91155C2.40614 6 2 6.34511 2 6.75774V12.8571M22 12.8571H2M22 12.8571V17.0049C22 17.5468 21.5939 18 21.0884 18H2.91155C2.41516 18 2 17.5567 2 17.0049V12.8571M5.18182 16.0886L8.64545 12.8229M8.64545 12.8229L12.1087 16.0886M8.64545 12.8229C8.64545 12.8229 8.09964 10.4743 7.56328 9.96857C7.02692 9.46286 6.15419 9.46286 5.61783 9.96857C5.08146 10.4743 5.08146 11.2971 5.61783 11.8029C6.15419 12.3086 8.64545 12.8229 8.64545 12.8229ZM8.64545 12.8229C8.64545 12.8229 11.1542 12.2914 11.6905 11.7857C12.2269 11.28 12.2269 10.4571 11.6905 9.95141C11.1542 9.4457 10.2814 9.4457 9.74507 9.95141C9.2087 10.4571 8.64545 12.8229 8.64545 12.8229ZM8.64506 17.2886V6.70286\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\" }));\nexport default SvgGiftCard;\n"],"names":["SvgGiftCard","props","React"],"mappings":"kDACK,MAACA,EAAeC,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAK,EAAoBC,EAAM,cAAc,OAAQ,CAAE,EAAG,wsBAAysB,OAAQ,eAAgB,YAAa,EAAG,cAAe,
|
|
1
|
+
{"version":3,"file":"GiftCard.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/GiftCard.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgGiftCard = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M22 12.8571V6.75774C22 6.33761 21.5848 6 21.0884 6H2.91155C2.40614 6 2 6.34511 2 6.75774V12.8571M22 12.8571H2M22 12.8571V17.0049C22 17.5468 21.5939 18 21.0884 18H2.91155C2.41516 18 2 17.5567 2 17.0049V12.8571M5.18182 16.0886L8.64545 12.8229M8.64545 12.8229L12.1087 16.0886M8.64545 12.8229C8.64545 12.8229 8.09964 10.4743 7.56328 9.96857C7.02692 9.46286 6.15419 9.46286 5.61783 9.96857C5.08146 10.4743 5.08146 11.2971 5.61783 11.8029C6.15419 12.3086 8.64545 12.8229 8.64545 12.8229ZM8.64545 12.8229C8.64545 12.8229 11.1542 12.2914 11.6905 11.7857C12.2269 11.28 12.2269 10.4571 11.6905 9.95141C11.1542 9.4457 10.2814 9.4457 9.74507 9.95141C9.2087 10.4571 8.64545 12.8229 8.64545 12.8229ZM8.64506 17.2886V6.70286\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\" }));\nexport default SvgGiftCard;\n"],"names":["SvgGiftCard","props","React"],"mappings":"kDACK,MAACA,EAAeC,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAK,EAAoBC,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,wsBAAysB,OAAQ,eAAgB,YAAa,EAAG,cAAe,QAAS,CAAC","x_google_ignoreList":[0]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import*as e from"@dropins/tools/preact-compat.js";const r=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("g",{clipPath:"url(#clip0_4797_15331)"},e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M10.25 20.91L1.5 17.55V6.51996L10.25 9.92996V20.91Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M6.24023 4.64001L14.9902 8.06001V11.42",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),e.createElement("path",{className:"error-icon",vectorEffect:"non-scaling-stroke",d:"M19 13.31L15.5 19.37H22.5L19 13.31Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),e.createElement("path",{className:"error-icon",vectorEffect:"non-scaling-stroke",d:"M19.0202 17.11H18.9802L18.9502 15.56H19.0502L19.0202 17.11ZM18.9602 18.29V18.06H19.0502V18.29H18.9602Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M19 12.16V6.51996L10.25 9.92996V20.91L14.27 19.37L14.4 19.32",stroke:"currentColor",strokeLinejoin:"round"}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M1.5 6.51999L10.25 3.04999L19 6.51999L10.25 9.92999L1.5 6.51999Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"})),e.createElement("defs",null,e.createElement("clipPath",{id:"clip0_4797_15331"},e.createElement("rect",{width:22,height:18.86,fill:"white",transform:"translate(1 2.54999)"})))),o=t=>e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",...t},e.createElement("path",{d:"M1 5H23",stroke:"currentColor",strokeWidth:1
|
|
3
|
+
import*as e from"@dropins/tools/preact-compat.js";const r=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("g",{clipPath:"url(#clip0_4797_15331)"},e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M10.25 20.91L1.5 17.55V6.51996L10.25 9.92996V20.91Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M6.24023 4.64001L14.9902 8.06001V11.42",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1}),e.createElement("path",{className:"error-icon",vectorEffect:"non-scaling-stroke",d:"M19 13.31L15.5 19.37H22.5L19 13.31Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1}),e.createElement("path",{className:"error-icon",vectorEffect:"non-scaling-stroke",d:"M19.0202 17.11H18.9802L18.9502 15.56H19.0502L19.0202 17.11ZM18.9602 18.29V18.06H19.0502V18.29H18.9602Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M19 12.16V6.51996L10.25 9.92996V20.91L14.27 19.37L14.4 19.32",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:1}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M1.5 6.51999L10.25 3.04999L19 6.51999L10.25 9.92999L1.5 6.51999Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1})),e.createElement("defs",null,e.createElement("clipPath",{id:"clip0_4797_15331"},e.createElement("rect",{width:22,height:18.86,fill:"white",transform:"translate(1 2.54999)"})))),o=t=>e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",...t},e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M1 5H23",stroke:"currentColor",strokeWidth:1,strokeMiterlimit:10}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M17.3674 22H6.63446C5.67952 22 4.88992 21.2688 4.8379 20.3338L4 5H20L19.1621 20.3338C19.1119 21.2688 18.3223 22 17.3655 22H17.3674Z",stroke:"currentColor",strokeWidth:1,strokeMiterlimit:10}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M9.87189 2H14.1281C14.6085 2 15 2.39766 15 2.88889V5H9V2.88889C9 2.39912 9.39006 2 9.87189 2Z",stroke:"currentColor",strokeWidth:1,strokeMiterlimit:10}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M8.87402 8.58057L9.39348 17.682",stroke:"currentColor",strokeWidth:1,strokeMiterlimit:10}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M14.6673 8.58057L14.146 17.682",stroke:"currentColor",strokeWidth:1,strokeMiterlimit:10})),n=t=>e.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t},e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z",stroke:"currentColor"}),e.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M11.75 5.88423V4.75H12.25V5.88423L12.0485 13.0713H11.9515L11.75 5.88423ZM11.7994 18.25V16.9868H12.2253V18.25H11.7994Z",stroke:"currentColor"}));export{r as S,n as a,o as b};
|
|
4
4
|
//# sourceMappingURL=WarningWithCircle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarningWithCircle.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/OrderError.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Trash.svg","../../node_modules/@adobe-commerce/elsie/src/icons/WarningWithCircle.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgOrderError = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_4797_15331)\" }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M10.25 20.91L1.5 17.55V6.51996L10.25 9.92996V20.91Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M6.24023 4.64001L14.9902 8.06001V11.42\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { className: \"error-icon\", vectorEffect: \"non-scaling-stroke\", d: \"M19 13.31L15.5 19.37H22.5L19 13.31Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { className: \"error-icon\", vectorEffect: \"non-scaling-stroke\", d: \"M19.0202 17.11H18.9802L18.9502 15.56H19.0502L19.0202 17.11ZM18.9602 18.29V18.06H19.0502V18.29H18.9602Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M19 12.16V6.51996L10.25 9.92996V20.91L14.27 19.37L14.4 19.32\", stroke: \"currentColor\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M1.5 6.51999L10.25 3.04999L19 6.51999L10.25 9.92999L1.5 6.51999Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_4797_15331\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 22, height: 18.86, fill: \"white\", transform: \"translate(1 2.54999)\" }))));\nexport default SvgOrderError;\n","import * as React from \"react\";\nconst SvgTrash = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1 5H23\", stroke: \"currentColor\", strokeWidth: 1
|
|
1
|
+
{"version":3,"file":"WarningWithCircle.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/OrderError.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Trash.svg","../../node_modules/@adobe-commerce/elsie/src/icons/WarningWithCircle.svg"],"sourcesContent":["import * as React from \"react\";\nconst SvgOrderError = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_4797_15331)\" }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M10.25 20.91L1.5 17.55V6.51996L10.25 9.92996V20.91Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M6.24023 4.64001L14.9902 8.06001V11.42\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"path\", { className: \"error-icon\", vectorEffect: \"non-scaling-stroke\", d: \"M19 13.31L15.5 19.37H22.5L19 13.31Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"path\", { className: \"error-icon\", vectorEffect: \"non-scaling-stroke\", d: \"M19.0202 17.11H18.9802L18.9502 15.56H19.0502L19.0202 17.11ZM18.9602 18.29V18.06H19.0502V18.29H18.9602Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M19 12.16V6.51996L10.25 9.92996V20.91L14.27 19.37L14.4 19.32\", stroke: \"currentColor\", strokeLinejoin: \"round\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M1.5 6.51999L10.25 3.04999L19 6.51999L10.25 9.92999L1.5 6.51999Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1 })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_4797_15331\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 22, height: 18.86, fill: \"white\", transform: \"translate(1 2.54999)\" }))));\nexport default SvgOrderError;\n","import * as React from \"react\";\nconst SvgTrash = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M1 5H23\", stroke: \"currentColor\", strokeWidth: 1, strokeMiterlimit: 10 }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M17.3674 22H6.63446C5.67952 22 4.88992 21.2688 4.8379 20.3338L4 5H20L19.1621 20.3338C19.1119 21.2688 18.3223 22 17.3655 22H17.3674Z\", stroke: \"currentColor\", strokeWidth: 1, strokeMiterlimit: 10 }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M9.87189 2H14.1281C14.6085 2 15 2.39766 15 2.88889V5H9V2.88889C9 2.39912 9.39006 2 9.87189 2Z\", stroke: \"currentColor\", strokeWidth: 1, strokeMiterlimit: 10 }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M8.87402 8.58057L9.39348 17.682\", stroke: \"currentColor\", strokeWidth: 1, strokeMiterlimit: 10 }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M14.6673 8.58057L14.146 17.682\", stroke: \"currentColor\", strokeWidth: 1, strokeMiterlimit: 10 }));\nexport default SvgTrash;\n","import * as React from \"react\";\nconst SvgWarningWithCircle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M11.75 5.88423V4.75H12.25V5.88423L12.0485 13.0713H11.9515L11.75 5.88423ZM11.7994 18.25V16.9868H12.2253V18.25H11.7994Z\", stroke: \"currentColor\" }));\nexport default SvgWarningWithCircle;\n"],"names":["SvgOrderError","props","React","SvgTrash","SvgWarningWithCircle"],"mappings":"kDACK,MAACA,EAAiBC,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAK,EAAoBC,EAAM,cAAc,IAAK,CAAE,SAAU,0BAA4CA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,sDAAuD,OAAQ,eAAgB,cAAe,QAAS,eAAgB,QAAS,YAAa,CAAC,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,yCAA0C,OAAQ,eAAgB,cAAe,QAAS,eAAgB,QAAS,YAAa,CAAC,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,UAAW,aAAc,aAAc,qBAAsB,EAAG,sCAAuC,OAAQ,eAAgB,cAAe,QAAS,eAAgB,QAAS,YAAa,CAAG,CAAA,EAAmBA,EAAM,cAAc,OAAQ,CAAE,UAAW,aAAc,aAAc,qBAAsB,EAAG,yGAA0G,OAAQ,eAAgB,cAAe,QAAS,eAAgB,QAAS,YAAa,CAAG,CAAA,EAAmBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,+DAAgE,OAAQ,eAAgB,eAAgB,QAAS,YAAa,CAAC,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,mEAAoE,OAAQ,eAAgB,cAAe,QAAS,eAAgB,QAAS,YAAa,EAAG,CAAC,EAAmBA,EAAM,cAAc,OAAQ,KAAsBA,EAAM,cAAc,WAAY,CAAE,GAAI,kBAAoB,EAAkBA,EAAM,cAAc,OAAQ,CAAE,MAAO,GAAI,OAAQ,MAAO,KAAM,QAAS,UAAW,sBAAwB,CAAA,CAAC,CAAC,CAAC,ECAv7DC,EAAYF,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,6BAA8B,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,GAAGD,GAAyBC,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,UAAW,OAAQ,eAAgB,YAAa,EAAG,iBAAkB,EAAE,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,sIAAuI,OAAQ,eAAgB,YAAa,EAAG,iBAAkB,GAAI,EAAmBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,gGAAiG,OAAQ,eAAgB,YAAa,EAAG,iBAAkB,GAAI,EAAmBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,kCAAmC,OAAQ,eAAgB,YAAa,EAAG,iBAAkB,GAAI,EAAmBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,iCAAkC,OAAQ,eAAgB,YAAa,EAAG,iBAAkB,GAAI,CAAC,ECAntCE,EAAwBH,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAK,EAAoBC,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,0JAA2J,OAAQ,cAAc,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,wHAAyH,OAAQ,eAAgB,CAAC","x_google_ignoreList":[0,1,2]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{s as
|
|
3
|
+
import{s as l,f as T,h as I}from"./resetCart.js";import{t as _,c as A}from"./refreshCart.js";import{events as f}from"@dropins/tools/event-bus.js";import{g as E}from"./persisted-data.js";import{A as U}from"./updateProductsFromCart.js";import{c as g,b as G}from"./acdl.js";const D=async c=>{let i=!1;const u=l.cartId||await S().then(s=>(i=!0,s));return T(U,{variables:{cartId:u,cartItems:c.map(({sku:s,parentSku:r,quantity:d,optionsUIDs:t,enteredOptions:a,customFields:o})=>({sku:s,parent_sku:r,quantity:d,selected_options:t,entered_options:a,...o||{}}))}}).then(({errors:s,data:r})=>{var C;const d=[...((C=r==null?void 0:r.addProductsToCart)==null?void 0:C.user_errors)??[],...s??[]];if(d.length>0)return I(d);const t=_(r.addProductsToCart.cart),a=E(),o=(a==null?void 0:a.items)||[];if(f.emit("cart/updated",t),f.emit("cart/data",t),t){const n=t.items.filter(e=>!o.some(p=>p.sku===e.sku)),m=t.items.filter(e=>{const p=o.find(h=>h.sku===e.sku);return p&&e.quantity!==p.quantity});n.length>0&&f.emit("cart/product/added",n),m.length>0&&f.emit("cart/product/updated",m)}if(t){const n=t.items.filter(m=>c.some(({sku:e})=>e===m.topLevelSku));i?g(t,n,l.locale??"en-US"):G(t,n,l.locale??"en-US")}return t})},O=`
|
|
4
4
|
mutation CREATE_GUEST_CART_MUTATION {
|
|
5
5
|
createGuestCart {
|
|
6
6
|
cart {
|
|
@@ -8,5 +8,5 @@ import{s as p,f as T,h}from"./resetCart.js";import{t as I,c as _}from"./refreshC
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
`,
|
|
11
|
+
`,S=async()=>{const{disableGuestCart:c}=A.getConfig();if(c)throw new Error("Guest cart is disabled");return await T(O).then(({data:i})=>{const u=i.createGuestCart.cart.id;return l.cartId=u,u})};export{D as a,S as c};
|
|
12
12
|
//# sourceMappingURL=createGuestCart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGuestCart.js","sources":["/@dropins/storefront-cart/src/api/addProductsToCart/addProductsToCart.ts","/@dropins/storefront-cart/src/api/createGuestCart/graphql/CreateCartMutation.ts","/@dropins/storefront-cart/src/api/createGuestCart/createGuestCart.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl, createGuestCart } from '@/cart/api';\nimport { state } from '@/cart/lib/state';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms';\nimport { events } from '@adobe-commerce/event-bus';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\nimport { getPersistedCartData } from '@/cart/lib/persisted-data';\n\nimport { ADD_PRODUCTS_TO_CART_MUTATION } from './graphql/AddProductsToCartMutation';\nimport { publishCartUpdateEvents, publishOpenCartEvent } from '@/cart/lib/acdl';\n\nexport const addProductsToCart = async (\n items: {\n sku: string;\n parentSku?: string;\n quantity: number;\n optionsUIDs?: string[];\n enteredOptions?: { uid: string; value: string }[];\n customFields?: Record<string, any>;\n }[]\n): Promise<CartModel | null> => {\n const cartId =\n state.cartId ||\n (await createGuestCart().then((id) => {\n return id;\n }));\n\n return fetchGraphQl(ADD_PRODUCTS_TO_CART_MUTATION, {\n variables: {\n cartId,\n cartItems: items.map(\n ({\n sku,\n parentSku: parent_sku,\n quantity,\n optionsUIDs: selected_options,\n enteredOptions: entered_options,\n customFields,\n }) => ({\n sku,\n parent_sku,\n quantity,\n selected_options,\n entered_options,\n ...(customFields ? customFields : {}),\n })\n ),\n },\n }).then(({ errors, data }) => {\n // handle errors\n const _errors = [\n ...(data?.addProductsToCart?.user_errors ?? []),\n ...(errors ?? []),\n ];\n\n if (_errors.length > 0) return handleFetchError(_errors);\n\n // transform cart\n const payload = transformCart(data.addProductsToCart.cart);\n\n // Get previous cart data before emitting events\n const previousCart = getPersistedCartData();\n const previousItems = previousCart?.items || [];\n\n // emit events\n events.emit('cart/updated', payload);\n events.emit('cart/data', payload);\n\n // emit add to cart event with affected items\n if (payload) {\n // Separate new items and updated items\n const newItems = payload.items.filter((item) => {\n return !previousItems.some((prev) => prev.sku === item.sku);\n });\n\n const updatedItems = payload.items.filter((item) => {\n const previousItem = previousItems.find(\n (prev) => prev.sku === item.sku\n );\n // Emit update event if quantity has changed\n return previousItem && item.quantity !== previousItem.quantity;\n });\n\n // Emit add event for new items\n if (newItems.length > 0) {\n events.emit('cart/product/added', newItems);\n }\n\n // Emit update event for existing items\n if (updatedItems.length > 0) {\n events.emit('cart/product/updated', updatedItems);\n }\n }\n\n // data collection\n if (payload) {\n const updatedItems = payload.items.filter((item) =>\n items.some(({ sku }) => sku === item.topLevelSku)\n );\n
|
|
1
|
+
{"version":3,"file":"createGuestCart.js","sources":["/@dropins/storefront-cart/src/api/addProductsToCart/addProductsToCart.ts","/@dropins/storefront-cart/src/api/createGuestCart/graphql/CreateCartMutation.ts","/@dropins/storefront-cart/src/api/createGuestCart/createGuestCart.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl, createGuestCart } from '@/cart/api';\nimport { state } from '@/cart/lib/state';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms';\nimport { events } from '@adobe-commerce/event-bus';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\nimport { getPersistedCartData } from '@/cart/lib/persisted-data';\n\nimport { ADD_PRODUCTS_TO_CART_MUTATION } from './graphql/AddProductsToCartMutation';\nimport { publishCartUpdateEvents, publishOpenCartEvent } from '@/cart/lib/acdl';\n\nexport const addProductsToCart = async (\n items: {\n sku: string;\n parentSku?: string;\n quantity: number;\n optionsUIDs?: string[];\n enteredOptions?: { uid: string; value: string }[];\n customFields?: Record<string, any>;\n }[]\n): Promise<CartModel | null> => {\n let isNewCart = false;\n\n const cartId =\n state.cartId ||\n (await createGuestCart().then((id) => {\n isNewCart = true;\n return id;\n }));\n\n return fetchGraphQl(ADD_PRODUCTS_TO_CART_MUTATION, {\n variables: {\n cartId,\n cartItems: items.map(\n ({\n sku,\n parentSku: parent_sku,\n quantity,\n optionsUIDs: selected_options,\n enteredOptions: entered_options,\n customFields,\n }) => ({\n sku,\n parent_sku,\n quantity,\n selected_options,\n entered_options,\n ...(customFields ? customFields : {}),\n })\n ),\n },\n }).then(({ errors, data }) => {\n // handle errors\n const _errors = [\n ...(data?.addProductsToCart?.user_errors ?? []),\n ...(errors ?? []),\n ];\n\n if (_errors.length > 0) return handleFetchError(_errors);\n\n // transform cart\n const payload = transformCart(data.addProductsToCart.cart);\n\n // Get previous cart data before emitting events\n const previousCart = getPersistedCartData();\n const previousItems = previousCart?.items || [];\n\n // emit events\n events.emit('cart/updated', payload);\n events.emit('cart/data', payload);\n\n // emit add to cart event with affected items\n if (payload) {\n // Separate new items and updated items\n const newItems = payload.items.filter((item) => {\n return !previousItems.some((prev) => prev.sku === item.sku);\n });\n\n const updatedItems = payload.items.filter((item) => {\n const previousItem = previousItems.find(\n (prev) => prev.sku === item.sku\n );\n // Emit update event if quantity has changed\n return previousItem && item.quantity !== previousItem.quantity;\n });\n\n // Emit add event for new items\n if (newItems.length > 0) {\n events.emit('cart/product/added', newItems);\n }\n\n // Emit update event for existing items\n if (updatedItems.length > 0) {\n events.emit('cart/product/updated', updatedItems);\n }\n }\n\n // data collection\n if (payload) {\n const updatedItems = payload.items.filter((item) =>\n items.some(({ sku }) => sku === item.topLevelSku)\n );\n if (isNewCart) {\n // Publish open cart event when the first item is added to the cart\n publishOpenCartEvent(payload, updatedItems, state.locale ?? 'en-US');\n } else {\n // Otherwise publish cart update events\n publishCartUpdateEvents(payload, updatedItems, state.locale ?? 'en-US');\n }\n }\n\n return payload;\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CREATE_GUEST_CART_MUTATION = `\n mutation CREATE_GUEST_CART_MUTATION {\n createGuestCart {\n cart {\n id\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { config, fetchGraphQl } from '@/cart/api';\nimport { state } from '@/cart/lib/state';\n\nimport { CREATE_GUEST_CART_MUTATION } from './graphql/CreateCartMutation';\n\nexport const createGuestCart = async () => {\n const { disableGuestCart } = config.getConfig();\n\n // If guest cart is disabled, throw an error\n if (disableGuestCart) {\n throw new Error('Guest cart is disabled');\n }\n\n // Return new empty cart id\n return await fetchGraphQl(CREATE_GUEST_CART_MUTATION).then(({ data }) => {\n const cartId = data.createGuestCart.cart.id;\n\n // Set cart id in state\n state.cartId = cartId;\n\n return cartId;\n });\n};\n"],"names":["addProductsToCart","items","isNewCart","cartId","state","createGuestCart","id","fetchGraphQl","ADD_PRODUCTS_TO_CART_MUTATION","sku","parent_sku","quantity","selected_options","entered_options","customFields","errors","data","_errors","_a","handleFetchError","payload","transformCart","previousCart","getPersistedCartData","previousItems","events","newItems","item","prev","updatedItems","previousItem","publishOpenCartEvent","publishCartUpdateEvents","CREATE_GUEST_CART_MUTATION","disableGuestCart","config"],"mappings":"+QA4Ba,MAAAA,EAAoB,MAC/BC,GAQ8B,CAC9B,IAAIC,EAAY,GAEV,MAAAC,EACJC,EAAM,QACL,MAAMC,IAAkB,KAAMC,IACjBJ,EAAA,GACLI,EACR,EAEH,OAAOC,EAAaC,EAA+B,CACjD,UAAW,CACT,OAAAL,EACA,UAAWF,EAAM,IACf,CAAC,CACC,IAAAQ,EACA,UAAWC,EACX,SAAAC,EACA,YAAaC,EACb,eAAgBC,EAChB,aAAAC,CAAA,KACK,CACL,IAAAL,EACA,WAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,GAAIC,GAA8B,CAAA,CACpC,EAAA,CACF,CAEH,CAAA,EAAE,KAAK,CAAC,CAAE,OAAAC,EAAQ,KAAAC,KAAW,OAE5B,MAAMC,EAAU,CACd,KAAIC,EAAAF,GAAA,YAAAA,EAAM,oBAAN,YAAAE,EAAyB,cAAe,CAAC,EAC7C,GAAIH,GAAU,CAAA,CAChB,EAEA,GAAIE,EAAQ,OAAS,EAAG,OAAOE,EAAiBF,CAAO,EAGvD,MAAMG,EAAUC,EAAcL,EAAK,kBAAkB,IAAI,EAGnDM,EAAeC,EAAqB,EACpCC,GAAgBF,GAAA,YAAAA,EAAc,QAAS,CAAC,EAO9C,GAJOG,EAAA,KAAK,eAAgBL,CAAO,EAC5BK,EAAA,KAAK,YAAaL,CAAO,EAG5BA,EAAS,CAEX,MAAMM,EAAWN,EAAQ,MAAM,OAAQO,GAC9B,CAACH,EAAc,KAAMI,GAASA,EAAK,MAAQD,EAAK,GAAG,CAC3D,EAEKE,EAAeT,EAAQ,MAAM,OAAQO,GAAS,CAClD,MAAMG,EAAeN,EAAc,KAChCI,GAASA,EAAK,MAAQD,EAAK,GAC9B,EAEO,OAAAG,GAAgBH,EAAK,WAAaG,EAAa,QAAA,CACvD,EAGGJ,EAAS,OAAS,GACbD,EAAA,KAAK,qBAAsBC,CAAQ,EAIxCG,EAAa,OAAS,GACjBJ,EAAA,KAAK,uBAAwBI,CAAY,CAClD,CAIF,GAAIT,EAAS,CACL,MAAAS,EAAeT,EAAQ,MAAM,OAAQO,GACzC1B,EAAM,KAAK,CAAC,CAAE,IAAAQ,KAAUA,IAAQkB,EAAK,WAAW,CAClD,EACIzB,EAEF6B,EAAqBX,EAASS,EAAczB,EAAM,QAAU,OAAO,EAGnE4B,EAAwBZ,EAASS,EAAczB,EAAM,QAAU,OAAO,CACxE,CAGK,OAAAgB,CAAA,CACR,CACH,ECjHaa,EAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECK7B5B,EAAkB,SAAY,CACzC,KAAM,CAAE,iBAAA6B,CAAA,EAAqBC,EAAO,UAAU,EAG9C,GAAID,EACI,MAAA,IAAI,MAAM,wBAAwB,EAInC,OAAA,MAAM3B,EAAa0B,CAA0B,EAAE,KAAK,CAAC,CAAE,KAAAjB,KAAW,CACjE,MAAAb,EAASa,EAAK,gBAAgB,KAAK,GAGzC,OAAAZ,EAAM,OAASD,EAERA,CAAA,CACR,CACH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as t,jsxs as u,Fragment as A}from"@dropins/tools/preact-jsx-runtime.js";import{classes as We,Slot as Ze}from"@dropins/tools/lib.js";import{Modal as De,ContentGrid as Xe,ImageSwatch as Je,Button as se,Price as ce,Skeleton as Qe,SkeletonRow as Ye,Field as j,Checkbox as ae,Input as Me,TextArea as Ue,Accordion as Ne,AccordionSection as Pe,Icon as D,Card as Ve,ProgressSpinner as et}from"@dropins/tools/components.js";/* empty css */import*as X from"@dropins/tools/preact-compat.js";import{useRef as tt,useEffect as J,useState as M,useId as $e,useCallback as K,useMemo as le}from"@dropins/tools/preact-hooks.js";import{useText as Z}from"@dropins/tools/i18n.js";import{s as L}from"../chunks/resetCart.js";import{S as Re}from"../chunks/ChevronDown.js";import{S as Se}from"../chunks/ChevronUp.js";import{events as rt}from"@dropins/tools/event-bus.js";import{u as it}from"../chunks/updateProductsFromCart.js";import{s as nt}from"../chunks/setGiftOptionsOnCart.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/persisted-data.js";import"../chunks/refreshCart.js";import"../fragments.js";import"../chunks/acdl.js";const te=e=>X.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z",stroke:"currentColor"}),X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M6.75 12.762L10.2385 15.75L17.25 9",stroke:"currentColor"})),de=e=>X.createElement("svg",{width:20,height:23,viewBox:"0 0 20 23",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{d:"M10 6L10 21.5M10 6H12.25C13.4926 6 14.5 4.99264 14.5 3.75C14.5 2.50736 13.4926 1.5 12.25 1.5C11.0074 1.5 10 2.50736 10 3.75M10 6V3.75M10 6H7.75C6.50736 6 5.5 4.99264 5.5 3.75C5.5 2.50736 6.50736 1.5 7.75 1.5C8.99264 1.5 10 2.50736 10 3.75M3.25 10.75H16.75C17.9926 10.75 19 9.74264 19 8.5C19 7.25736 17.9926 6.25 16.75 6.25H3.25C2.00736 6.25 1 7.25736 1 8.5C1 9.74264 2.00736 10.75 3.25 10.75ZM4.75 21.5H15.25C16.4926 21.5 17.5 20.4926 17.5 19.25V13.25C17.5 12.0074 16.4926 11 15.25 11H4.75C3.50736 11 2.5 12.0074 2.5 13.25V19.25C2.5 20.4926 3.50736 21.5 4.75 21.5Z",stroke:"currentColor",strokeWidth:1.5}));function ot(e){const i=tt(null);return J(()=>{if(!e||!i.current)return;const l=i.current,d=l.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])');if(d.length===0)return;const r=d[0],f=d[d.length-1];function g(o){o.key==="Tab"&&(o.shiftKey&&document.activeElement===r?(o.preventDefault(),f.focus()):!o.shiftKey&&document.activeElement===f&&(o.preventDefault(),r.focus()))}return l.addEventListener("keydown",g),()=>{l.removeEventListener("keydown",g)}},[e]),i}const at=({view:e,showModal:i,productName:l,giftWrappingConfig:d,imageSwatchImageNode:r,setShowModal:f,updateGiftOptions:g})=>{var w;const o=ot(i),n=Z({modalTitle:"Cart.GiftOptions.modal.title",defaultTitle:"Cart.GiftOptions.modal.defaultTitle",modalWrappingText:"Cart.GiftOptions.modal.wrappingText",modalWrappingSubText:"Cart.GiftOptions.modal.wrappingSubText",modalConfirmButton:"Cart.GiftOptions.modal.modalConfirmButton",modalCancelButton:"Cart.GiftOptions.modal.modalCancelButton",ariaLabelModal:"Cart.GiftOptions.modal.ariaLabelModal",ariaLabelModalOpen:"Cart.GiftOptions.modal.ariaLabelModalOpen",ariaLabelModalClose:"Cart.GiftOptions.modal.ariaLabelModalClose",ariaLabelWrapping:"Cart.GiftOptions.modal.ariaLabelWrapping"}),[c,C]=M();if(J(()=>{const p=d.find(T=>T.selected)??d[0];C(p)},[d]),J(()=>{const p=document==null?void 0:document.querySelector(".cart-gift-options-view__modal-wrapper");p&&(p==null||p.focus())},[]),!i||!d.length)return null;const s=l?`${n.modalTitle} ${l}`:n.defaultTitle;return t("div",{ref:o,className:"cart-gift-options-view__modal-wrapper",tabIndex:0,"aria-label":`${n.ariaLabelModal} ${i?n.ariaLabelModalOpen:n.ariaLabelModalClose} ${l}`,children:u(De,{"data-testid":`gift-option-modal-${e}`,className:"cart-gift-options-view__modal",size:"medium",title:u(A,{children:[t("span",{children:s}),c&&((w=c==null?void 0:c.price)==null?void 0:w.value)>0?t(ce,{amount:c.price.value,currency:c.price.currency,weight:"normal"}):null]}),centered:!0,onClose:f,children:[u("div",{className:"cart-gift-options-view__modal-content",children:[t("span",{className:"cart-gift-options-view__modal-text",children:n.modalWrappingText}),t(Xe,{emptyGridContent:t(A,{}),maxColumns:6,columnWidth:"100px",className:"cart-gift-options-view__modal-grid",children:d.map(p=>t(Je,{groupAriaLabel:n.ariaLabelWrapping,selected:(c==null?void 0:c.uid)===(p==null?void 0:p.uid),onValue:()=>{C(p)},imageNode:r,name:"giftWrappingId",value:p.uid,src:p.image.url,alt:p.design,label:p.design,"data-testid":`gift-option-modal-image-${p.uid}`,className:"cart-gift-options-view__modal-grid-item"},p.uid))}),t("span",{className:"cart-gift-options-view__modal-sub-text",children:c==null?void 0:c.design})]}),t(se,{"data-testid":"gift-option-modal-confirm-button",type:"button",onClick:()=>{g("giftWrappingId",c==null?void 0:c.uid,{isGiftWrappingSelected:!0}),f()},children:n.modalConfirmButton}),t(se,{type:"button",variant:"secondary",onClick:f,"data-testid":"gift-option-modal-cancel-button",children:n.modalCancelButton})]})})},lt=()=>t(Qe,{children:t(Ye,{variant:"row",size:"small",fullWidth:!0,lines:1,multilineGap:"small"})}),st=({className:e,view:i,item:l,giftOptions:d,disabled:r,cartData:f,giftWrappingConfig:g,setShowModal:o,onInputChange:n,areGiftOptionsVisible:c})=>{var N,P,B,z;const C=$e(),s=Z({customize:`Cart.GiftOptions.${i}.customize`,giftReceiptIncludedTitle:`Cart.GiftOptions.${i}.giftReceiptIncluded.title`,giftReceiptIncludedText:`Cart.GiftOptions.${i}.giftReceiptIncluded.subtitle`,printedCardIncludedTitle:`Cart.GiftOptions.${i}.printedCardIncluded.title`,printedCardIncludedText:`Cart.GiftOptions.${i}.printedCardIncluded.subtitle`,giftOptionsWrapTitle:`Cart.GiftOptions.${i}.giftOptionsWrap.title`,giftOptionsWrapText:`Cart.GiftOptions.${i}.giftOptionsWrap.subtitle`,requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),w=l==null?void 0:l.productGiftWrapping,p=f==null?void 0:f.cartGiftWrapping,T=i==="product"?w:p,y=T==null?void 0:T.find(S=>S.uid===d.giftWrappingId),V=(y==null?void 0:y.design)??"",O=l==null?void 0:l.giftWrappingPrice,v=V?`${s.giftOptionsWrapText} ${V}`:"",F=+(((P=(N=L.config)==null?void 0:N.printedCardPrice)==null?void 0:P.value)??0)>0?(B=L.config)==null?void 0:B.printedCardPrice:null;let _=null;O!=null&&O.value?_=O:(z=y==null?void 0:y.price)!=null&&z.value&&(_=y.price);const W=S=>S?u("span",{children:[" (+",t(ce,{amount:S.value,currency:S.currency,weight:"normal"}),")"]}):null;return u("div",{className:We([e,[`${e}--hidden`,!c.isGiftOptionsVisible]]),children:[c.isGiftReceiptVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-gift-receipt",children:t(ae,{id:`giftReceiptIncluded-${C}`,disabled:r,name:"giftReceiptIncluded",checked:d.giftReceiptIncluded,placeholder:s.giftReceiptIncludedTitle,label:s.giftReceiptIncludedTitle,description:s.giftReceiptIncludedText,onChange:n})}):null,c.isPrintedCartVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-printed-card",children:t(ae,{id:`printedCardIncluded-${C}`,disabled:r,name:"printedCardIncluded",checked:d.printedCardIncluded,placeholder:s.printedCardIncludedTitle,label:u(A,{children:[s.printedCardIncludedTitle,W(F)]}),description:s.printedCardIncludedText,onChange:n})}):null,c.isGiftWrappingVisible?u(A,{children:[t(j,{disabled:r,className:"cart-gift-options-view__field-gift-wrap",children:t(ae,{id:`giftOptionsWrap-${C}`,disabled:r,name:"isGiftWrappingSelected",checked:d.isGiftWrappingSelected,placeholder:s.giftOptionsWrapTitle,label:u(A,{children:[s.giftOptionsWrapTitle,W(_)]}),description:v,onChange:n})}),t(se,{disabled:r||!g.length,type:"button","data-testid":`gift-option-customize-${i}`,variant:"tertiary",onClick:()=>o(!0),children:s.customize})]}):null]})},dt=({view:e,giftOptions:i,disabled:l,errorMessage:d,onInputChange:r,onBlur:f,isGiftMessageVisible:g})=>{const o=$e(),n=Z({formTitle:`Cart.GiftOptions.${e}.formContent.formTitle`,formTo:`Cart.GiftOptions.${e}.formContent.formTo`,formFrom:`Cart.GiftOptions.${e}.formContent.formFrom`,giftMessageTitle:`Cart.GiftOptions.${e}.formContent.giftMessageTitle`,formToPlaceholder:`Cart.GiftOptions.${e}.formContent.formToPlaceholder`,formFromPlaceholder:`Cart.GiftOptions.${e}.formContent.formFromPlaceholder`,formMessagePlaceholder:`Cart.GiftOptions.${e}.formContent.formMessagePlaceholder`});return g?u(A,{children:[t("span",{children:n.formTitle}),u("div",{children:[t("span",{children:n.formTo}),t(j,{disabled:l,error:d.recipientName,children:t(Me,{id:`recipientName-${o}`,disabled:l,type:"text",name:"recipientName",value:i.recipientName,placeholder:n.formToPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.formFrom}),t(j,{disabled:l,error:d.senderName,children:t(Me,{id:`senderName-${o}`,disabled:l,type:"text",name:"senderName",value:i.senderName,placeholder:n.formFromPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.giftMessageTitle}),t(j,{disabled:l,children:t(Ue,{id:`message-${o}`,errorMessage:d.message,disabled:l,name:"message",value:i.message,label:n.formMessagePlaceholder,onChange:r,onBlur:f})})]})]}):null},ct=({view:e,giftOptions:i,giftWrappingConfig:l,readOnlyFormOrderView:d})=>{const r=Z({readOnlyProductTitle:"Cart.GiftOptions.product.readOnlyFormView.title",wrapping:"Cart.GiftOptions.product.readOnlyFormView.wrapping",recipient:"Cart.GiftOptions.product.readOnlyFormView.recipient",sender:"Cart.GiftOptions.product.readOnlyFormView.sender",message:"Cart.GiftOptions.product.readOnlyFormView.message",readOnlyOrderTitle:"Cart.GiftOptions.order.readOnlyFormView.title",readOnlyOrderGiftReceiptTitle:"Cart.GiftOptions.order.readOnlyFormView.giftReceipt",readOnlyOrderGiftReceiptText:"Cart.GiftOptions.order.readOnlyFormView.giftReceiptText",readOnlyOrderGiftPrintCardTitle:"Cart.GiftOptions.order.readOnlyFormView.printCard",readOnlyOrderGiftPrintCardText:"Cart.GiftOptions.order.readOnlyFormView.printCardText",readOnlyOrderGiftWrapTitle:"Cart.GiftOptions.order.readOnlyFormView.giftWrap",readOnlyOrderGiftWrapOptionsText:"Cart.GiftOptions.order.readOnlyFormView.giftWrapOptions",readOnlyOrderFormTitle:"Cart.GiftOptions.order.readOnlyFormView.formTitle",readOnlyOrderFormTo:"Cart.GiftOptions.order.readOnlyFormView.formTo",readOnlyOrderFormFrom:"Cart.GiftOptions.order.readOnlyFormView.formFrom",readOnlyOrderFormMessageTitle:"Cart.GiftOptions.order.readOnlyFormView.formMessageTitle"}),{recipientName:f,senderName:g,message:o,giftReceiptIncluded:n,printedCardIncluded:c,isGiftWrappingSelected:C}=i,s=l==null?void 0:l.find(({uid:O})=>O===(i==null?void 0:i.giftWrappingId)),w=!!f||!!g||!!o,p=s==null?void 0:s.design,T=n||c||(s==null?void 0:s.selected),y=[{id:1,title:r.wrapping,message:C?p:""},{id:2,title:r.recipient,message:f},{id:3,title:r.sender,message:g},{id:4,title:r.message,message:o}],V=y.every(({message:O})=>!O);if(e==="product"&&!V)return t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:r.readOnlyProductTitle,showIconLeft:!0,iconLeft:de,defaultOpen:!1,renderContentWhenClosed:!1,children:t("div",{children:y.filter(O=>O.message).map(O=>u("p",{children:[O.title," ",O.message]},O.id))})})});if(e==="order"&&(w||T)){const O=u("div",{className:"cart-gift-options-readonly__header",children:[t(D,{source:de,size:"24"}),t("span",{children:r.readOnlyOrderTitle})]}),v=u(A,{children:[n?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-receipt",children:[t(D,{source:te,size:"16"}),t("p",{children:r.readOnlyOrderGiftReceiptTitle}),t("p",{children:r.readOnlyOrderGiftReceiptText})]}):null,c?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--print-card",children:[t(D,{source:te,size:"16"}),t("p",{children:r.readOnlyOrderGiftPrintCardTitle}),t("p",{children:r.readOnlyOrderGiftPrintCardText})]}):null,s!=null&&s.selected?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-wrap",children:[t(D,{source:te,size:"16"}),u("p",{children:[r.readOnlyOrderGiftWrapTitle," (+",t(ce,{amount:s.price.value,currency:s.price.currency,weight:"normal"}),")"]}),t("p",{children:`${r.readOnlyOrderGiftWrapOptionsText} ${s==null?void 0:s.design}`})]}):null]}),F=w?u("div",{className:"cart-gift-options-readonly__form",children:[t("div",{children:r.readOnlyOrderFormTitle}),u("div",{children:[u("p",{children:[t("span",{children:r.readOnlyOrderFormTo}),t("span",{children:f})]}),u("p",{children:[t("span",{children:r.readOnlyOrderFormFrom}),t("span",{children:g})]})]}),u("div",{children:[t("p",{children:r.readOnlyOrderFormMessageTitle}),t("p",{children:o})]})]}):null;return u(Ve,{variant:d,children:[O,v,F]})}return null},ft=({item:e,view:i,loading:l,giftOptions:d,showModal:r,isEditable:f,errorsField:g,updateLoading:o,cartData:n,fieldsDisabled:c,isGiftOptionsApplied:C,giftWrappingConfig:s,readOnlyFormOrderView:w,isGiftMessageVisible:p,areGiftOptionsVisible:T,imageSwatchImageNode:y,onBlur:V,setShowModal:O,updateGiftOptions:v,onInputChange:F,handleFormMouseLeave:_})=>{const W=Z({accordionHeading:`Cart.GiftOptions.${i}.accordionHeading`}),N=K(P=>t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:u("div",{className:"cart-gift-options-view__icon--success",children:[t("span",{children:W.accordionHeading}),C?t(D,{source:te,size:"16"}):null]}),ariaLabelTitle:W.accordionHeading,showIconLeft:!0,iconLeft:de,defaultOpen:C||P,renderContentWhenClosed:!1,children:u(A,{children:[t(st,{className:"cart-gift-options-view__top",view:i,item:e,giftOptions:d,disabled:c,onInputChange:F,cartData:n,giftWrappingConfig:s,setShowModal:O,areGiftOptionsVisible:T}),t("form",{className:"cart-gift-options-view__footer",onMouseLeave:_,children:t(dt,{view:i,giftOptions:d,disabled:c,errorMessage:g,onInputChange:F,onBlur:V,isGiftMessageVisible:p})})]})})}),[i,e,n,W,g,d,c,s,T,C,p,V,O,F,_]);return!T.isGiftOptionsVisible&&!p?null:u("div",{id:"cart-gift-options-view",className:We(["cart-gift-options-view",`cart-gift-options-view--${i}`,["cart-gift-options-view--loading",o]]),children:[o?t(et,{className:"cart-gift-options-view__spinner"}):null,l?t(lt,{}):u(A,{children:[f?null:t("div",{className:"cart-gift-options-view--readonly",children:t(ct,{view:i,giftOptions:d,giftWrappingConfig:s,readOnlyFormOrderView:w})}),r?t(at,{view:i,productName:e&&"name"in e?e==null?void 0:e.name:"",showModal:r,giftWrappingConfig:s,setShowModal:()=>O(!1),updateGiftOptions:v,imageSwatchImageNode:y}):null,i==="product"&&f?N(!1):null,i==="order"&&f?t(Ve,{variant:"secondary",children:N(!0)}):null]})]})},ee={recipientName:"",senderName:"",message:""},pt={giftReceiptIncluded:!1,printedCardIncluded:!1,isGiftWrappingSelected:!1},ke=(e,i)=>{var d,r;if(!i)return!!((d=L.config)!=null&&d.allowGiftMessageOnOrder);const l=((r=L.config)==null?void 0:r.allowGiftMessageOnOrderItems)??!1;return typeof(e==null?void 0:e.giftMessageAvailable)=="boolean"?e==null?void 0:e.giftMessageAvailable:l},ut=(e,i)=>{const{allowGiftWrappingOnOrder:l,allowGiftWrappingOnOrderItems:d,allowGiftMessageOnOrder:r,allowGiftMessageOnOrderItems:f,allowGiftReceipt:g,allowPrintedCard:o}=L.config||{},n=!f&&!d&&!ke(i,!0),c=!l&&!r&&!g&&!o;return!!(e==="product"&&n||e==="order"&&c)},gt=({item:e,view:i,dataSource:l,initialLoading:d,handleItemsLoading:r,handleItemsError:f,onItemUpdate:g,onGiftOptionsChange:o})=>{var pe,ue,ge,me,Oe,he;const n=i==="product",c=Z({requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),[C,s]=M(()=>d),[w,p]=M({isGiftReceiptVisible:!0,isPrintedCartVisible:!0,isGiftWrappingVisible:!0,isGiftOptionsVisible:!0}),[T,y]=M(!0),[V,O]=M(!1),[v,F]=M(!1),[_,W]=M(!1),[N,P]=M(!1),[B,z]=M(!1),[S,re]=M([]),[h,Q]=M(null),[Ie,ie]=M(ee),[G,fe]=M(()=>({giftWrappingId:"",...ee,...pt})),Y=((pe=G.recipientName)==null?void 0:pe.trim())&&((ue=G.senderName)==null?void 0:ue.trim())&&((ge=G.message)==null?void 0:ge.trim()),U=!((me=G.recipientName)!=null&&me.trim())&&!((Oe=G.senderName)!=null&&Oe.trim())&&!((he=G.message)!=null&&he.trim()),R=K(async a=>{switch(O(i==="order"),F(!0),i){case"product":{"uid"in e&&(r==null||r(e.uid,!0),f==null||f(e.uid));const{recipientName:m,senderName:x,message:b,giftWrappingId:E,isGiftWrappingSelected:k}=a,H={gift_message:{to:m??"",from:x??"",message:b??""},gift_wrapping_id:k?E:null};"uid"in e&&"quantity"in e&&await it([{uid:e.uid,quantity:e.quantity,giftOptions:H}]).then(()=>{g==null||g({item:e})}).finally(()=>{r==null||r(e.uid,!1),F(!1),W(!1),O(!1)}).catch($=>{console.warn($)})}break;case"order":await nt(a).finally(()=>{F(!1),W(!1),O(!1)});break;default:console.error('Incorrect "view" prop value provided for GiftOptions container (storefront-cart)');break}},[f,r,e,g,i]),ne=K((a,m,x={})=>{fe(b=>{const E=I=>I in b,k=I=>E(I)?b[I]:void 0;if(!(k(a)!==m||Object.keys(x).some(I=>k(I)!==x[I])))return o==null||o(b),b;const $={...b,[a]:m,...x};return!$.recipientName&&!$.senderName&&!$.message&&P(!0),(typeof m=="boolean"||["giftWrappingId","giftReceiptIncluded","printedCardIncluded"].includes(a))&&(P(!1),typeof o=="function"?o($):R($)),W(!0),o==null||o($),$})},[R,o]),Le=K(async()=>{v||typeof o!="function"&&(U&&N&&(ie(ee),P(!1),await R(G)),_&&Y&&(P(!0),await R(G)))},[R,G,_,U,N,v,o,Y]),Ae=K(async a=>{if(v||typeof o=="function")return;const{name:m,value:x}=a.target;ie(b=>({...b,[m]:x.trim()?"":c.requiredFieldError})),U&&N&&(ie(ee),P(!1),await R(G)),_&&Y&&await R(G)},[v,U,N,_,Y,c,R,G,o]),Ee=K(a=>{const m=a.target,x=m.name,b=m.type==="checkbox"?m.checked:m.value;ne(x,b)},[ne]);J(()=>{if(n)return;const a=rt.on(l==="cart"?"cart/data":"order/data",m=>{var E,k;Q(m);const x=(E=m==null?void 0:m.items)==null?void 0:E.some(({giftWrappingAvailable:H})=>H),b=(k=m==null?void 0:m.cartGiftWrapping)==null?void 0:k.some(H=>H.selected);!x&&b&&R({...G,giftWrappingId:"",isGiftWrappingSelected:!1})},{eager:!0});return()=>{a==null||a.off()}},[Q,R,l,G,n]);const oe=le(()=>{var Te,be,Fe,we,ve,_e;if(!h&&!e)return null;const a=n?(Te=e==null?void 0:e.productGiftWrapping)==null?void 0:Te.map(q=>{var xe;return{...q,price:e!=null&&e.giftWrappingPrice&&((xe=e==null?void 0:e.giftWrappingPrice)==null?void 0:xe.value)>0?e.giftWrappingPrice:q.price}}):(h==null?void 0:h.cartGiftWrapping)||[],m=a==null?void 0:a.find(q=>q.selected),x=(m==null?void 0:m.uid)??((be=a==null?void 0:a[0])==null?void 0:be.uid),b=!!m,E=n?e.giftMessage:h==null?void 0:h.giftMessage,k=h==null?void 0:h.printedCardIncluded,H=h==null?void 0:h.giftReceiptIncluded,$=ke(e,n),I=(Fe=L.config)==null?void 0:Fe.allowGiftWrappingOnOrder,ze=(we=L.config)==null?void 0:we.allowGiftReceipt,qe=(ve=L.config)==null?void 0:ve.allowPrintedCard,Ke=(_e=h==null?void 0:h.items)==null?void 0:_e.some(q=>q.giftWrappingAvailable),je=e==null?void 0:e.giftWrappingAvailable,Ce=n?!1:!!ze,Ge=n?!1:!!qe,ye=n?!!je&&!!a.length:!!I&&!!a.length&&!!Ke;return p({isGiftReceiptVisible:Ce,isPrintedCartVisible:Ge,isGiftWrappingVisible:ye,isGiftOptionsVisible:!(!Ce&&!Ge&&!ye)}),y($),{...e&&"uid"in e?{itemId:e.uid}:{},...n?{}:{printedCardIncluded:k,giftReceiptIncluded:H},...E,giftWrappingId:x,isGiftWrappingSelected:b,giftWrappingOptions:a}},[h,e,n]);J(()=>{if(!oe)return;const{giftWrappingOptions:a,...m}=oe;fe(m),a!=null&&a.length&&re(a),s(!1)},[oe]);const He=le(()=>Object.entries(G).filter(([a])=>a!=="itemId"&&a!=="giftWrappingId").some(([,a])=>!!a),[G]),Be=le(()=>{var a;return!C&&!!((a=L)!=null&&a.config)&&ut(i,e)},[e,C,i]);return{loading:C,giftOptions:G,showModal:B,errorsField:Ie,updateLoading:V,cartData:h,fieldsDisabled:v,isGiftOptionsApplied:He,giftWrappingConfig:S,setFieldsDisabled:F,handleFormMouseLeave:Le,onInputChange:Ee,updateGiftOptions:ne,setShowModal:z,handleBlur:Ae,isGiftMessageVisible:T,areGiftOptionsVisible:w,isGiftOptionsHidden:Be}},$t=({item:e,view:i="order",readOnlyFormOrderView:l="primary",dataSource:d="cart",isEditable:r=!0,initialLoading:f=!0,slots:g,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C})=>{const{isGiftMessageVisible:s,areGiftOptionsVisible:w,loading:p,giftOptions:T,showModal:y,errorsField:V,updateLoading:O,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,updateGiftOptions:P,setShowModal:B,onInputChange:z,handleBlur:S,isGiftOptionsHidden:re}=gt({item:e,view:i,dataSource:d,initialLoading:f,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C});return re?null:t(ft,{item:e,view:i,loading:p,onBlur:S,giftOptions:T,showModal:y,isEditable:r,errorsField:V,setShowModal:B,updateLoading:O,updateGiftOptions:P,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,readOnlyFormOrderView:l,onInputChange:z,isGiftMessageVisible:s,areGiftOptionsVisible:w,imageSwatchImageNode:g!=null&&g.SwatchImage?({imageSwatchContext:h,...Q})=>t(Ze,{name:"SwatchImage",slotTag:"span",contentTag:"span",slot:g.SwatchImage,context:{item:e,imageSwatchContext:h,defaultImageProps:Q}}):void 0})};export{$t as GiftOptions,$t as default};
|
|
3
|
+
import{jsx as t,jsxs as u,Fragment as A}from"@dropins/tools/preact-jsx-runtime.js";import{classes as We,Slot as Ze}from"@dropins/tools/lib.js";import{Modal as De,ContentGrid as Xe,ImageSwatch as Je,Button as se,Price as ce,Skeleton as Qe,SkeletonRow as Ye,Field as j,Checkbox as ae,Input as Me,TextArea as Ue,Accordion as Ne,AccordionSection as Pe,Icon as D,Card as Ve,ProgressSpinner as et}from"@dropins/tools/components.js";/* empty css */import*as X from"@dropins/tools/preact-compat.js";import{useRef as tt,useEffect as J,useState as M,useId as $e,useCallback as K,useMemo as le}from"@dropins/tools/preact-hooks.js";import{useText as Z}from"@dropins/tools/i18n.js";import{s as L}from"../chunks/resetCart.js";import{S as Re}from"../chunks/ChevronDown.js";import{S as Se}from"../chunks/ChevronUp.js";import{events as rt}from"@dropins/tools/event-bus.js";import{u as it}from"../chunks/updateProductsFromCart.js";import{s as nt}from"../chunks/setGiftOptionsOnCart.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/persisted-data.js";import"../chunks/refreshCart.js";import"../fragments.js";import"../chunks/acdl.js";const te=e=>X.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z",stroke:"currentColor"}),X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M6.75 12.762L10.2385 15.75L17.25 9",stroke:"currentColor"})),de=e=>X.createElement("svg",{width:20,height:23,viewBox:"0 0 20 23",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M10 6L10 21.5M10 6H12.25C13.4926 6 14.5 4.99264 14.5 3.75C14.5 2.50736 13.4926 1.5 12.25 1.5C11.0074 1.5 10 2.50736 10 3.75M10 6V3.75M10 6H7.75C6.50736 6 5.5 4.99264 5.5 3.75C5.5 2.50736 6.50736 1.5 7.75 1.5C8.99264 1.5 10 2.50736 10 3.75M3.25 10.75H16.75C17.9926 10.75 19 9.74264 19 8.5C19 7.25736 17.9926 6.25 16.75 6.25H3.25C2.00736 6.25 1 7.25736 1 8.5C1 9.74264 2.00736 10.75 3.25 10.75ZM4.75 21.5H15.25C16.4926 21.5 17.5 20.4926 17.5 19.25V13.25C17.5 12.0074 16.4926 11 15.25 11H4.75C3.50736 11 2.5 12.0074 2.5 13.25V19.25C2.5 20.4926 3.50736 21.5 4.75 21.5Z",stroke:"currentColor",strokeWidth:1}));function ot(e){const i=tt(null);return J(()=>{if(!e||!i.current)return;const l=i.current,d=l.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])');if(d.length===0)return;const r=d[0],f=d[d.length-1];function g(o){o.key==="Tab"&&(o.shiftKey&&document.activeElement===r?(o.preventDefault(),f.focus()):!o.shiftKey&&document.activeElement===f&&(o.preventDefault(),r.focus()))}return l.addEventListener("keydown",g),()=>{l.removeEventListener("keydown",g)}},[e]),i}const at=({view:e,showModal:i,productName:l,giftWrappingConfig:d,imageSwatchImageNode:r,setShowModal:f,updateGiftOptions:g})=>{var w;const o=ot(i),n=Z({modalTitle:"Cart.GiftOptions.modal.title",defaultTitle:"Cart.GiftOptions.modal.defaultTitle",modalWrappingText:"Cart.GiftOptions.modal.wrappingText",modalWrappingSubText:"Cart.GiftOptions.modal.wrappingSubText",modalConfirmButton:"Cart.GiftOptions.modal.modalConfirmButton",modalCancelButton:"Cart.GiftOptions.modal.modalCancelButton",ariaLabelModal:"Cart.GiftOptions.modal.ariaLabelModal",ariaLabelModalOpen:"Cart.GiftOptions.modal.ariaLabelModalOpen",ariaLabelModalClose:"Cart.GiftOptions.modal.ariaLabelModalClose",ariaLabelWrapping:"Cart.GiftOptions.modal.ariaLabelWrapping"}),[c,C]=M();if(J(()=>{const p=d.find(T=>T.selected)??d[0];C(p)},[d]),J(()=>{const p=document==null?void 0:document.querySelector(".cart-gift-options-view__modal-wrapper");p&&(p==null||p.focus())},[]),!i||!d.length)return null;const s=l?`${n.modalTitle} ${l}`:n.defaultTitle;return t("div",{ref:o,className:"cart-gift-options-view__modal-wrapper",tabIndex:0,"aria-label":`${n.ariaLabelModal} ${i?n.ariaLabelModalOpen:n.ariaLabelModalClose} ${l}`,children:u(De,{"data-testid":`gift-option-modal-${e}`,className:"cart-gift-options-view__modal",size:"medium",title:u(A,{children:[t("span",{children:s}),c&&((w=c==null?void 0:c.price)==null?void 0:w.value)>0?t(ce,{amount:c.price.value,currency:c.price.currency,weight:"normal"}):null]}),centered:!0,onClose:f,children:[u("div",{className:"cart-gift-options-view__modal-content",children:[t("span",{className:"cart-gift-options-view__modal-text",children:n.modalWrappingText}),t(Xe,{emptyGridContent:t(A,{}),maxColumns:6,columnWidth:"100px",className:"cart-gift-options-view__modal-grid",children:d.map(p=>t(Je,{groupAriaLabel:n.ariaLabelWrapping,selected:(c==null?void 0:c.uid)===(p==null?void 0:p.uid),onValue:()=>{C(p)},imageNode:r,name:"giftWrappingId",value:p.uid,src:p.image.url,alt:p.design,label:p.design,"data-testid":`gift-option-modal-image-${p.uid}`,className:"cart-gift-options-view__modal-grid-item"},p.uid))}),t("span",{className:"cart-gift-options-view__modal-sub-text",children:c==null?void 0:c.design})]}),t(se,{"data-testid":"gift-option-modal-confirm-button",type:"button",onClick:()=>{g("giftWrappingId",c==null?void 0:c.uid,{isGiftWrappingSelected:!0}),f()},children:n.modalConfirmButton}),t(se,{type:"button",variant:"secondary",onClick:f,"data-testid":"gift-option-modal-cancel-button",children:n.modalCancelButton})]})})},lt=()=>t(Qe,{children:t(Ye,{variant:"row",size:"small",fullWidth:!0,lines:1,multilineGap:"small"})}),st=({className:e,view:i,item:l,giftOptions:d,disabled:r,cartData:f,giftWrappingConfig:g,setShowModal:o,onInputChange:n,areGiftOptionsVisible:c})=>{var N,P,B,z;const C=$e(),s=Z({customize:`Cart.GiftOptions.${i}.customize`,giftReceiptIncludedTitle:`Cart.GiftOptions.${i}.giftReceiptIncluded.title`,giftReceiptIncludedText:`Cart.GiftOptions.${i}.giftReceiptIncluded.subtitle`,printedCardIncludedTitle:`Cart.GiftOptions.${i}.printedCardIncluded.title`,printedCardIncludedText:`Cart.GiftOptions.${i}.printedCardIncluded.subtitle`,giftOptionsWrapTitle:`Cart.GiftOptions.${i}.giftOptionsWrap.title`,giftOptionsWrapText:`Cart.GiftOptions.${i}.giftOptionsWrap.subtitle`,requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),w=l==null?void 0:l.productGiftWrapping,p=f==null?void 0:f.cartGiftWrapping,T=i==="product"?w:p,y=T==null?void 0:T.find(S=>S.uid===d.giftWrappingId),V=(y==null?void 0:y.design)??"",O=l==null?void 0:l.giftWrappingPrice,v=V?`${s.giftOptionsWrapText} ${V}`:"",F=+(((P=(N=L.config)==null?void 0:N.printedCardPrice)==null?void 0:P.value)??0)>0?(B=L.config)==null?void 0:B.printedCardPrice:null;let _=null;O!=null&&O.value?_=O:(z=y==null?void 0:y.price)!=null&&z.value&&(_=y.price);const W=S=>S?u("span",{children:[" (+",t(ce,{amount:S.value,currency:S.currency,weight:"normal"}),")"]}):null;return u("div",{className:We([e,[`${e}--hidden`,!c.isGiftOptionsVisible]]),children:[c.isGiftReceiptVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-gift-receipt",children:t(ae,{id:`giftReceiptIncluded-${C}`,disabled:r,name:"giftReceiptIncluded",checked:d.giftReceiptIncluded,placeholder:s.giftReceiptIncludedTitle,label:s.giftReceiptIncludedTitle,description:s.giftReceiptIncludedText,onChange:n})}):null,c.isPrintedCartVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-printed-card",children:t(ae,{id:`printedCardIncluded-${C}`,disabled:r,name:"printedCardIncluded",checked:d.printedCardIncluded,placeholder:s.printedCardIncludedTitle,label:u(A,{children:[s.printedCardIncludedTitle,W(F)]}),description:s.printedCardIncludedText,onChange:n})}):null,c.isGiftWrappingVisible?u(A,{children:[t(j,{disabled:r,className:"cart-gift-options-view__field-gift-wrap",children:t(ae,{id:`giftOptionsWrap-${C}`,disabled:r,name:"isGiftWrappingSelected",checked:d.isGiftWrappingSelected,placeholder:s.giftOptionsWrapTitle,label:u(A,{children:[s.giftOptionsWrapTitle,W(_)]}),description:v,onChange:n})}),t(se,{disabled:r||!g.length,type:"button","data-testid":`gift-option-customize-${i}`,variant:"tertiary",onClick:()=>o(!0),children:s.customize})]}):null]})},dt=({view:e,giftOptions:i,disabled:l,errorMessage:d,onInputChange:r,onBlur:f,isGiftMessageVisible:g})=>{const o=$e(),n=Z({formTitle:`Cart.GiftOptions.${e}.formContent.formTitle`,formTo:`Cart.GiftOptions.${e}.formContent.formTo`,formFrom:`Cart.GiftOptions.${e}.formContent.formFrom`,giftMessageTitle:`Cart.GiftOptions.${e}.formContent.giftMessageTitle`,formToPlaceholder:`Cart.GiftOptions.${e}.formContent.formToPlaceholder`,formFromPlaceholder:`Cart.GiftOptions.${e}.formContent.formFromPlaceholder`,formMessagePlaceholder:`Cart.GiftOptions.${e}.formContent.formMessagePlaceholder`});return g?u(A,{children:[t("span",{children:n.formTitle}),u("div",{children:[t("span",{children:n.formTo}),t(j,{disabled:l,error:d.recipientName,children:t(Me,{id:`recipientName-${o}`,disabled:l,type:"text",name:"recipientName",value:i.recipientName,placeholder:n.formToPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.formFrom}),t(j,{disabled:l,error:d.senderName,children:t(Me,{id:`senderName-${o}`,disabled:l,type:"text",name:"senderName",value:i.senderName,placeholder:n.formFromPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.giftMessageTitle}),t(j,{disabled:l,children:t(Ue,{id:`message-${o}`,errorMessage:d.message,disabled:l,name:"message",value:i.message,label:n.formMessagePlaceholder,onChange:r,onBlur:f})})]})]}):null},ct=({view:e,giftOptions:i,giftWrappingConfig:l,readOnlyFormOrderView:d})=>{const r=Z({readOnlyProductTitle:"Cart.GiftOptions.product.readOnlyFormView.title",wrapping:"Cart.GiftOptions.product.readOnlyFormView.wrapping",recipient:"Cart.GiftOptions.product.readOnlyFormView.recipient",sender:"Cart.GiftOptions.product.readOnlyFormView.sender",message:"Cart.GiftOptions.product.readOnlyFormView.message",readOnlyOrderTitle:"Cart.GiftOptions.order.readOnlyFormView.title",readOnlyOrderGiftReceiptTitle:"Cart.GiftOptions.order.readOnlyFormView.giftReceipt",readOnlyOrderGiftReceiptText:"Cart.GiftOptions.order.readOnlyFormView.giftReceiptText",readOnlyOrderGiftPrintCardTitle:"Cart.GiftOptions.order.readOnlyFormView.printCard",readOnlyOrderGiftPrintCardText:"Cart.GiftOptions.order.readOnlyFormView.printCardText",readOnlyOrderGiftWrapTitle:"Cart.GiftOptions.order.readOnlyFormView.giftWrap",readOnlyOrderGiftWrapOptionsText:"Cart.GiftOptions.order.readOnlyFormView.giftWrapOptions",readOnlyOrderFormTitle:"Cart.GiftOptions.order.readOnlyFormView.formTitle",readOnlyOrderFormTo:"Cart.GiftOptions.order.readOnlyFormView.formTo",readOnlyOrderFormFrom:"Cart.GiftOptions.order.readOnlyFormView.formFrom",readOnlyOrderFormMessageTitle:"Cart.GiftOptions.order.readOnlyFormView.formMessageTitle"}),{recipientName:f,senderName:g,message:o,giftReceiptIncluded:n,printedCardIncluded:c,isGiftWrappingSelected:C}=i,s=l==null?void 0:l.find(({uid:O})=>O===(i==null?void 0:i.giftWrappingId)),w=!!f||!!g||!!o,p=s==null?void 0:s.design,T=n||c||(s==null?void 0:s.selected),y=[{id:1,title:r.wrapping,message:C?p:""},{id:2,title:r.recipient,message:f},{id:3,title:r.sender,message:g},{id:4,title:r.message,message:o}],V=y.every(({message:O})=>!O);if(e==="product"&&!V)return t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:r.readOnlyProductTitle,showIconLeft:!0,iconLeft:de,defaultOpen:!1,renderContentWhenClosed:!1,children:t("div",{children:y.filter(O=>O.message).map(O=>u("p",{children:[O.title," ",O.message]},O.id))})})});if(e==="order"&&(w||T)){const O=u("div",{className:"cart-gift-options-readonly__header",children:[t(D,{source:de,size:"24"}),t("span",{children:r.readOnlyOrderTitle})]}),v=u(A,{children:[n?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-receipt",children:[t(D,{source:te,size:"16"}),t("p",{children:r.readOnlyOrderGiftReceiptTitle}),t("p",{children:r.readOnlyOrderGiftReceiptText})]}):null,c?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--print-card",children:[t(D,{source:te,size:"16"}),t("p",{children:r.readOnlyOrderGiftPrintCardTitle}),t("p",{children:r.readOnlyOrderGiftPrintCardText})]}):null,s!=null&&s.selected?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-wrap",children:[t(D,{source:te,size:"16"}),u("p",{children:[r.readOnlyOrderGiftWrapTitle," (+",t(ce,{amount:s.price.value,currency:s.price.currency,weight:"normal"}),")"]}),t("p",{children:`${r.readOnlyOrderGiftWrapOptionsText} ${s==null?void 0:s.design}`})]}):null]}),F=w?u("div",{className:"cart-gift-options-readonly__form",children:[t("div",{children:r.readOnlyOrderFormTitle}),u("div",{children:[u("p",{children:[t("span",{children:r.readOnlyOrderFormTo}),t("span",{children:f})]}),u("p",{children:[t("span",{children:r.readOnlyOrderFormFrom}),t("span",{children:g})]})]}),u("div",{children:[t("p",{children:r.readOnlyOrderFormMessageTitle}),t("p",{children:o})]})]}):null;return u(Ve,{variant:d,children:[O,v,F]})}return null},ft=({item:e,view:i,loading:l,giftOptions:d,showModal:r,isEditable:f,errorsField:g,updateLoading:o,cartData:n,fieldsDisabled:c,isGiftOptionsApplied:C,giftWrappingConfig:s,readOnlyFormOrderView:w,isGiftMessageVisible:p,areGiftOptionsVisible:T,imageSwatchImageNode:y,onBlur:V,setShowModal:O,updateGiftOptions:v,onInputChange:F,handleFormMouseLeave:_})=>{const W=Z({accordionHeading:`Cart.GiftOptions.${i}.accordionHeading`}),N=K(P=>t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:u("div",{className:"cart-gift-options-view__icon--success",children:[t("span",{children:W.accordionHeading}),C?t(D,{source:te,size:"16"}):null]}),ariaLabelTitle:W.accordionHeading,showIconLeft:!0,iconLeft:de,defaultOpen:C||P,renderContentWhenClosed:!1,children:u(A,{children:[t(st,{className:"cart-gift-options-view__top",view:i,item:e,giftOptions:d,disabled:c,onInputChange:F,cartData:n,giftWrappingConfig:s,setShowModal:O,areGiftOptionsVisible:T}),t("form",{className:"cart-gift-options-view__footer",onMouseLeave:_,children:t(dt,{view:i,giftOptions:d,disabled:c,errorMessage:g,onInputChange:F,onBlur:V,isGiftMessageVisible:p})})]})})}),[i,e,n,W,g,d,c,s,T,C,p,V,O,F,_]);return!T.isGiftOptionsVisible&&!p?null:u("div",{id:"cart-gift-options-view",className:We(["cart-gift-options-view",`cart-gift-options-view--${i}`,["cart-gift-options-view--loading",o]]),children:[o?t(et,{className:"cart-gift-options-view__spinner"}):null,l?t(lt,{}):u(A,{children:[f?null:t("div",{className:"cart-gift-options-view--readonly",children:t(ct,{view:i,giftOptions:d,giftWrappingConfig:s,readOnlyFormOrderView:w})}),r?t(at,{view:i,productName:e&&"name"in e?e==null?void 0:e.name:"",showModal:r,giftWrappingConfig:s,setShowModal:()=>O(!1),updateGiftOptions:v,imageSwatchImageNode:y}):null,i==="product"&&f?N(!1):null,i==="order"&&f?t(Ve,{variant:"secondary",children:N(!0)}):null]})]})},ee={recipientName:"",senderName:"",message:""},pt={giftReceiptIncluded:!1,printedCardIncluded:!1,isGiftWrappingSelected:!1},ke=(e,i)=>{var d,r;if(!i)return!!((d=L.config)!=null&&d.allowGiftMessageOnOrder);const l=((r=L.config)==null?void 0:r.allowGiftMessageOnOrderItems)??!1;return typeof(e==null?void 0:e.giftMessageAvailable)=="boolean"?e==null?void 0:e.giftMessageAvailable:l},ut=(e,i)=>{const{allowGiftWrappingOnOrder:l,allowGiftWrappingOnOrderItems:d,allowGiftMessageOnOrder:r,allowGiftMessageOnOrderItems:f,allowGiftReceipt:g,allowPrintedCard:o}=L.config||{},n=!f&&!d&&!ke(i,!0),c=!l&&!r&&!g&&!o;return!!(e==="product"&&n||e==="order"&&c)},gt=({item:e,view:i,dataSource:l,initialLoading:d,handleItemsLoading:r,handleItemsError:f,onItemUpdate:g,onGiftOptionsChange:o})=>{var pe,ue,ge,me,Oe,he;const n=i==="product",c=Z({requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),[C,s]=M(()=>d),[w,p]=M({isGiftReceiptVisible:!0,isPrintedCartVisible:!0,isGiftWrappingVisible:!0,isGiftOptionsVisible:!0}),[T,y]=M(!0),[V,O]=M(!1),[v,F]=M(!1),[_,W]=M(!1),[N,P]=M(!1),[B,z]=M(!1),[S,re]=M([]),[h,Q]=M(null),[Ie,ie]=M(ee),[G,fe]=M(()=>({giftWrappingId:"",...ee,...pt})),Y=((pe=G.recipientName)==null?void 0:pe.trim())&&((ue=G.senderName)==null?void 0:ue.trim())&&((ge=G.message)==null?void 0:ge.trim()),U=!((me=G.recipientName)!=null&&me.trim())&&!((Oe=G.senderName)!=null&&Oe.trim())&&!((he=G.message)!=null&&he.trim()),R=K(async a=>{switch(O(i==="order"),F(!0),i){case"product":{"uid"in e&&(r==null||r(e.uid,!0),f==null||f(e.uid));const{recipientName:m,senderName:x,message:b,giftWrappingId:E,isGiftWrappingSelected:k}=a,H={gift_message:{to:m??"",from:x??"",message:b??""},gift_wrapping_id:k?E:null};"uid"in e&&"quantity"in e&&await it([{uid:e.uid,quantity:e.quantity,giftOptions:H}]).then(()=>{g==null||g({item:e})}).finally(()=>{r==null||r(e.uid,!1),F(!1),W(!1),O(!1)}).catch($=>{console.warn($)})}break;case"order":await nt(a).finally(()=>{F(!1),W(!1),O(!1)});break;default:console.error('Incorrect "view" prop value provided for GiftOptions container (storefront-cart)');break}},[f,r,e,g,i]),ne=K((a,m,x={})=>{fe(b=>{const E=I=>I in b,k=I=>E(I)?b[I]:void 0;if(!(k(a)!==m||Object.keys(x).some(I=>k(I)!==x[I])))return o==null||o(b),b;const $={...b,[a]:m,...x};return!$.recipientName&&!$.senderName&&!$.message&&P(!0),(typeof m=="boolean"||["giftWrappingId","giftReceiptIncluded","printedCardIncluded"].includes(a))&&(P(!1),typeof o=="function"?o($):R($)),W(!0),o==null||o($),$})},[R,o]),Le=K(async()=>{v||typeof o!="function"&&(U&&N&&(ie(ee),P(!1),await R(G)),_&&Y&&(P(!0),await R(G)))},[R,G,_,U,N,v,o,Y]),Ae=K(async a=>{if(v||typeof o=="function")return;const{name:m,value:x}=a.target;ie(b=>({...b,[m]:x.trim()?"":c.requiredFieldError})),U&&N&&(ie(ee),P(!1),await R(G)),_&&Y&&await R(G)},[v,U,N,_,Y,c,R,G,o]),Ee=K(a=>{const m=a.target,x=m.name,b=m.type==="checkbox"?m.checked:m.value;ne(x,b)},[ne]);J(()=>{if(n)return;const a=rt.on(l==="cart"?"cart/data":"order/data",m=>{var E,k;Q(m);const x=(E=m==null?void 0:m.items)==null?void 0:E.some(({giftWrappingAvailable:H})=>H),b=(k=m==null?void 0:m.cartGiftWrapping)==null?void 0:k.some(H=>H.selected);!x&&b&&R({...G,giftWrappingId:"",isGiftWrappingSelected:!1})},{eager:!0});return()=>{a==null||a.off()}},[Q,R,l,G,n]);const oe=le(()=>{var Te,be,Fe,we,ve,_e;if(!h&&!e)return null;const a=n?(Te=e==null?void 0:e.productGiftWrapping)==null?void 0:Te.map(q=>{var xe;return{...q,price:e!=null&&e.giftWrappingPrice&&((xe=e==null?void 0:e.giftWrappingPrice)==null?void 0:xe.value)>0?e.giftWrappingPrice:q.price}}):(h==null?void 0:h.cartGiftWrapping)||[],m=a==null?void 0:a.find(q=>q.selected),x=(m==null?void 0:m.uid)??((be=a==null?void 0:a[0])==null?void 0:be.uid),b=!!m,E=n?e.giftMessage:h==null?void 0:h.giftMessage,k=h==null?void 0:h.printedCardIncluded,H=h==null?void 0:h.giftReceiptIncluded,$=ke(e,n),I=(Fe=L.config)==null?void 0:Fe.allowGiftWrappingOnOrder,ze=(we=L.config)==null?void 0:we.allowGiftReceipt,qe=(ve=L.config)==null?void 0:ve.allowPrintedCard,Ke=(_e=h==null?void 0:h.items)==null?void 0:_e.some(q=>q.giftWrappingAvailable),je=e==null?void 0:e.giftWrappingAvailable,Ce=n?!1:!!ze,Ge=n?!1:!!qe,ye=n?!!je&&!!a.length:!!I&&!!a.length&&!!Ke;return p({isGiftReceiptVisible:Ce,isPrintedCartVisible:Ge,isGiftWrappingVisible:ye,isGiftOptionsVisible:!(!Ce&&!Ge&&!ye)}),y($),{...e&&"uid"in e?{itemId:e.uid}:{},...n?{}:{printedCardIncluded:k,giftReceiptIncluded:H},...E,giftWrappingId:x,isGiftWrappingSelected:b,giftWrappingOptions:a}},[h,e,n]);J(()=>{if(!oe)return;const{giftWrappingOptions:a,...m}=oe;fe(m),a!=null&&a.length&&re(a),s(!1)},[oe]);const He=le(()=>Object.entries(G).filter(([a])=>a!=="itemId"&&a!=="giftWrappingId").some(([,a])=>!!a),[G]),Be=le(()=>{var a;return!C&&!!((a=L)!=null&&a.config)&&ut(i,e)},[e,C,i]);return{loading:C,giftOptions:G,showModal:B,errorsField:Ie,updateLoading:V,cartData:h,fieldsDisabled:v,isGiftOptionsApplied:He,giftWrappingConfig:S,setFieldsDisabled:F,handleFormMouseLeave:Le,onInputChange:Ee,updateGiftOptions:ne,setShowModal:z,handleBlur:Ae,isGiftMessageVisible:T,areGiftOptionsVisible:w,isGiftOptionsHidden:Be}},$t=({item:e,view:i="order",readOnlyFormOrderView:l="primary",dataSource:d="cart",isEditable:r=!0,initialLoading:f=!0,slots:g,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C})=>{const{isGiftMessageVisible:s,areGiftOptionsVisible:w,loading:p,giftOptions:T,showModal:y,errorsField:V,updateLoading:O,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,updateGiftOptions:P,setShowModal:B,onInputChange:z,handleBlur:S,isGiftOptionsHidden:re}=gt({item:e,view:i,dataSource:d,initialLoading:f,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C});return re?null:t(ft,{item:e,view:i,loading:p,onBlur:S,giftOptions:T,showModal:y,isEditable:r,errorsField:V,setShowModal:B,updateLoading:O,updateGiftOptions:P,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,readOnlyFormOrderView:l,onInputChange:z,isGiftMessageVisible:s,areGiftOptionsVisible:w,imageSwatchImageNode:g!=null&&g.SwatchImage?({imageSwatchContext:h,...Q})=>t(Ze,{name:"SwatchImage",slotTag:"span",contentTag:"span",slot:g.SwatchImage,context:{item:e,imageSwatchContext:h,defaultImageProps:Q}}):void 0})};export{$t as GiftOptions,$t as default};
|
|
4
4
|
//# sourceMappingURL=GiftOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GiftOptions.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/CheckWithCircle.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Gift.svg","/@dropins/storefront-cart/src/hooks/useFocusTrap.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/GiftOptionModal.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/GiftLoader.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/CheckboxGroup.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/FormFields.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/ReadOnlyFormView.tsx","/@dropins/storefront-cart/src/components/GiftOptions/GiftOptions.tsx","/@dropins/storefront-cart/src/lib/giftOptionsHelper.ts","/@dropins/storefront-cart/src/hooks/useGiftOptions.tsx","/@dropins/storefront-cart/src/containers/GiftOptions/GiftOptions.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgCheckWithCircle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M6.75 12.762L10.2385 15.75L17.25 9\", stroke: \"currentColor\" }));\nexport default SvgCheckWithCircle;\n","import * as React from \"react\";\nconst SvgGift = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 23, viewBox: \"0 0 20 23\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10 6L10 21.5M10 6H12.25C13.4926 6 14.5 4.99264 14.5 3.75C14.5 2.50736 13.4926 1.5 12.25 1.5C11.0074 1.5 10 2.50736 10 3.75M10 6V3.75M10 6H7.75C6.50736 6 5.5 4.99264 5.5 3.75C5.5 2.50736 6.50736 1.5 7.75 1.5C8.99264 1.5 10 2.50736 10 3.75M3.25 10.75H16.75C17.9926 10.75 19 9.74264 19 8.5C19 7.25736 17.9926 6.25 16.75 6.25H3.25C2.00736 6.25 1 7.25736 1 8.5C1 9.74264 2.00736 10.75 3.25 10.75ZM4.75 21.5H15.25C16.4926 21.5 17.5 20.4926 17.5 19.25V13.25C17.5 12.0074 16.4926 11 15.25 11H4.75C3.50736 11 2.5 12.0074 2.5 13.25V19.25C2.5 20.4926 3.50736 21.5 4.75 21.5Z\", stroke: \"currentColor\", strokeWidth: 1.5 }));\nexport default SvgGift;\n","import { useEffect, useRef } from 'preact/hooks';\n\nexport function useFocusTrap(showModal: boolean) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!showModal || !containerRef.current) return;\n\n const container = containerRef.current;\n\n const focusableElements = container.querySelectorAll<HTMLElement>(\n 'a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n if (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n } else if (!event.shiftKey && document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n\n container.addEventListener('keydown', handleKeyDown);\n\n return () => {\n container.removeEventListener('keydown', handleKeyDown);\n };\n }, [showModal]);\n\n return containerRef;\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, JSX, VNode } from 'preact';\nimport {\n Modal,\n Button,\n ImageSwatch,\n Price,\n ContentGrid,\n ImageNodeRenderProps,\n} from '@adobe-commerce/elsie/components';\nimport { useState, useEffect } from 'preact/hooks';\nimport { GiftWrappingConfigProps, GiftOptionsViewProps } from '@/cart/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { useFocusTrap } from '@/cart/hooks/useFocusTrap';\n\ninterface GiftOptionModalProps {\n giftWrappingConfig: GiftWrappingConfigProps[];\n showModal: boolean;\n productName: string;\n view: GiftOptionsViewProps;\n imageSwatchImageNode?: VNode | ((props: ImageNodeRenderProps) => JSX.Element);\n setShowModal: () => void;\n updateGiftOptions: (\n name: string,\n value?: string | boolean | number,\n extraGiftOptions?: Record<string, string | boolean | number>\n ) => void;\n}\n\nexport const GiftOptionModal: FunctionComponent<GiftOptionModalProps> = ({\n view,\n showModal,\n productName,\n giftWrappingConfig,\n imageSwatchImageNode,\n setShowModal,\n updateGiftOptions,\n}) => {\n const containerRef = useFocusTrap(showModal);\n\n const dictionary = useText({\n modalTitle: 'Cart.GiftOptions.modal.title',\n defaultTitle: 'Cart.GiftOptions.modal.defaultTitle',\n modalWrappingText: 'Cart.GiftOptions.modal.wrappingText',\n modalWrappingSubText: 'Cart.GiftOptions.modal.wrappingSubText',\n modalConfirmButton: 'Cart.GiftOptions.modal.modalConfirmButton',\n modalCancelButton: 'Cart.GiftOptions.modal.modalCancelButton',\n ariaLabelModal: 'Cart.GiftOptions.modal.ariaLabelModal',\n ariaLabelModalOpen: 'Cart.GiftOptions.modal.ariaLabelModalOpen',\n ariaLabelModalClose: 'Cart.GiftOptions.modal.ariaLabelModalClose',\n ariaLabelWrapping: 'Cart.GiftOptions.modal.ariaLabelWrapping',\n });\n\n const [giftWrappingItem, setGiftWrappingItem] =\n useState<GiftWrappingConfigProps>();\n\n useEffect(() => {\n const selectedGiftWrapping =\n giftWrappingConfig.find((item) => item.selected) ?? giftWrappingConfig[0];\n\n setGiftWrappingItem(selectedGiftWrapping);\n }, [giftWrappingConfig]);\n\n useEffect(() => {\n const focusElement = document?.querySelector(\n '.cart-gift-options-view__modal-wrapper'\n ) as HTMLElement;\n\n if (focusElement) focusElement?.focus();\n }, []);\n\n if (!showModal || !giftWrappingConfig.length) return null;\n\n const renderTitle = productName\n ? `${dictionary.modalTitle} ${productName}`\n : dictionary.defaultTitle;\n\n return (\n <div\n ref={containerRef}\n className=\"cart-gift-options-view__modal-wrapper\"\n tabIndex={0}\n aria-label={`${dictionary.ariaLabelModal} ${\n showModal\n ? dictionary.ariaLabelModalOpen\n : dictionary.ariaLabelModalClose\n } ${productName}`}\n >\n <Modal\n data-testid={`gift-option-modal-${view}`}\n className={'cart-gift-options-view__modal'}\n size={'medium'}\n title={\n <>\n <span>{renderTitle}</span>\n {giftWrappingItem && giftWrappingItem?.price?.value > 0 ? (\n <Price\n amount={giftWrappingItem.price.value}\n currency={giftWrappingItem.price.currency}\n weight=\"normal\"\n />\n ) : null}\n </>\n }\n centered={true}\n onClose={setShowModal}\n >\n <div className=\"cart-gift-options-view__modal-content\">\n <span className=\"cart-gift-options-view__modal-text\">\n {dictionary.modalWrappingText}\n </span>\n <ContentGrid\n emptyGridContent={<></>}\n maxColumns={6}\n columnWidth=\"100px\"\n className=\"cart-gift-options-view__modal-grid\"\n >\n {giftWrappingConfig.map((wrapItem) => (\n <ImageSwatch\n groupAriaLabel={dictionary.ariaLabelWrapping}\n selected={giftWrappingItem?.uid === wrapItem?.uid}\n onValue={() => {\n setGiftWrappingItem(wrapItem);\n }}\n imageNode={imageSwatchImageNode}\n name={'giftWrappingId'}\n value={wrapItem.uid}\n src={wrapItem.image.url}\n alt={wrapItem.design}\n label={wrapItem.design}\n key={wrapItem.uid}\n data-testid={`gift-option-modal-image-${wrapItem.uid}`}\n className={'cart-gift-options-view__modal-grid-item'}\n />\n ))}\n </ContentGrid>\n <span className=\"cart-gift-options-view__modal-sub-text\">\n {giftWrappingItem?.design}\n </span>\n </div>\n\n <Button\n data-testid=\"gift-option-modal-confirm-button\"\n type=\"button\"\n onClick={() => {\n updateGiftOptions('giftWrappingId', giftWrappingItem?.uid, {\n isGiftWrappingSelected: true,\n });\n setShowModal();\n }}\n >\n {dictionary.modalConfirmButton}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={setShowModal}\n data-testid=\"gift-option-modal-cancel-button\"\n >\n {dictionary.modalCancelButton}\n </Button>\n </Modal>\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const GiftLoader: FunctionComponent = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"row\"\n size=\"small\"\n fullWidth={true}\n lines={1}\n multilineGap=\"small\"\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Checkbox, Field, Button, Price } from '@adobe-commerce/elsie/components';\nimport {\n GiftOptionsViewProps,\n GiftWrappingConfigProps,\n GiftFormDataType,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\nimport { CartModel, Item, Price as PriceType } from '@/cart/data/models';\nimport { state } from '@/cart/lib/state';\nimport { StateUpdater, Dispatch, useId } from 'preact/hooks';\n\ninterface CheckboxGroupProps {\n className: string;\n view: GiftOptionsViewProps;\n item: Item | ProductGiftOptionsConfig;\n giftOptions: GiftFormDataType;\n disabled: boolean;\n cartData: CartModel | null;\n giftWrappingConfig: GiftWrappingConfigProps[] | [];\n areGiftOptionsVisible: Record<string, boolean>;\n setShowModal: Dispatch<StateUpdater<boolean>>;\n onInputChange: (event: Event) => void;\n}\n\nexport const CheckboxGroup: FunctionComponent<CheckboxGroupProps> = ({\n className,\n view,\n item,\n giftOptions,\n disabled,\n cartData,\n giftWrappingConfig,\n setShowModal,\n onInputChange,\n areGiftOptionsVisible,\n}) => {\n const id = useId();\n const dictionary = useText({\n customize: `Cart.GiftOptions.${view}.customize`,\n giftReceiptIncludedTitle: `Cart.GiftOptions.${view}.giftReceiptIncluded.title`,\n giftReceiptIncludedText: `Cart.GiftOptions.${view}.giftReceiptIncluded.subtitle`,\n printedCardIncludedTitle: `Cart.GiftOptions.${view}.printedCardIncluded.title`,\n printedCardIncludedText: `Cart.GiftOptions.${view}.printedCardIncluded.subtitle`,\n giftOptionsWrapTitle: `Cart.GiftOptions.${view}.giftOptionsWrap.title`,\n giftOptionsWrapText: `Cart.GiftOptions.${view}.giftOptionsWrap.subtitle`,\n requiredFieldError: 'Cart.GiftOptions.formText.requiredFieldError',\n });\n\n const productGiftWrappingOptions = item?.productGiftWrapping;\n const orderGiftWrappingOptions = cartData?.cartGiftWrapping;\n const giftWrappingOptions =\n view === 'product' ? productGiftWrappingOptions : orderGiftWrappingOptions;\n\n const selectedGiftWrapping = giftWrappingOptions?.find(\n (el: GiftWrappingConfigProps) => el.uid === giftOptions.giftWrappingId\n );\n const selectedGiftWrappingLabel = selectedGiftWrapping?.design ?? '';\n\n // Product level configurations\n const productGiftWrappingPrice = item?.giftWrappingPrice;\n const renderSelectedGiftWrappingLabel = selectedGiftWrappingLabel\n ? `${dictionary.giftOptionsWrapText} ${selectedGiftWrappingLabel}`\n : '';\n\n const printedCardPrice =\n +(state.config?.printedCardPrice?.value ?? 0) > 0\n ? state.config?.printedCardPrice\n : null;\n\n let productWrappingPrice = null;\n\n // Product level configurations have higher priority\n if (productGiftWrappingPrice?.value) {\n productWrappingPrice = productGiftWrappingPrice;\n } else if (selectedGiftWrapping?.price?.value) {\n productWrappingPrice = selectedGiftWrapping.price;\n }\n\n const renderPrice = (price?: PriceType | null) => {\n if (!price) return null;\n\n return (\n <span>\n (+\n <Price amount={price.value} currency={price.currency} weight=\"normal\" />\n )\n </span>\n );\n };\n\n return (\n <div\n className={classes([\n className,\n [`${className}--hidden`, !areGiftOptionsVisible.isGiftOptionsVisible],\n ])}\n >\n {areGiftOptionsVisible.isGiftReceiptVisible ? (\n <Field\n disabled={disabled}\n className={'cart-gift-options-view__field-gift-receipt'}\n >\n <Checkbox\n id={`giftReceiptIncluded-${id}`}\n disabled={disabled}\n name={'giftReceiptIncluded'}\n checked={giftOptions.giftReceiptIncluded}\n placeholder={dictionary.giftReceiptIncludedTitle}\n label={dictionary.giftReceiptIncludedTitle}\n description={dictionary.giftReceiptIncludedText}\n onChange={onInputChange}\n />\n </Field>\n ) : null}\n {areGiftOptionsVisible.isPrintedCartVisible ? (\n <Field\n disabled={disabled}\n className={'cart-gift-options-view__field-printed-card'}\n >\n <Checkbox\n id={`printedCardIncluded-${id}`}\n disabled={disabled}\n name={'printedCardIncluded'}\n checked={giftOptions.printedCardIncluded}\n placeholder={dictionary.printedCardIncludedTitle}\n label={\n <>\n {dictionary.printedCardIncludedTitle}\n {renderPrice(printedCardPrice)}\n </>\n }\n description={dictionary.printedCardIncludedText}\n onChange={onInputChange}\n />\n </Field>\n ) : null}\n {areGiftOptionsVisible.isGiftWrappingVisible ? (\n <>\n <Field\n disabled={disabled}\n className={'cart-gift-options-view__field-gift-wrap'}\n >\n <Checkbox\n id={`giftOptionsWrap-${id}`}\n disabled={disabled}\n name={'isGiftWrappingSelected'}\n checked={giftOptions.isGiftWrappingSelected}\n placeholder={dictionary.giftOptionsWrapTitle}\n label={\n <>\n {dictionary.giftOptionsWrapTitle}\n {renderPrice(productWrappingPrice)}\n </>\n }\n description={renderSelectedGiftWrappingLabel}\n onChange={onInputChange}\n />\n </Field>\n\n <Button\n disabled={disabled || !giftWrappingConfig.length}\n type=\"button\"\n data-testid={`gift-option-customize-${view}`}\n variant=\"tertiary\"\n onClick={() => setShowModal(true)}\n >\n {dictionary.customize}\n </Button>\n </>\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Field, Input, TextArea } from '@adobe-commerce/elsie/components';\nimport { GiftOptionsViewProps, GiftFormDataType } from '@/cart/types';\nimport { useId } from 'preact/hooks';\n\ninterface FormFieldsProps {\n view: GiftOptionsViewProps;\n giftOptions: GiftFormDataType;\n disabled: boolean;\n errorMessage: Record<string, string>;\n onInputChange: (value: Event) => void;\n onBlur: (event: Event) => void;\n isGiftMessageVisible: boolean;\n}\n\nexport const FormFields: FunctionComponent<FormFieldsProps> = ({\n view,\n giftOptions,\n disabled,\n errorMessage,\n onInputChange,\n onBlur,\n isGiftMessageVisible,\n}) => {\n const id = useId();\n const dictionary = useText({\n formTitle: `Cart.GiftOptions.${view}.formContent.formTitle`,\n formTo: `Cart.GiftOptions.${view}.formContent.formTo`,\n formFrom: `Cart.GiftOptions.${view}.formContent.formFrom`,\n giftMessageTitle: `Cart.GiftOptions.${view}.formContent.giftMessageTitle`,\n formToPlaceholder: `Cart.GiftOptions.${view}.formContent.formToPlaceholder`,\n formFromPlaceholder: `Cart.GiftOptions.${view}.formContent.formFromPlaceholder`,\n formMessagePlaceholder: `Cart.GiftOptions.${view}.formContent.formMessagePlaceholder`,\n });\n\n if (!isGiftMessageVisible) return null;\n\n return (\n <>\n <span>{dictionary.formTitle}</span>\n <div>\n <span>{dictionary.formTo}</span>\n <Field disabled={disabled} error={errorMessage.recipientName}>\n <Input\n id={`recipientName-${id}`}\n disabled={disabled}\n type=\"text\"\n name={'recipientName'}\n value={giftOptions.recipientName}\n placeholder={dictionary.formToPlaceholder}\n onChange={onInputChange}\n onBlur={onBlur}\n />\n </Field>\n </div>\n <div>\n <span>{dictionary.formFrom}</span>\n <Field disabled={disabled} error={errorMessage.senderName}>\n <Input\n id={`senderName-${id}`}\n disabled={disabled}\n type=\"text\"\n name={'senderName'}\n value={giftOptions.senderName}\n placeholder={dictionary.formFromPlaceholder}\n onChange={onInputChange}\n onBlur={onBlur}\n />\n </Field>\n </div>\n <div>\n <span>{dictionary.giftMessageTitle}</span>\n <Field disabled={disabled}>\n <TextArea\n id={`message-${id}`}\n errorMessage={errorMessage.message}\n disabled={disabled}\n name={'message'}\n value={giftOptions.message}\n label={dictionary.formMessagePlaceholder}\n onChange={onInputChange}\n onBlur={onBlur}\n />\n </Field>\n </div>\n </>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport {\n Price,\n Icon,\n Card,\n Accordion,\n AccordionSection,\n} from '@adobe-commerce/elsie/components';\nimport {\n ChevronDown,\n ChevronUp,\n Gift,\n CheckWithCircle,\n} from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n GiftFormDataType,\n GiftWrappingConfigProps,\n GiftOptionsReadOnlyViewProps,\n GiftOptionsViewProps,\n} from '@/cart/types';\n\nexport interface ReadOnlyFormViewProps {\n view: GiftOptionsViewProps;\n giftOptions: GiftFormDataType;\n readOnlyFormOrderView: GiftOptionsReadOnlyViewProps;\n giftWrappingConfig: GiftWrappingConfigProps[] | [];\n}\n\nexport const ReadOnlyFormView: FunctionComponent<ReadOnlyFormViewProps> = ({\n view,\n giftOptions,\n giftWrappingConfig,\n readOnlyFormOrderView,\n}) => {\n const dictionary = useText({\n readOnlyProductTitle: 'Cart.GiftOptions.product.readOnlyFormView.title',\n wrapping: 'Cart.GiftOptions.product.readOnlyFormView.wrapping',\n recipient: 'Cart.GiftOptions.product.readOnlyFormView.recipient',\n sender: 'Cart.GiftOptions.product.readOnlyFormView.sender',\n message: 'Cart.GiftOptions.product.readOnlyFormView.message',\n\n readOnlyOrderTitle: 'Cart.GiftOptions.order.readOnlyFormView.title',\n readOnlyOrderGiftReceiptTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.giftReceipt',\n readOnlyOrderGiftReceiptText:\n 'Cart.GiftOptions.order.readOnlyFormView.giftReceiptText',\n readOnlyOrderGiftPrintCardTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.printCard',\n readOnlyOrderGiftPrintCardText:\n 'Cart.GiftOptions.order.readOnlyFormView.printCardText',\n readOnlyOrderGiftWrapTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.giftWrap',\n readOnlyOrderGiftWrapOptionsText:\n 'Cart.GiftOptions.order.readOnlyFormView.giftWrapOptions',\n\n readOnlyOrderFormTitle: 'Cart.GiftOptions.order.readOnlyFormView.formTitle',\n readOnlyOrderFormTo: 'Cart.GiftOptions.order.readOnlyFormView.formTo',\n readOnlyOrderFormFrom: 'Cart.GiftOptions.order.readOnlyFormView.formFrom',\n readOnlyOrderFormMessageTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.formMessageTitle',\n });\n\n const {\n recipientName,\n senderName,\n message,\n giftReceiptIncluded,\n printedCardIncluded,\n isGiftWrappingSelected,\n } = giftOptions;\n\n const giftWrapCart = giftWrappingConfig?.find(\n ({ uid }) => uid === giftOptions?.giftWrappingId\n );\n const isGiftMessageProvided = !!recipientName || !!senderName || !!message;\n const giftWrapProductSelectLabel = giftWrapCart?.design;\n const shouldRenderGiftOptions =\n giftReceiptIncluded || printedCardIncluded || giftWrapCart?.selected;\n\n const productGiftOptionsConfig = [\n {\n id: 1,\n title: dictionary.wrapping,\n message: isGiftWrappingSelected ? giftWrapProductSelectLabel : '',\n },\n {\n id: 2,\n title: dictionary.recipient,\n message: recipientName,\n },\n {\n id: 3,\n title: dictionary.sender,\n message: senderName,\n },\n {\n id: 4,\n title: dictionary.message,\n message,\n },\n ];\n\n const noProductGiftOptionsApplied = productGiftOptionsConfig.every(\n ({ message }) => !message\n );\n\n if (view === 'product' && !noProductGiftOptionsApplied) {\n return (\n <Accordion\n data-testid=\"gift-options-product\"\n iconClose={ChevronUp}\n iconOpen={ChevronDown}\n actionIconPosition=\"right\"\n >\n <AccordionSection\n title={dictionary.readOnlyProductTitle}\n showIconLeft={true}\n iconLeft={Gift}\n defaultOpen={false}\n renderContentWhenClosed={false}\n >\n <div>\n {productGiftOptionsConfig\n .filter((element) => element.message)\n .map((config) => {\n return (\n <p key={config.id}>\n {config.title} {config.message}\n </p>\n );\n })}\n </div>\n </AccordionSection>\n </Accordion>\n );\n }\n\n if (view === 'order' && (isGiftMessageProvided || shouldRenderGiftOptions)) {\n const renderHeader = (\n <div className=\"cart-gift-options-readonly__header\">\n <Icon source={Gift} size=\"24\" />\n <span>{dictionary.readOnlyOrderTitle}</span>\n </div>\n );\n\n const selectedGiftOptions = (\n <>\n {giftReceiptIncluded ? (\n <div className=\"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-receipt\">\n <Icon source={CheckWithCircle} size=\"16\" />\n <p>{dictionary.readOnlyOrderGiftReceiptTitle}</p>\n <p>{dictionary.readOnlyOrderGiftReceiptText}</p>\n </div>\n ) : null}\n {printedCardIncluded ? (\n <div className=\"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--print-card\">\n <Icon source={CheckWithCircle} size=\"16\" />\n <p>{dictionary.readOnlyOrderGiftPrintCardTitle}</p>\n <p>{dictionary.readOnlyOrderGiftPrintCardText}</p>\n </div>\n ) : null}\n {giftWrapCart?.selected ? (\n <div className=\"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-wrap\">\n <Icon source={CheckWithCircle} size=\"16\" />\n <p>\n {dictionary.readOnlyOrderGiftWrapTitle} (+\n <Price\n amount={giftWrapCart.price.value}\n currency={giftWrapCart.price.currency}\n weight=\"normal\"\n />\n )\n </p>\n <p>{`${dictionary.readOnlyOrderGiftWrapOptionsText} ${giftWrapCart?.design}`}</p>\n </div>\n ) : null}\n </>\n );\n\n const enteredGiftMessage = isGiftMessageProvided ? (\n <div className=\"cart-gift-options-readonly__form\">\n <div>{dictionary.readOnlyOrderFormTitle}</div>\n <div>\n <p>\n <span>{dictionary.readOnlyOrderFormTo}</span>\n <span>{recipientName}</span>\n </p>\n <p>\n <span>{dictionary.readOnlyOrderFormFrom}</span>\n <span>{senderName}</span>\n </p>\n </div>\n <div>\n <p>{dictionary.readOnlyOrderFormMessageTitle}</p>\n <p>{message}</p>\n </div>\n </div>\n ) : null;\n\n return (\n <Card variant={readOnlyFormOrderView}>\n {renderHeader}\n {selectedGiftOptions}\n {enteredGiftMessage}\n </Card>\n );\n }\n\n return null;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useCallback, StateUpdater, Dispatch } from 'preact/hooks';\nimport { FunctionComponent, JSX, VNode } from 'preact';\nimport { GiftOptionModal } from './Elements/GiftOptionModal';\nimport { GiftLoader } from './Elements/GiftLoader';\nimport { CheckboxGroup } from './Elements/CheckboxGroup';\nimport { FormFields } from './Elements/FormFields';\nimport { ReadOnlyFormView } from './Elements/ReadOnlyFormView';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport {\n Accordion,\n AccordionSection,\n Card,\n Icon,\n ImageNodeRenderProps,\n ProgressSpinner,\n} from '@adobe-commerce/elsie/components';\nimport {\n ChevronDown,\n ChevronUp,\n CheckWithCircle,\n Gift,\n} from '@adobe-commerce/elsie/icons';\nimport {\n GiftWrappingConfigProps,\n GiftOptionsViewProps,\n GiftFormDataType,\n GiftOptionsReadOnlyViewProps,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { CartModel, Item } from '@/cart/data/models';\nimport '@/cart/components/GiftOptions/GiftOptions.css';\n\nexport interface GiftOptionsProps {\n readOnlyFormOrderView: GiftOptionsReadOnlyViewProps;\n cartData: CartModel | null;\n errorsField: Record<string, string>;\n isGiftMessageVisible: boolean;\n fieldsDisabled: boolean;\n loading: boolean;\n showModal: boolean;\n isEditable: boolean;\n isGiftOptionsApplied: boolean;\n updateLoading: boolean;\n areGiftOptionsVisible: Record<string, boolean>;\n view: GiftOptionsViewProps;\n giftOptions: GiftFormDataType;\n imageSwatchImageNode?: VNode | ((props: ImageNodeRenderProps) => JSX.Element);\n item: Item | ProductGiftOptionsConfig;\n giftWrappingConfig: GiftWrappingConfigProps[] | [];\n updateGiftOptions: (\n name: string,\n value?: string | boolean | number,\n extraGiftOptions?: Record<string, string | boolean | number>\n ) => void;\n setShowModal: Dispatch<StateUpdater<boolean>>;\n handleFormMouseLeave: () => void;\n onInputChange: (event: Event) => void;\n onBlur: (event: Event) => void;\n}\n\nexport const GiftOptions: FunctionComponent<GiftOptionsProps> = ({\n item,\n view,\n loading,\n giftOptions,\n showModal,\n isEditable,\n errorsField,\n updateLoading,\n cartData,\n fieldsDisabled,\n isGiftOptionsApplied,\n giftWrappingConfig,\n readOnlyFormOrderView,\n isGiftMessageVisible,\n areGiftOptionsVisible,\n imageSwatchImageNode,\n onBlur,\n setShowModal,\n updateGiftOptions,\n onInputChange,\n handleFormMouseLeave,\n}) => {\n const dictionary = useText({\n accordionHeading: `Cart.GiftOptions.${view}.accordionHeading`,\n });\n\n const renderAccordion = useCallback(\n (defaultOpen: boolean) => {\n return (\n <Accordion\n data-testid=\"gift-options-product\"\n iconClose={ChevronUp}\n iconOpen={ChevronDown}\n actionIconPosition=\"right\"\n >\n <AccordionSection\n title={\n <div className=\"cart-gift-options-view__icon--success\">\n <span>{dictionary.accordionHeading}</span>\n {isGiftOptionsApplied ? (\n <Icon source={CheckWithCircle} size=\"16\" />\n ) : null}\n </div>\n }\n ariaLabelTitle={dictionary.accordionHeading}\n showIconLeft={true}\n iconLeft={Gift}\n defaultOpen={isGiftOptionsApplied || defaultOpen}\n renderContentWhenClosed={false}\n >\n <>\n <CheckboxGroup\n className={'cart-gift-options-view__top'}\n view={view}\n item={item}\n giftOptions={giftOptions}\n disabled={fieldsDisabled}\n onInputChange={onInputChange}\n cartData={cartData}\n giftWrappingConfig={giftWrappingConfig}\n setShowModal={setShowModal}\n areGiftOptionsVisible={areGiftOptionsVisible}\n />\n <form\n className=\"cart-gift-options-view__footer\"\n onMouseLeave={handleFormMouseLeave}\n >\n <FormFields\n view={view}\n giftOptions={giftOptions}\n disabled={fieldsDisabled}\n errorMessage={errorsField}\n onInputChange={onInputChange}\n onBlur={onBlur}\n isGiftMessageVisible={isGiftMessageVisible}\n />\n </form>\n </>\n </AccordionSection>\n </Accordion>\n );\n },\n [\n view,\n item,\n cartData,\n dictionary,\n errorsField,\n giftOptions,\n fieldsDisabled,\n giftWrappingConfig,\n areGiftOptionsVisible,\n isGiftOptionsApplied,\n isGiftMessageVisible,\n onBlur,\n setShowModal,\n onInputChange,\n handleFormMouseLeave,\n ]\n );\n\n if (!areGiftOptionsVisible.isGiftOptionsVisible && !isGiftMessageVisible) {\n return null;\n }\n\n return (\n <div\n id=\"cart-gift-options-view\"\n className={classes([\n 'cart-gift-options-view',\n `cart-gift-options-view--${view}`,\n ['cart-gift-options-view--loading', updateLoading],\n ])}\n >\n {updateLoading ? (\n <ProgressSpinner className=\"cart-gift-options-view__spinner\" />\n ) : null}\n {!loading ? (\n <>\n {!isEditable ? (\n <div className={'cart-gift-options-view--readonly'}>\n <ReadOnlyFormView\n view={view}\n giftOptions={giftOptions}\n giftWrappingConfig={giftWrappingConfig}\n readOnlyFormOrderView={readOnlyFormOrderView}\n />\n </div>\n ) : null}\n {showModal ? (\n <GiftOptionModal\n view={view}\n productName={item && 'name' in item ? item?.name : ''}\n showModal={showModal}\n giftWrappingConfig={giftWrappingConfig}\n setShowModal={() => setShowModal(false)}\n updateGiftOptions={updateGiftOptions}\n imageSwatchImageNode={imageSwatchImageNode}\n />\n ) : null}\n {view === 'product' && isEditable ? renderAccordion(false) : null}\n {view === 'order' && isEditable ? (\n <Card variant={'secondary'}>{renderAccordion(true)}</Card>\n ) : null}\n </>\n ) : (\n <GiftLoader />\n )}\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CartModel, Item } from '@/cart/data/models';\nimport { state } from '@/cart/lib/state';\nimport {\n GiftWrappingConfigProps,\n GiftOptionsViewProps,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\n\n// This helper is specifically designed for small functions needed in useGiftOptions for formSections configuration manipulation.\nexport const DEFAULT_FORM_STATE = {\n recipientName: '',\n senderName: '',\n message: '',\n};\n\nexport const DEFAULT_CHECKBOXES_STATE = {\n giftReceiptIncluded: false,\n printedCardIncluded: false,\n isGiftWrappingSelected: false,\n};\n\nexport const shouldShowGiftMessage = (\n item: CartModel['items'][0] | ProductGiftOptionsConfig,\n isProductView: boolean\n) => {\n if (!isProductView) return !!state.config?.allowGiftMessageOnOrder;\n\n const allowGiftMessageOnOrderItems =\n state.config?.allowGiftMessageOnOrderItems ?? false;\n\n return typeof item?.giftMessageAvailable === 'boolean'\n ? item?.giftMessageAvailable\n : allowGiftMessageOnOrderItems;\n};\n\nexport const getSelectedGiftWrapping = (\n giftWrappingOptions: GiftWrappingConfigProps[] | []\n): GiftWrappingConfigProps | undefined => {\n const fallbackGiftWrappingData = {\n uid: '',\n design: '',\n selected: false,\n image: {\n url: '',\n design: '',\n },\n price: {\n currency: 'USD',\n value: 0,\n },\n };\n\n if (!giftWrappingOptions || giftWrappingOptions.length === 0) {\n return fallbackGiftWrappingData;\n }\n\n const isNotSelected = giftWrappingOptions?.every((wrap) => !wrap.selected);\n\n if (isNotSelected) {\n return giftWrappingOptions[0];\n }\n\n return giftWrappingOptions.find((wrap) => wrap.selected);\n};\n\nexport const areGiftOptionsDisabled = (\n view: GiftOptionsViewProps,\n item: Item | ProductGiftOptionsConfig\n) => {\n const {\n allowGiftWrappingOnOrder,\n allowGiftWrappingOnOrderItems,\n allowGiftMessageOnOrder,\n allowGiftMessageOnOrderItems,\n allowGiftReceipt,\n allowPrintedCard,\n } = state.config || {};\n\n const isGiftOptionsOnProductDisabled =\n !allowGiftMessageOnOrderItems &&\n !allowGiftWrappingOnOrderItems &&\n !shouldShowGiftMessage(item, true);\n\n const isGiftOptionsOnOrderDisabled =\n !allowGiftWrappingOnOrder &&\n !allowGiftMessageOnOrder &&\n !allowGiftReceipt &&\n !allowPrintedCard;\n\n if (view === 'product' && isGiftOptionsOnProductDisabled) {\n return true;\n }\n\n if (view === 'order' && isGiftOptionsOnOrderDisabled) {\n return true;\n }\n\n return false;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useCallback, useEffect, useState, useMemo } from 'preact/hooks';\nimport { events } from '@adobe-commerce/event-bus';\nimport { CartModel, Item } from '@/cart/data/models';\nimport { setGiftOptionsOnCart, updateProductsFromCart } from '@/cart/api';\nimport {\n DEFAULT_FORM_STATE,\n DEFAULT_CHECKBOXES_STATE,\n shouldShowGiftMessage,\n areGiftOptionsDisabled,\n} from '@/cart/lib/giftOptionsHelper';\nimport {\n GiftOptionsDataSourcesProps,\n GiftOptionsViewProps,\n GiftWrappingConfigProps,\n GiftFormDataType,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { state } from '@/cart/lib/state';\n\nexport interface UseGiftOptionsProps {\n item: Item | ProductGiftOptionsConfig;\n view: GiftOptionsViewProps;\n dataSource: GiftOptionsDataSourcesProps;\n initialLoading: boolean;\n handleItemsLoading?: (uid: string, state: boolean) => void;\n handleItemsError?: (uid: string, message?: string) => void;\n onItemUpdate?: ({ item }: { item: Item }) => void;\n onGiftOptionsChange?: (data: GiftFormDataType) => void;\n}\n\nexport const useGiftOptions = ({\n item,\n view,\n dataSource,\n initialLoading,\n handleItemsLoading,\n handleItemsError,\n onItemUpdate,\n onGiftOptionsChange,\n}: UseGiftOptionsProps) => {\n const isProductView = view === 'product';\n\n const dictionary = useText({\n requiredFieldError: 'Cart.GiftOptions.formText.requiredFieldError',\n });\n\n const [loading, setLoading] = useState(() => initialLoading);\n const [areGiftOptionsVisible, setAreGiftOptionsVisible] = useState({\n isGiftReceiptVisible: true,\n isPrintedCartVisible: true,\n isGiftWrappingVisible: true,\n isGiftOptionsVisible: true,\n });\n const [isGiftMessageVisible, setIsGiftMessageVisible] = useState(true);\n const [updateLoading, setUpdateLoading] = useState(false);\n const [fieldsDisabled, setFieldsDisabled] = useState(false);\n const [isDataChanged, setIsDataChanged] = useState(false);\n const [isFormTouched, setIsFormTouched] = useState(false);\n const [showModal, setShowModal] = useState<boolean>(false);\n const [giftWrappingConfig, setGiftWrappingConfig] = useState<\n GiftWrappingConfigProps[] | []\n >([]);\n const [cartData, setCartData] = useState<CartModel | null>(null);\n const [errorsField, setErrorsField] =\n useState<typeof DEFAULT_FORM_STATE>(DEFAULT_FORM_STATE);\n const [giftOptions, setGiftOptions] = useState<GiftFormDataType>(() => ({\n giftWrappingId: '',\n ...DEFAULT_FORM_STATE,\n ...DEFAULT_CHECKBOXES_STATE,\n }));\n\n const isFormFilled =\n giftOptions.recipientName?.trim() &&\n giftOptions.senderName?.trim() &&\n giftOptions.message?.trim();\n\n const isFormEmpty =\n !giftOptions.recipientName?.trim() &&\n !giftOptions.senderName?.trim() &&\n !giftOptions.message?.trim();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const applyGiftOptionsToCart = useCallback(\n async (updatedGiftOptions: GiftFormDataType) => {\n // Update loading state used to render loading indicator required only in order view\n setUpdateLoading(view === 'order');\n setFieldsDisabled(true);\n\n switch (view) {\n case 'product':\n {\n if ('uid' in item) {\n handleItemsLoading?.(item.uid, true);\n handleItemsError?.(item.uid);\n }\n\n const {\n recipientName,\n senderName,\n message,\n giftWrappingId,\n isGiftWrappingSelected,\n } = updatedGiftOptions;\n\n const giftOptions = {\n gift_message: {\n to: recipientName ?? '',\n from: senderName ?? '',\n message: message ?? '',\n },\n gift_wrapping_id: isGiftWrappingSelected ? giftWrappingId : null,\n };\n\n if ('uid' in item && 'quantity' in item) {\n await updateProductsFromCart([\n {\n uid: item.uid,\n quantity: item.quantity,\n giftOptions,\n },\n ])\n .then(() => {\n onItemUpdate?.({ item });\n })\n .finally(() => {\n handleItemsLoading?.(item.uid, false);\n setFieldsDisabled(false);\n setIsDataChanged(false);\n setUpdateLoading(false);\n })\n .catch((error: any) => {\n console.warn(error);\n });\n }\n }\n break;\n case 'order':\n await setGiftOptionsOnCart(updatedGiftOptions).finally(() => {\n setFieldsDisabled(false);\n setIsDataChanged(false);\n setUpdateLoading(false);\n });\n break;\n default:\n console.error(\n 'Incorrect \"view\" prop value provided for GiftOptions container (storefront-cart)'\n );\n break;\n }\n },\n [handleItemsError, handleItemsLoading, item, onItemUpdate, view]\n );\n\n const updateGiftOptions = useCallback(\n (\n name: string,\n value: string | boolean | number | undefined,\n extraGiftOptions: Record<string, string | boolean | number> = {}\n ) => {\n setGiftOptions((prevGiftOptions: GiftFormDataType) => {\n const isValidGiftFormKey = (\n key: string\n ): key is keyof GiftFormDataType => key in prevGiftOptions;\n\n const getPrevValue = (key: string) =>\n isValidGiftFormKey(key) ? prevGiftOptions[key] : undefined;\n\n const hasChanged =\n getPrevValue(name) !== value ||\n Object.keys(extraGiftOptions).some(\n (key) => getPrevValue(key) !== extraGiftOptions[key]\n );\n\n if (!hasChanged) {\n onGiftOptionsChange?.(prevGiftOptions);\n return prevGiftOptions;\n }\n\n const updatedGiftOptions = {\n ...prevGiftOptions,\n [name]: value,\n ...extraGiftOptions,\n };\n\n if (\n !updatedGiftOptions.recipientName &&\n !updatedGiftOptions.senderName &&\n !updatedGiftOptions.message\n ) {\n setIsFormTouched(true);\n }\n\n if (\n typeof value === 'boolean' ||\n [\n 'giftWrappingId',\n 'giftReceiptIncluded',\n 'printedCardIncluded',\n ].includes(name)\n ) {\n setIsFormTouched(false);\n typeof onGiftOptionsChange === 'function'\n ? onGiftOptionsChange(updatedGiftOptions)\n : applyGiftOptionsToCart(updatedGiftOptions);\n }\n\n setIsDataChanged(true);\n\n onGiftOptionsChange?.(updatedGiftOptions);\n return updatedGiftOptions;\n });\n },\n [applyGiftOptionsToCart, onGiftOptionsChange]\n );\n\n const handleFormMouseLeave = useCallback(\n async () => {\n // Fields disabled if other event handler already triggered\n if (fieldsDisabled) return;\n if (typeof onGiftOptionsChange === 'function') return;\n\n // Case when user removed all form fields - reset to initial state\n if (isFormEmpty && isFormTouched) {\n setErrorsField(DEFAULT_FORM_STATE);\n setIsFormTouched(false);\n await applyGiftOptionsToCart(giftOptions);\n }\n\n // Case when user edited one of form fields\n if (isDataChanged && isFormFilled) {\n setIsFormTouched(true);\n await applyGiftOptionsToCart(giftOptions);\n }\n },\n [\n applyGiftOptionsToCart,\n giftOptions,\n isDataChanged,\n isFormEmpty,\n isFormTouched,\n fieldsDisabled,\n onGiftOptionsChange,\n isFormFilled\n ]\n );\n\n const handleBlur = useCallback(\n async (event: Event) => {\n // Fields disabled if other event handler already triggered\n if (fieldsDisabled) return;\n if (typeof onGiftOptionsChange === 'function') return;\n\n const { name, value } = event.target as HTMLInputElement;\n\n setErrorsField((prevErrors: typeof DEFAULT_FORM_STATE) => ({\n ...prevErrors,\n [name]: value.trim() ? '' : dictionary.requiredFieldError,\n }));\n\n // Case when user removed all form fields - reset to initial state\n if (isFormEmpty && isFormTouched) {\n setErrorsField(DEFAULT_FORM_STATE);\n setIsFormTouched(false);\n await applyGiftOptionsToCart(giftOptions);\n }\n\n if (isDataChanged && isFormFilled) {\n await applyGiftOptionsToCart(giftOptions);\n }\n },\n [\n fieldsDisabled,\n isFormEmpty,\n isFormTouched,\n isDataChanged,\n isFormFilled,\n dictionary,\n applyGiftOptionsToCart,\n giftOptions,\n onGiftOptionsChange,\n ]\n );\n\n const onInputChange = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const name = target.name;\n const value = target.type === 'checkbox' ? target.checked : target.value;\n\n updateGiftOptions(name, value);\n },\n [updateGiftOptions]\n );\n\n useEffect(() => {\n if (isProductView) return;\n\n const dataEvent = events.on(\n // @ts-ignore\n dataSource === 'cart' ? 'cart/data' : 'order/data',\n (payload: CartModel) => {\n setCartData(payload);\n // Gift wrapping is allowed for the cart if at least one item has gift wrapping available\n const isCartGiftWrappingAllowed = payload?.items?.some(\n ({ giftWrappingAvailable }: { giftWrappingAvailable: boolean }) =>\n giftWrappingAvailable\n );\n const isCartGiftWrappingApplied = payload?.cartGiftWrapping?.some(\n (wrap: GiftWrappingConfigProps) => wrap.selected\n );\n\n // If gift wrapping is not allowed and it is applied, remove it\n if (!isCartGiftWrappingAllowed && isCartGiftWrappingApplied) {\n applyGiftOptionsToCart({\n ...giftOptions,\n giftWrappingId: '',\n isGiftWrappingSelected: false,\n });\n }\n },\n { eager: true }\n );\n return () => {\n dataEvent?.off();\n };\n }, [setCartData, applyGiftOptionsToCart, dataSource, giftOptions, isProductView]);\n\n const giftOptionsState: GiftFormDataType | null = useMemo(() => {\n if (!cartData && !item) return null;\n\n const giftWrappingOptions: GiftWrappingConfigProps[] = isProductView\n ? item?.productGiftWrapping?.map(\n (wrap: GiftWrappingConfigProps): GiftWrappingConfigProps => ({\n ...wrap,\n price:\n item?.giftWrappingPrice && item?.giftWrappingPrice?.value > 0\n ? item.giftWrappingPrice\n : wrap.price,\n })\n )\n : cartData?.cartGiftWrapping || [];\n\n const selectedWrap = giftWrappingOptions?.find((wrap) => wrap.selected);\n const selectedGiftWrappingId =\n selectedWrap?.uid ?? giftWrappingOptions?.[0]?.uid;\n\n const isGiftWrappingSelected = !!selectedWrap;\n\n const giftMessageConfig = isProductView\n ? item.giftMessage\n : cartData?.giftMessage;\n const printedCardIncluded = cartData?.printedCardIncluded;\n const giftReceiptIncluded = cartData?.giftReceiptIncluded;\n\n const giftMessageAvailable = shouldShowGiftMessage(item, isProductView);\n\n const allowGiftWrappingOnOrder = state.config?.allowGiftWrappingOnOrder;\n const allowGiftReceipt = state.config?.allowGiftReceipt;\n const allowPrintedCard = state.config?.allowPrintedCard;\n const isGiftWrappingAvailableForSome = cartData?.items?.some(\n (item: { giftWrappingAvailable: boolean }) => item.giftWrappingAvailable\n );\n const allowGiftWrappingOnProduct = item?.giftWrappingAvailable;\n const isGiftReceiptVisible = isProductView ? false : !!allowGiftReceipt;\n const isPrintedCartVisible = isProductView ? false : !!allowPrintedCard;\n const isGiftWrappingVisible = isProductView\n ? !!allowGiftWrappingOnProduct && !!giftWrappingOptions.length\n : !!allowGiftWrappingOnOrder &&\n !!giftWrappingOptions.length &&\n !!isGiftWrappingAvailableForSome;\n const checkBoxesIsHidden =\n !isGiftReceiptVisible && !isPrintedCartVisible && !isGiftWrappingVisible;\n\n setAreGiftOptionsVisible({\n isGiftReceiptVisible,\n isPrintedCartVisible,\n isGiftWrappingVisible,\n isGiftOptionsVisible: !checkBoxesIsHidden,\n });\n setIsGiftMessageVisible(giftMessageAvailable);\n\n return {\n ...(item && 'uid' in item ? { itemId: item.uid } : {}),\n ...(!isProductView\n ? {\n printedCardIncluded,\n giftReceiptIncluded,\n }\n : {}),\n ...giftMessageConfig,\n giftWrappingId: selectedGiftWrappingId,\n isGiftWrappingSelected,\n giftWrappingOptions,\n };\n }, [cartData, item, isProductView]);\n\n useEffect(() => {\n if (!giftOptionsState) return;\n\n const { giftWrappingOptions, ...giftOptionsFetchData } = giftOptionsState;\n\n setGiftOptions(giftOptionsFetchData);\n\n if (giftWrappingOptions?.length) {\n setGiftWrappingConfig(giftWrappingOptions);\n }\n\n setLoading(false);\n }, [giftOptionsState]);\n\n const isGiftOptionsApplied = useMemo(() => {\n return Object.entries(giftOptions)\n .filter(([key]) => key !== 'itemId' && key !== 'giftWrappingId')\n .some(([, value]) => Boolean(value));\n }, [giftOptions]);\n\n const isGiftOptionsHidden = useMemo(() => {\n return !loading && !!state?.config && areGiftOptionsDisabled(view, item);\n }, [item, loading, view]);\n\n return {\n loading,\n giftOptions,\n showModal,\n errorsField,\n updateLoading,\n cartData,\n fieldsDisabled,\n isGiftOptionsApplied,\n giftWrappingConfig,\n setFieldsDisabled,\n handleFormMouseLeave,\n onInputChange,\n updateGiftOptions,\n setShowModal,\n handleBlur,\n isGiftMessageVisible,\n areGiftOptionsVisible,\n isGiftOptionsHidden,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { GiftOptions as GiftOptionsComponent } from '@/cart/components';\nimport { Item } from '@/cart/data/models';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { useGiftOptions } from '@/cart/hooks/useGiftOptions';\nimport {\n GiftOptionsViewProps,\n GiftOptionsDataSourcesProps,\n GiftFormDataType,\n ProductGiftOptionsConfig,\n GiftOptionsReadOnlyViewProps,\n} from '@/cart/types';\nimport { ImageNodeRenderProps, ImageProps } from '@adobe-commerce/elsie/components';\n\nexport interface GiftOptionsProps {\n item: Item | ProductGiftOptionsConfig;\n view?: GiftOptionsViewProps;\n readOnlyFormOrderView: GiftOptionsReadOnlyViewProps;\n dataSource?: GiftOptionsDataSourcesProps;\n isEditable?: boolean;\n initialLoading?: boolean;\n handleItemsLoading?: (uid: string, state: boolean) => void;\n handleItemsError?: (uid: string, message?: string) => void;\n onItemUpdate?: ({ item }: { item: Item }) => void;\n onGiftOptionsChange?: (data: GiftFormDataType) => void;\n slots?: {\n SwatchImage?: SlotProps<{ \n item: Item | ProductGiftOptionsConfig\n imageSwatchContext: ImageNodeRenderProps['imageSwatchContext']\n defaultImageProps: ImageProps\n }>;\n };\n}\n\nexport const GiftOptions: Container<GiftOptionsProps> = ({\n item,\n view = 'order',\n readOnlyFormOrderView = 'primary',\n dataSource = 'cart',\n isEditable = true,\n initialLoading = true,\n slots,\n handleItemsLoading,\n handleItemsError,\n onItemUpdate,\n onGiftOptionsChange,\n}: GiftOptionsProps) => {\n const {\n isGiftMessageVisible,\n areGiftOptionsVisible,\n loading,\n giftOptions,\n showModal,\n errorsField,\n updateLoading,\n cartData,\n isGiftOptionsApplied,\n fieldsDisabled,\n giftWrappingConfig,\n handleFormMouseLeave,\n updateGiftOptions,\n setShowModal,\n onInputChange,\n handleBlur,\n isGiftOptionsHidden,\n } = useGiftOptions({\n item,\n view,\n dataSource,\n initialLoading,\n handleItemsLoading,\n handleItemsError,\n onItemUpdate,\n onGiftOptionsChange,\n });\n\n if (isGiftOptionsHidden) {\n return null;\n }\n\n return (\n <GiftOptionsComponent\n item={item}\n view={view}\n loading={loading}\n onBlur={handleBlur}\n giftOptions={giftOptions}\n showModal={showModal}\n isEditable={isEditable}\n errorsField={errorsField}\n setShowModal={setShowModal}\n updateLoading={updateLoading}\n updateGiftOptions={updateGiftOptions}\n cartData={cartData}\n isGiftOptionsApplied={isGiftOptionsApplied}\n fieldsDisabled={fieldsDisabled}\n giftWrappingConfig={giftWrappingConfig}\n handleFormMouseLeave={handleFormMouseLeave}\n readOnlyFormOrderView={readOnlyFormOrderView}\n onInputChange={onInputChange}\n isGiftMessageVisible={isGiftMessageVisible}\n areGiftOptionsVisible={areGiftOptionsVisible}\n imageSwatchImageNode={\n slots?.SwatchImage ? ({ imageSwatchContext, ...defaultImageProps }) => (\n // No need to provide default content, as the slot will only be rendered if it's actually provided.\n <Slot \n name=\"SwatchImage\"\n slotTag='span'\n contentTag='span'\n slot={slots.SwatchImage} \n context={{ item, imageSwatchContext, defaultImageProps }} \n />\n ) : undefined\n }\n />\n );\n};\n"],"names":["SvgCheckWithCircle","props","React","SvgGift","useFocusTrap","showModal","containerRef","useRef","useEffect","container","focusableElements","firstElement","lastElement","handleKeyDown","event","GiftOptionModal","view","productName","giftWrappingConfig","imageSwatchImageNode","setShowModal","updateGiftOptions","dictionary","useText","giftWrappingItem","setGiftWrappingItem","useState","selectedGiftWrapping","item","focusElement","renderTitle","jsx","jsxs","Modal","Fragment","_a","Price","ContentGrid","wrapItem","ImageSwatch","Button","GiftLoader","Skeleton","SkeletonRow","CheckboxGroup","className","giftOptions","disabled","cartData","onInputChange","areGiftOptionsVisible","id","useId","productGiftWrappingOptions","orderGiftWrappingOptions","giftWrappingOptions","el","selectedGiftWrappingLabel","productGiftWrappingPrice","renderSelectedGiftWrappingLabel","printedCardPrice","_b","state","_c","productWrappingPrice","_d","renderPrice","price","classes","Field","Checkbox","FormFields","errorMessage","onBlur","isGiftMessageVisible","Input","TextArea","ReadOnlyFormView","readOnlyFormOrderView","recipientName","senderName","message","giftReceiptIncluded","printedCardIncluded","isGiftWrappingSelected","giftWrapCart","uid","isGiftMessageProvided","giftWrapProductSelectLabel","shouldRenderGiftOptions","productGiftOptionsConfig","noProductGiftOptionsApplied","Accordion","ChevronUp","ChevronDown","AccordionSection","Gift","element","config","renderHeader","Icon","selectedGiftOptions","CheckWithCircle","enteredGiftMessage","Card","GiftOptions","loading","isEditable","errorsField","updateLoading","fieldsDisabled","isGiftOptionsApplied","handleFormMouseLeave","renderAccordion","useCallback","defaultOpen","ProgressSpinner","DEFAULT_FORM_STATE","DEFAULT_CHECKBOXES_STATE","shouldShowGiftMessage","isProductView","allowGiftMessageOnOrderItems","areGiftOptionsDisabled","allowGiftWrappingOnOrder","allowGiftWrappingOnOrderItems","allowGiftMessageOnOrder","allowGiftReceipt","allowPrintedCard","isGiftOptionsOnProductDisabled","isGiftOptionsOnOrderDisabled","useGiftOptions","dataSource","initialLoading","handleItemsLoading","handleItemsError","onItemUpdate","onGiftOptionsChange","setLoading","setAreGiftOptionsVisible","setIsGiftMessageVisible","setUpdateLoading","setFieldsDisabled","isDataChanged","setIsDataChanged","isFormTouched","setIsFormTouched","setGiftWrappingConfig","setCartData","setErrorsField","setGiftOptions","isFormFilled","isFormEmpty","_e","_f","applyGiftOptionsToCart","updatedGiftOptions","giftWrappingId","updateProductsFromCart","error","setGiftOptionsOnCart","name","value","extraGiftOptions","prevGiftOptions","isValidGiftFormKey","key","getPrevValue","handleBlur","prevErrors","target","dataEvent","events","payload","isCartGiftWrappingAllowed","giftWrappingAvailable","isCartGiftWrappingApplied","wrap","giftOptionsState","useMemo","selectedWrap","selectedGiftWrappingId","giftMessageConfig","giftMessageAvailable","isGiftWrappingAvailableForSome","allowGiftWrappingOnProduct","isGiftReceiptVisible","isPrintedCartVisible","isGiftWrappingVisible","giftOptionsFetchData","isGiftOptionsHidden","slots","GiftOptionsComponent","imageSwatchContext","defaultImageProps","Slot"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"GiftOptions.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/CheckWithCircle.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Gift.svg","/@dropins/storefront-cart/src/hooks/useFocusTrap.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/GiftOptionModal.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/GiftLoader.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/CheckboxGroup.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/FormFields.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/ReadOnlyFormView.tsx","/@dropins/storefront-cart/src/components/GiftOptions/GiftOptions.tsx","/@dropins/storefront-cart/src/lib/giftOptionsHelper.ts","/@dropins/storefront-cart/src/hooks/useGiftOptions.tsx","/@dropins/storefront-cart/src/containers/GiftOptions/GiftOptions.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgCheckWithCircle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M6.75 12.762L10.2385 15.75L17.25 9\", stroke: \"currentColor\" }));\nexport default SvgCheckWithCircle;\n","import * as React from \"react\";\nconst SvgGift = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 23, viewBox: \"0 0 20 23\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M10 6L10 21.5M10 6H12.25C13.4926 6 14.5 4.99264 14.5 3.75C14.5 2.50736 13.4926 1.5 12.25 1.5C11.0074 1.5 10 2.50736 10 3.75M10 6V3.75M10 6H7.75C6.50736 6 5.5 4.99264 5.5 3.75C5.5 2.50736 6.50736 1.5 7.75 1.5C8.99264 1.5 10 2.50736 10 3.75M3.25 10.75H16.75C17.9926 10.75 19 9.74264 19 8.5C19 7.25736 17.9926 6.25 16.75 6.25H3.25C2.00736 6.25 1 7.25736 1 8.5C1 9.74264 2.00736 10.75 3.25 10.75ZM4.75 21.5H15.25C16.4926 21.5 17.5 20.4926 17.5 19.25V13.25C17.5 12.0074 16.4926 11 15.25 11H4.75C3.50736 11 2.5 12.0074 2.5 13.25V19.25C2.5 20.4926 3.50736 21.5 4.75 21.5Z\", stroke: \"currentColor\", strokeWidth: 1 }));\nexport default SvgGift;\n","import { useEffect, useRef } from 'preact/hooks';\n\nexport function useFocusTrap(showModal: boolean) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!showModal || !containerRef.current) return;\n\n const container = containerRef.current;\n\n const focusableElements = container.querySelectorAll<HTMLElement>(\n 'a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n if (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n } else if (!event.shiftKey && document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n\n container.addEventListener('keydown', handleKeyDown);\n\n return () => {\n container.removeEventListener('keydown', handleKeyDown);\n };\n }, [showModal]);\n\n return containerRef;\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, JSX, VNode } from 'preact';\nimport {\n Modal,\n Button,\n ImageSwatch,\n Price,\n ContentGrid,\n ImageNodeRenderProps,\n} from '@adobe-commerce/elsie/components';\nimport { useState, useEffect } from 'preact/hooks';\nimport { GiftWrappingConfigProps, GiftOptionsViewProps } from '@/cart/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { useFocusTrap } from '@/cart/hooks/useFocusTrap';\n\ninterface GiftOptionModalProps {\n giftWrappingConfig: GiftWrappingConfigProps[];\n showModal: boolean;\n productName: string;\n view: GiftOptionsViewProps;\n imageSwatchImageNode?: VNode | ((props: ImageNodeRenderProps) => JSX.Element);\n setShowModal: () => void;\n updateGiftOptions: (\n name: string,\n value?: string | boolean | number,\n extraGiftOptions?: Record<string, string | boolean | number>\n ) => void;\n}\n\nexport const GiftOptionModal: FunctionComponent<GiftOptionModalProps> = ({\n view,\n showModal,\n productName,\n giftWrappingConfig,\n imageSwatchImageNode,\n setShowModal,\n updateGiftOptions,\n}) => {\n const containerRef = useFocusTrap(showModal);\n\n const dictionary = useText({\n modalTitle: 'Cart.GiftOptions.modal.title',\n defaultTitle: 'Cart.GiftOptions.modal.defaultTitle',\n modalWrappingText: 'Cart.GiftOptions.modal.wrappingText',\n modalWrappingSubText: 'Cart.GiftOptions.modal.wrappingSubText',\n modalConfirmButton: 'Cart.GiftOptions.modal.modalConfirmButton',\n modalCancelButton: 'Cart.GiftOptions.modal.modalCancelButton',\n ariaLabelModal: 'Cart.GiftOptions.modal.ariaLabelModal',\n ariaLabelModalOpen: 'Cart.GiftOptions.modal.ariaLabelModalOpen',\n ariaLabelModalClose: 'Cart.GiftOptions.modal.ariaLabelModalClose',\n ariaLabelWrapping: 'Cart.GiftOptions.modal.ariaLabelWrapping',\n });\n\n const [giftWrappingItem, setGiftWrappingItem] =\n useState<GiftWrappingConfigProps>();\n\n useEffect(() => {\n const selectedGiftWrapping =\n giftWrappingConfig.find((item) => item.selected) ?? giftWrappingConfig[0];\n\n setGiftWrappingItem(selectedGiftWrapping);\n }, [giftWrappingConfig]);\n\n useEffect(() => {\n const focusElement = document?.querySelector(\n '.cart-gift-options-view__modal-wrapper'\n ) as HTMLElement;\n\n if (focusElement) focusElement?.focus();\n }, []);\n\n if (!showModal || !giftWrappingConfig.length) return null;\n\n const renderTitle = productName\n ? `${dictionary.modalTitle} ${productName}`\n : dictionary.defaultTitle;\n\n return (\n <div\n ref={containerRef}\n className=\"cart-gift-options-view__modal-wrapper\"\n tabIndex={0}\n aria-label={`${dictionary.ariaLabelModal} ${\n showModal\n ? dictionary.ariaLabelModalOpen\n : dictionary.ariaLabelModalClose\n } ${productName}`}\n >\n <Modal\n data-testid={`gift-option-modal-${view}`}\n className={'cart-gift-options-view__modal'}\n size={'medium'}\n title={\n <>\n <span>{renderTitle}</span>\n {giftWrappingItem && giftWrappingItem?.price?.value > 0 ? (\n <Price\n amount={giftWrappingItem.price.value}\n currency={giftWrappingItem.price.currency}\n weight=\"normal\"\n />\n ) : null}\n </>\n }\n centered={true}\n onClose={setShowModal}\n >\n <div className=\"cart-gift-options-view__modal-content\">\n <span className=\"cart-gift-options-view__modal-text\">\n {dictionary.modalWrappingText}\n </span>\n <ContentGrid\n emptyGridContent={<></>}\n maxColumns={6}\n columnWidth=\"100px\"\n className=\"cart-gift-options-view__modal-grid\"\n >\n {giftWrappingConfig.map((wrapItem) => (\n <ImageSwatch\n groupAriaLabel={dictionary.ariaLabelWrapping}\n selected={giftWrappingItem?.uid === wrapItem?.uid}\n onValue={() => {\n setGiftWrappingItem(wrapItem);\n }}\n imageNode={imageSwatchImageNode}\n name={'giftWrappingId'}\n value={wrapItem.uid}\n src={wrapItem.image.url}\n alt={wrapItem.design}\n label={wrapItem.design}\n key={wrapItem.uid}\n data-testid={`gift-option-modal-image-${wrapItem.uid}`}\n className={'cart-gift-options-view__modal-grid-item'}\n />\n ))}\n </ContentGrid>\n <span className=\"cart-gift-options-view__modal-sub-text\">\n {giftWrappingItem?.design}\n </span>\n </div>\n\n <Button\n data-testid=\"gift-option-modal-confirm-button\"\n type=\"button\"\n onClick={() => {\n updateGiftOptions('giftWrappingId', giftWrappingItem?.uid, {\n isGiftWrappingSelected: true,\n });\n setShowModal();\n }}\n >\n {dictionary.modalConfirmButton}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={setShowModal}\n data-testid=\"gift-option-modal-cancel-button\"\n >\n {dictionary.modalCancelButton}\n </Button>\n </Modal>\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const GiftLoader: FunctionComponent = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"row\"\n size=\"small\"\n fullWidth={true}\n lines={1}\n multilineGap=\"small\"\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Checkbox, Field, Button, Price } from '@adobe-commerce/elsie/components';\nimport {\n GiftOptionsViewProps,\n GiftWrappingConfigProps,\n GiftFormDataType,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\nimport { CartModel, Item, Price as PriceType } from '@/cart/data/models';\nimport { state } from '@/cart/lib/state';\nimport { StateUpdater, Dispatch, useId } from 'preact/hooks';\n\ninterface CheckboxGroupProps {\n className: string;\n view: GiftOptionsViewProps;\n item: Item | ProductGiftOptionsConfig;\n giftOptions: GiftFormDataType;\n disabled: boolean;\n cartData: CartModel | null;\n giftWrappingConfig: GiftWrappingConfigProps[] | [];\n areGiftOptionsVisible: Record<string, boolean>;\n setShowModal: Dispatch<StateUpdater<boolean>>;\n onInputChange: (event: Event) => void;\n}\n\nexport const CheckboxGroup: FunctionComponent<CheckboxGroupProps> = ({\n className,\n view,\n item,\n giftOptions,\n disabled,\n cartData,\n giftWrappingConfig,\n setShowModal,\n onInputChange,\n areGiftOptionsVisible,\n}) => {\n const id = useId();\n const dictionary = useText({\n customize: `Cart.GiftOptions.${view}.customize`,\n giftReceiptIncludedTitle: `Cart.GiftOptions.${view}.giftReceiptIncluded.title`,\n giftReceiptIncludedText: `Cart.GiftOptions.${view}.giftReceiptIncluded.subtitle`,\n printedCardIncludedTitle: `Cart.GiftOptions.${view}.printedCardIncluded.title`,\n printedCardIncludedText: `Cart.GiftOptions.${view}.printedCardIncluded.subtitle`,\n giftOptionsWrapTitle: `Cart.GiftOptions.${view}.giftOptionsWrap.title`,\n giftOptionsWrapText: `Cart.GiftOptions.${view}.giftOptionsWrap.subtitle`,\n requiredFieldError: 'Cart.GiftOptions.formText.requiredFieldError',\n });\n\n const productGiftWrappingOptions = item?.productGiftWrapping;\n const orderGiftWrappingOptions = cartData?.cartGiftWrapping;\n const giftWrappingOptions =\n view === 'product' ? productGiftWrappingOptions : orderGiftWrappingOptions;\n\n const selectedGiftWrapping = giftWrappingOptions?.find(\n (el: GiftWrappingConfigProps) => el.uid === giftOptions.giftWrappingId\n );\n const selectedGiftWrappingLabel = selectedGiftWrapping?.design ?? '';\n\n // Product level configurations\n const productGiftWrappingPrice = item?.giftWrappingPrice;\n const renderSelectedGiftWrappingLabel = selectedGiftWrappingLabel\n ? `${dictionary.giftOptionsWrapText} ${selectedGiftWrappingLabel}`\n : '';\n\n const printedCardPrice =\n +(state.config?.printedCardPrice?.value ?? 0) > 0\n ? state.config?.printedCardPrice\n : null;\n\n let productWrappingPrice = null;\n\n // Product level configurations have higher priority\n if (productGiftWrappingPrice?.value) {\n productWrappingPrice = productGiftWrappingPrice;\n } else if (selectedGiftWrapping?.price?.value) {\n productWrappingPrice = selectedGiftWrapping.price;\n }\n\n const renderPrice = (price?: PriceType | null) => {\n if (!price) return null;\n\n return (\n <span>\n (+\n <Price amount={price.value} currency={price.currency} weight=\"normal\" />\n )\n </span>\n );\n };\n\n return (\n <div\n className={classes([\n className,\n [`${className}--hidden`, !areGiftOptionsVisible.isGiftOptionsVisible],\n ])}\n >\n {areGiftOptionsVisible.isGiftReceiptVisible ? (\n <Field\n disabled={disabled}\n className={'cart-gift-options-view__field-gift-receipt'}\n >\n <Checkbox\n id={`giftReceiptIncluded-${id}`}\n disabled={disabled}\n name={'giftReceiptIncluded'}\n checked={giftOptions.giftReceiptIncluded}\n placeholder={dictionary.giftReceiptIncludedTitle}\n label={dictionary.giftReceiptIncludedTitle}\n description={dictionary.giftReceiptIncludedText}\n onChange={onInputChange}\n />\n </Field>\n ) : null}\n {areGiftOptionsVisible.isPrintedCartVisible ? (\n <Field\n disabled={disabled}\n className={'cart-gift-options-view__field-printed-card'}\n >\n <Checkbox\n id={`printedCardIncluded-${id}`}\n disabled={disabled}\n name={'printedCardIncluded'}\n checked={giftOptions.printedCardIncluded}\n placeholder={dictionary.printedCardIncludedTitle}\n label={\n <>\n {dictionary.printedCardIncludedTitle}\n {renderPrice(printedCardPrice)}\n </>\n }\n description={dictionary.printedCardIncludedText}\n onChange={onInputChange}\n />\n </Field>\n ) : null}\n {areGiftOptionsVisible.isGiftWrappingVisible ? (\n <>\n <Field\n disabled={disabled}\n className={'cart-gift-options-view__field-gift-wrap'}\n >\n <Checkbox\n id={`giftOptionsWrap-${id}`}\n disabled={disabled}\n name={'isGiftWrappingSelected'}\n checked={giftOptions.isGiftWrappingSelected}\n placeholder={dictionary.giftOptionsWrapTitle}\n label={\n <>\n {dictionary.giftOptionsWrapTitle}\n {renderPrice(productWrappingPrice)}\n </>\n }\n description={renderSelectedGiftWrappingLabel}\n onChange={onInputChange}\n />\n </Field>\n\n <Button\n disabled={disabled || !giftWrappingConfig.length}\n type=\"button\"\n data-testid={`gift-option-customize-${view}`}\n variant=\"tertiary\"\n onClick={() => setShowModal(true)}\n >\n {dictionary.customize}\n </Button>\n </>\n ) : null}\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Field, Input, TextArea } from '@adobe-commerce/elsie/components';\nimport { GiftOptionsViewProps, GiftFormDataType } from '@/cart/types';\nimport { useId } from 'preact/hooks';\n\ninterface FormFieldsProps {\n view: GiftOptionsViewProps;\n giftOptions: GiftFormDataType;\n disabled: boolean;\n errorMessage: Record<string, string>;\n onInputChange: (value: Event) => void;\n onBlur: (event: Event) => void;\n isGiftMessageVisible: boolean;\n}\n\nexport const FormFields: FunctionComponent<FormFieldsProps> = ({\n view,\n giftOptions,\n disabled,\n errorMessage,\n onInputChange,\n onBlur,\n isGiftMessageVisible,\n}) => {\n const id = useId();\n const dictionary = useText({\n formTitle: `Cart.GiftOptions.${view}.formContent.formTitle`,\n formTo: `Cart.GiftOptions.${view}.formContent.formTo`,\n formFrom: `Cart.GiftOptions.${view}.formContent.formFrom`,\n giftMessageTitle: `Cart.GiftOptions.${view}.formContent.giftMessageTitle`,\n formToPlaceholder: `Cart.GiftOptions.${view}.formContent.formToPlaceholder`,\n formFromPlaceholder: `Cart.GiftOptions.${view}.formContent.formFromPlaceholder`,\n formMessagePlaceholder: `Cart.GiftOptions.${view}.formContent.formMessagePlaceholder`,\n });\n\n if (!isGiftMessageVisible) return null;\n\n return (\n <>\n <span>{dictionary.formTitle}</span>\n <div>\n <span>{dictionary.formTo}</span>\n <Field disabled={disabled} error={errorMessage.recipientName}>\n <Input\n id={`recipientName-${id}`}\n disabled={disabled}\n type=\"text\"\n name={'recipientName'}\n value={giftOptions.recipientName}\n placeholder={dictionary.formToPlaceholder}\n onChange={onInputChange}\n onBlur={onBlur}\n />\n </Field>\n </div>\n <div>\n <span>{dictionary.formFrom}</span>\n <Field disabled={disabled} error={errorMessage.senderName}>\n <Input\n id={`senderName-${id}`}\n disabled={disabled}\n type=\"text\"\n name={'senderName'}\n value={giftOptions.senderName}\n placeholder={dictionary.formFromPlaceholder}\n onChange={onInputChange}\n onBlur={onBlur}\n />\n </Field>\n </div>\n <div>\n <span>{dictionary.giftMessageTitle}</span>\n <Field disabled={disabled}>\n <TextArea\n id={`message-${id}`}\n errorMessage={errorMessage.message}\n disabled={disabled}\n name={'message'}\n value={giftOptions.message}\n label={dictionary.formMessagePlaceholder}\n onChange={onInputChange}\n onBlur={onBlur}\n />\n </Field>\n </div>\n </>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport {\n Price,\n Icon,\n Card,\n Accordion,\n AccordionSection,\n} from '@adobe-commerce/elsie/components';\nimport {\n ChevronDown,\n ChevronUp,\n Gift,\n CheckWithCircle,\n} from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n GiftFormDataType,\n GiftWrappingConfigProps,\n GiftOptionsReadOnlyViewProps,\n GiftOptionsViewProps,\n} from '@/cart/types';\n\nexport interface ReadOnlyFormViewProps {\n view: GiftOptionsViewProps;\n giftOptions: GiftFormDataType;\n readOnlyFormOrderView: GiftOptionsReadOnlyViewProps;\n giftWrappingConfig: GiftWrappingConfigProps[] | [];\n}\n\nexport const ReadOnlyFormView: FunctionComponent<ReadOnlyFormViewProps> = ({\n view,\n giftOptions,\n giftWrappingConfig,\n readOnlyFormOrderView,\n}) => {\n const dictionary = useText({\n readOnlyProductTitle: 'Cart.GiftOptions.product.readOnlyFormView.title',\n wrapping: 'Cart.GiftOptions.product.readOnlyFormView.wrapping',\n recipient: 'Cart.GiftOptions.product.readOnlyFormView.recipient',\n sender: 'Cart.GiftOptions.product.readOnlyFormView.sender',\n message: 'Cart.GiftOptions.product.readOnlyFormView.message',\n\n readOnlyOrderTitle: 'Cart.GiftOptions.order.readOnlyFormView.title',\n readOnlyOrderGiftReceiptTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.giftReceipt',\n readOnlyOrderGiftReceiptText:\n 'Cart.GiftOptions.order.readOnlyFormView.giftReceiptText',\n readOnlyOrderGiftPrintCardTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.printCard',\n readOnlyOrderGiftPrintCardText:\n 'Cart.GiftOptions.order.readOnlyFormView.printCardText',\n readOnlyOrderGiftWrapTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.giftWrap',\n readOnlyOrderGiftWrapOptionsText:\n 'Cart.GiftOptions.order.readOnlyFormView.giftWrapOptions',\n\n readOnlyOrderFormTitle: 'Cart.GiftOptions.order.readOnlyFormView.formTitle',\n readOnlyOrderFormTo: 'Cart.GiftOptions.order.readOnlyFormView.formTo',\n readOnlyOrderFormFrom: 'Cart.GiftOptions.order.readOnlyFormView.formFrom',\n readOnlyOrderFormMessageTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.formMessageTitle',\n });\n\n const {\n recipientName,\n senderName,\n message,\n giftReceiptIncluded,\n printedCardIncluded,\n isGiftWrappingSelected,\n } = giftOptions;\n\n const giftWrapCart = giftWrappingConfig?.find(\n ({ uid }) => uid === giftOptions?.giftWrappingId\n );\n const isGiftMessageProvided = !!recipientName || !!senderName || !!message;\n const giftWrapProductSelectLabel = giftWrapCart?.design;\n const shouldRenderGiftOptions =\n giftReceiptIncluded || printedCardIncluded || giftWrapCart?.selected;\n\n const productGiftOptionsConfig = [\n {\n id: 1,\n title: dictionary.wrapping,\n message: isGiftWrappingSelected ? giftWrapProductSelectLabel : '',\n },\n {\n id: 2,\n title: dictionary.recipient,\n message: recipientName,\n },\n {\n id: 3,\n title: dictionary.sender,\n message: senderName,\n },\n {\n id: 4,\n title: dictionary.message,\n message,\n },\n ];\n\n const noProductGiftOptionsApplied = productGiftOptionsConfig.every(\n ({ message }) => !message\n );\n\n if (view === 'product' && !noProductGiftOptionsApplied) {\n return (\n <Accordion\n data-testid=\"gift-options-product\"\n iconClose={ChevronUp}\n iconOpen={ChevronDown}\n actionIconPosition=\"right\"\n >\n <AccordionSection\n title={dictionary.readOnlyProductTitle}\n showIconLeft={true}\n iconLeft={Gift}\n defaultOpen={false}\n renderContentWhenClosed={false}\n >\n <div>\n {productGiftOptionsConfig\n .filter((element) => element.message)\n .map((config) => {\n return (\n <p key={config.id}>\n {config.title} {config.message}\n </p>\n );\n })}\n </div>\n </AccordionSection>\n </Accordion>\n );\n }\n\n if (view === 'order' && (isGiftMessageProvided || shouldRenderGiftOptions)) {\n const renderHeader = (\n <div className=\"cart-gift-options-readonly__header\">\n <Icon source={Gift} size=\"24\" />\n <span>{dictionary.readOnlyOrderTitle}</span>\n </div>\n );\n\n const selectedGiftOptions = (\n <>\n {giftReceiptIncluded ? (\n <div className=\"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-receipt\">\n <Icon source={CheckWithCircle} size=\"16\" />\n <p>{dictionary.readOnlyOrderGiftReceiptTitle}</p>\n <p>{dictionary.readOnlyOrderGiftReceiptText}</p>\n </div>\n ) : null}\n {printedCardIncluded ? (\n <div className=\"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--print-card\">\n <Icon source={CheckWithCircle} size=\"16\" />\n <p>{dictionary.readOnlyOrderGiftPrintCardTitle}</p>\n <p>{dictionary.readOnlyOrderGiftPrintCardText}</p>\n </div>\n ) : null}\n {giftWrapCart?.selected ? (\n <div className=\"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-wrap\">\n <Icon source={CheckWithCircle} size=\"16\" />\n <p>\n {dictionary.readOnlyOrderGiftWrapTitle} (+\n <Price\n amount={giftWrapCart.price.value}\n currency={giftWrapCart.price.currency}\n weight=\"normal\"\n />\n )\n </p>\n <p>{`${dictionary.readOnlyOrderGiftWrapOptionsText} ${giftWrapCart?.design}`}</p>\n </div>\n ) : null}\n </>\n );\n\n const enteredGiftMessage = isGiftMessageProvided ? (\n <div className=\"cart-gift-options-readonly__form\">\n <div>{dictionary.readOnlyOrderFormTitle}</div>\n <div>\n <p>\n <span>{dictionary.readOnlyOrderFormTo}</span>\n <span>{recipientName}</span>\n </p>\n <p>\n <span>{dictionary.readOnlyOrderFormFrom}</span>\n <span>{senderName}</span>\n </p>\n </div>\n <div>\n <p>{dictionary.readOnlyOrderFormMessageTitle}</p>\n <p>{message}</p>\n </div>\n </div>\n ) : null;\n\n return (\n <Card variant={readOnlyFormOrderView}>\n {renderHeader}\n {selectedGiftOptions}\n {enteredGiftMessage}\n </Card>\n );\n }\n\n return null;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useCallback, StateUpdater, Dispatch } from 'preact/hooks';\nimport { FunctionComponent, JSX, VNode } from 'preact';\nimport { GiftOptionModal } from './Elements/GiftOptionModal';\nimport { GiftLoader } from './Elements/GiftLoader';\nimport { CheckboxGroup } from './Elements/CheckboxGroup';\nimport { FormFields } from './Elements/FormFields';\nimport { ReadOnlyFormView } from './Elements/ReadOnlyFormView';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport {\n Accordion,\n AccordionSection,\n Card,\n Icon,\n ImageNodeRenderProps,\n ProgressSpinner,\n} from '@adobe-commerce/elsie/components';\nimport {\n ChevronDown,\n ChevronUp,\n CheckWithCircle,\n Gift,\n} from '@adobe-commerce/elsie/icons';\nimport {\n GiftWrappingConfigProps,\n GiftOptionsViewProps,\n GiftFormDataType,\n GiftOptionsReadOnlyViewProps,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { CartModel, Item } from '@/cart/data/models';\nimport '@/cart/components/GiftOptions/GiftOptions.css';\n\nexport interface GiftOptionsProps {\n readOnlyFormOrderView: GiftOptionsReadOnlyViewProps;\n cartData: CartModel | null;\n errorsField: Record<string, string>;\n isGiftMessageVisible: boolean;\n fieldsDisabled: boolean;\n loading: boolean;\n showModal: boolean;\n isEditable: boolean;\n isGiftOptionsApplied: boolean;\n updateLoading: boolean;\n areGiftOptionsVisible: Record<string, boolean>;\n view: GiftOptionsViewProps;\n giftOptions: GiftFormDataType;\n imageSwatchImageNode?: VNode | ((props: ImageNodeRenderProps) => JSX.Element);\n item: Item | ProductGiftOptionsConfig;\n giftWrappingConfig: GiftWrappingConfigProps[] | [];\n updateGiftOptions: (\n name: string,\n value?: string | boolean | number,\n extraGiftOptions?: Record<string, string | boolean | number>\n ) => void;\n setShowModal: Dispatch<StateUpdater<boolean>>;\n handleFormMouseLeave: () => void;\n onInputChange: (event: Event) => void;\n onBlur: (event: Event) => void;\n}\n\nexport const GiftOptions: FunctionComponent<GiftOptionsProps> = ({\n item,\n view,\n loading,\n giftOptions,\n showModal,\n isEditable,\n errorsField,\n updateLoading,\n cartData,\n fieldsDisabled,\n isGiftOptionsApplied,\n giftWrappingConfig,\n readOnlyFormOrderView,\n isGiftMessageVisible,\n areGiftOptionsVisible,\n imageSwatchImageNode,\n onBlur,\n setShowModal,\n updateGiftOptions,\n onInputChange,\n handleFormMouseLeave,\n}) => {\n const dictionary = useText({\n accordionHeading: `Cart.GiftOptions.${view}.accordionHeading`,\n });\n\n const renderAccordion = useCallback(\n (defaultOpen: boolean) => {\n return (\n <Accordion\n data-testid=\"gift-options-product\"\n iconClose={ChevronUp}\n iconOpen={ChevronDown}\n actionIconPosition=\"right\"\n >\n <AccordionSection\n title={\n <div className=\"cart-gift-options-view__icon--success\">\n <span>{dictionary.accordionHeading}</span>\n {isGiftOptionsApplied ? (\n <Icon source={CheckWithCircle} size=\"16\" />\n ) : null}\n </div>\n }\n ariaLabelTitle={dictionary.accordionHeading}\n showIconLeft={true}\n iconLeft={Gift}\n defaultOpen={isGiftOptionsApplied || defaultOpen}\n renderContentWhenClosed={false}\n >\n <>\n <CheckboxGroup\n className={'cart-gift-options-view__top'}\n view={view}\n item={item}\n giftOptions={giftOptions}\n disabled={fieldsDisabled}\n onInputChange={onInputChange}\n cartData={cartData}\n giftWrappingConfig={giftWrappingConfig}\n setShowModal={setShowModal}\n areGiftOptionsVisible={areGiftOptionsVisible}\n />\n <form\n className=\"cart-gift-options-view__footer\"\n onMouseLeave={handleFormMouseLeave}\n >\n <FormFields\n view={view}\n giftOptions={giftOptions}\n disabled={fieldsDisabled}\n errorMessage={errorsField}\n onInputChange={onInputChange}\n onBlur={onBlur}\n isGiftMessageVisible={isGiftMessageVisible}\n />\n </form>\n </>\n </AccordionSection>\n </Accordion>\n );\n },\n [\n view,\n item,\n cartData,\n dictionary,\n errorsField,\n giftOptions,\n fieldsDisabled,\n giftWrappingConfig,\n areGiftOptionsVisible,\n isGiftOptionsApplied,\n isGiftMessageVisible,\n onBlur,\n setShowModal,\n onInputChange,\n handleFormMouseLeave,\n ]\n );\n\n if (!areGiftOptionsVisible.isGiftOptionsVisible && !isGiftMessageVisible) {\n return null;\n }\n\n return (\n <div\n id=\"cart-gift-options-view\"\n className={classes([\n 'cart-gift-options-view',\n `cart-gift-options-view--${view}`,\n ['cart-gift-options-view--loading', updateLoading],\n ])}\n >\n {updateLoading ? (\n <ProgressSpinner className=\"cart-gift-options-view__spinner\" />\n ) : null}\n {!loading ? (\n <>\n {!isEditable ? (\n <div className={'cart-gift-options-view--readonly'}>\n <ReadOnlyFormView\n view={view}\n giftOptions={giftOptions}\n giftWrappingConfig={giftWrappingConfig}\n readOnlyFormOrderView={readOnlyFormOrderView}\n />\n </div>\n ) : null}\n {showModal ? (\n <GiftOptionModal\n view={view}\n productName={item && 'name' in item ? item?.name : ''}\n showModal={showModal}\n giftWrappingConfig={giftWrappingConfig}\n setShowModal={() => setShowModal(false)}\n updateGiftOptions={updateGiftOptions}\n imageSwatchImageNode={imageSwatchImageNode}\n />\n ) : null}\n {view === 'product' && isEditable ? renderAccordion(false) : null}\n {view === 'order' && isEditable ? (\n <Card variant={'secondary'}>{renderAccordion(true)}</Card>\n ) : null}\n </>\n ) : (\n <GiftLoader />\n )}\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CartModel, Item } from '@/cart/data/models';\nimport { state } from '@/cart/lib/state';\nimport {\n GiftWrappingConfigProps,\n GiftOptionsViewProps,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\n\n// This helper is specifically designed for small functions needed in useGiftOptions for formSections configuration manipulation.\nexport const DEFAULT_FORM_STATE = {\n recipientName: '',\n senderName: '',\n message: '',\n};\n\nexport const DEFAULT_CHECKBOXES_STATE = {\n giftReceiptIncluded: false,\n printedCardIncluded: false,\n isGiftWrappingSelected: false,\n};\n\nexport const shouldShowGiftMessage = (\n item: CartModel['items'][0] | ProductGiftOptionsConfig,\n isProductView: boolean\n) => {\n if (!isProductView) return !!state.config?.allowGiftMessageOnOrder;\n\n const allowGiftMessageOnOrderItems =\n state.config?.allowGiftMessageOnOrderItems ?? false;\n\n return typeof item?.giftMessageAvailable === 'boolean'\n ? item?.giftMessageAvailable\n : allowGiftMessageOnOrderItems;\n};\n\nexport const getSelectedGiftWrapping = (\n giftWrappingOptions: GiftWrappingConfigProps[] | []\n): GiftWrappingConfigProps | undefined => {\n const fallbackGiftWrappingData = {\n uid: '',\n design: '',\n selected: false,\n image: {\n url: '',\n design: '',\n },\n price: {\n currency: 'USD',\n value: 0,\n },\n };\n\n if (!giftWrappingOptions || giftWrappingOptions.length === 0) {\n return fallbackGiftWrappingData;\n }\n\n const isNotSelected = giftWrappingOptions?.every((wrap) => !wrap.selected);\n\n if (isNotSelected) {\n return giftWrappingOptions[0];\n }\n\n return giftWrappingOptions.find((wrap) => wrap.selected);\n};\n\nexport const areGiftOptionsDisabled = (\n view: GiftOptionsViewProps,\n item: Item | ProductGiftOptionsConfig\n) => {\n const {\n allowGiftWrappingOnOrder,\n allowGiftWrappingOnOrderItems,\n allowGiftMessageOnOrder,\n allowGiftMessageOnOrderItems,\n allowGiftReceipt,\n allowPrintedCard,\n } = state.config || {};\n\n const isGiftOptionsOnProductDisabled =\n !allowGiftMessageOnOrderItems &&\n !allowGiftWrappingOnOrderItems &&\n !shouldShowGiftMessage(item, true);\n\n const isGiftOptionsOnOrderDisabled =\n !allowGiftWrappingOnOrder &&\n !allowGiftMessageOnOrder &&\n !allowGiftReceipt &&\n !allowPrintedCard;\n\n if (view === 'product' && isGiftOptionsOnProductDisabled) {\n return true;\n }\n\n if (view === 'order' && isGiftOptionsOnOrderDisabled) {\n return true;\n }\n\n return false;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useCallback, useEffect, useState, useMemo } from 'preact/hooks';\nimport { events } from '@adobe-commerce/event-bus';\nimport { CartModel, Item } from '@/cart/data/models';\nimport { setGiftOptionsOnCart, updateProductsFromCart } from '@/cart/api';\nimport {\n DEFAULT_FORM_STATE,\n DEFAULT_CHECKBOXES_STATE,\n shouldShowGiftMessage,\n areGiftOptionsDisabled,\n} from '@/cart/lib/giftOptionsHelper';\nimport {\n GiftOptionsDataSourcesProps,\n GiftOptionsViewProps,\n GiftWrappingConfigProps,\n GiftFormDataType,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { state } from '@/cart/lib/state';\n\nexport interface UseGiftOptionsProps {\n item: Item | ProductGiftOptionsConfig;\n view: GiftOptionsViewProps;\n dataSource: GiftOptionsDataSourcesProps;\n initialLoading: boolean;\n handleItemsLoading?: (uid: string, state: boolean) => void;\n handleItemsError?: (uid: string, message?: string) => void;\n onItemUpdate?: ({ item }: { item: Item }) => void;\n onGiftOptionsChange?: (data: GiftFormDataType) => void;\n}\n\nexport const useGiftOptions = ({\n item,\n view,\n dataSource,\n initialLoading,\n handleItemsLoading,\n handleItemsError,\n onItemUpdate,\n onGiftOptionsChange,\n}: UseGiftOptionsProps) => {\n const isProductView = view === 'product';\n\n const dictionary = useText({\n requiredFieldError: 'Cart.GiftOptions.formText.requiredFieldError',\n });\n\n const [loading, setLoading] = useState(() => initialLoading);\n const [areGiftOptionsVisible, setAreGiftOptionsVisible] = useState({\n isGiftReceiptVisible: true,\n isPrintedCartVisible: true,\n isGiftWrappingVisible: true,\n isGiftOptionsVisible: true,\n });\n const [isGiftMessageVisible, setIsGiftMessageVisible] = useState(true);\n const [updateLoading, setUpdateLoading] = useState(false);\n const [fieldsDisabled, setFieldsDisabled] = useState(false);\n const [isDataChanged, setIsDataChanged] = useState(false);\n const [isFormTouched, setIsFormTouched] = useState(false);\n const [showModal, setShowModal] = useState<boolean>(false);\n const [giftWrappingConfig, setGiftWrappingConfig] = useState<\n GiftWrappingConfigProps[] | []\n >([]);\n const [cartData, setCartData] = useState<CartModel | null>(null);\n const [errorsField, setErrorsField] =\n useState<typeof DEFAULT_FORM_STATE>(DEFAULT_FORM_STATE);\n const [giftOptions, setGiftOptions] = useState<GiftFormDataType>(() => ({\n giftWrappingId: '',\n ...DEFAULT_FORM_STATE,\n ...DEFAULT_CHECKBOXES_STATE,\n }));\n\n const isFormFilled =\n giftOptions.recipientName?.trim() &&\n giftOptions.senderName?.trim() &&\n giftOptions.message?.trim();\n\n const isFormEmpty =\n !giftOptions.recipientName?.trim() &&\n !giftOptions.senderName?.trim() &&\n !giftOptions.message?.trim();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const applyGiftOptionsToCart = useCallback(\n async (updatedGiftOptions: GiftFormDataType) => {\n // Update loading state used to render loading indicator required only in order view\n setUpdateLoading(view === 'order');\n setFieldsDisabled(true);\n\n switch (view) {\n case 'product':\n {\n if ('uid' in item) {\n handleItemsLoading?.(item.uid, true);\n handleItemsError?.(item.uid);\n }\n\n const {\n recipientName,\n senderName,\n message,\n giftWrappingId,\n isGiftWrappingSelected,\n } = updatedGiftOptions;\n\n const giftOptions = {\n gift_message: {\n to: recipientName ?? '',\n from: senderName ?? '',\n message: message ?? '',\n },\n gift_wrapping_id: isGiftWrappingSelected ? giftWrappingId : null,\n };\n\n if ('uid' in item && 'quantity' in item) {\n await updateProductsFromCart([\n {\n uid: item.uid,\n quantity: item.quantity,\n giftOptions,\n },\n ])\n .then(() => {\n onItemUpdate?.({ item });\n })\n .finally(() => {\n handleItemsLoading?.(item.uid, false);\n setFieldsDisabled(false);\n setIsDataChanged(false);\n setUpdateLoading(false);\n })\n .catch((error: any) => {\n console.warn(error);\n });\n }\n }\n break;\n case 'order':\n await setGiftOptionsOnCart(updatedGiftOptions).finally(() => {\n setFieldsDisabled(false);\n setIsDataChanged(false);\n setUpdateLoading(false);\n });\n break;\n default:\n console.error(\n 'Incorrect \"view\" prop value provided for GiftOptions container (storefront-cart)'\n );\n break;\n }\n },\n [handleItemsError, handleItemsLoading, item, onItemUpdate, view]\n );\n\n const updateGiftOptions = useCallback(\n (\n name: string,\n value: string | boolean | number | undefined,\n extraGiftOptions: Record<string, string | boolean | number> = {}\n ) => {\n setGiftOptions((prevGiftOptions: GiftFormDataType) => {\n const isValidGiftFormKey = (\n key: string\n ): key is keyof GiftFormDataType => key in prevGiftOptions;\n\n const getPrevValue = (key: string) =>\n isValidGiftFormKey(key) ? prevGiftOptions[key] : undefined;\n\n const hasChanged =\n getPrevValue(name) !== value ||\n Object.keys(extraGiftOptions).some(\n (key) => getPrevValue(key) !== extraGiftOptions[key]\n );\n\n if (!hasChanged) {\n onGiftOptionsChange?.(prevGiftOptions);\n return prevGiftOptions;\n }\n\n const updatedGiftOptions = {\n ...prevGiftOptions,\n [name]: value,\n ...extraGiftOptions,\n };\n\n if (\n !updatedGiftOptions.recipientName &&\n !updatedGiftOptions.senderName &&\n !updatedGiftOptions.message\n ) {\n setIsFormTouched(true);\n }\n\n if (\n typeof value === 'boolean' ||\n [\n 'giftWrappingId',\n 'giftReceiptIncluded',\n 'printedCardIncluded',\n ].includes(name)\n ) {\n setIsFormTouched(false);\n typeof onGiftOptionsChange === 'function'\n ? onGiftOptionsChange(updatedGiftOptions)\n : applyGiftOptionsToCart(updatedGiftOptions);\n }\n\n setIsDataChanged(true);\n\n onGiftOptionsChange?.(updatedGiftOptions);\n return updatedGiftOptions;\n });\n },\n [applyGiftOptionsToCart, onGiftOptionsChange]\n );\n\n const handleFormMouseLeave = useCallback(\n async () => {\n // Fields disabled if other event handler already triggered\n if (fieldsDisabled) return;\n if (typeof onGiftOptionsChange === 'function') return;\n\n // Case when user removed all form fields - reset to initial state\n if (isFormEmpty && isFormTouched) {\n setErrorsField(DEFAULT_FORM_STATE);\n setIsFormTouched(false);\n await applyGiftOptionsToCart(giftOptions);\n }\n\n // Case when user edited one of form fields\n if (isDataChanged && isFormFilled) {\n setIsFormTouched(true);\n await applyGiftOptionsToCart(giftOptions);\n }\n },\n [\n applyGiftOptionsToCart,\n giftOptions,\n isDataChanged,\n isFormEmpty,\n isFormTouched,\n fieldsDisabled,\n onGiftOptionsChange,\n isFormFilled\n ]\n );\n\n const handleBlur = useCallback(\n async (event: Event) => {\n // Fields disabled if other event handler already triggered\n if (fieldsDisabled) return;\n if (typeof onGiftOptionsChange === 'function') return;\n\n const { name, value } = event.target as HTMLInputElement;\n\n setErrorsField((prevErrors: typeof DEFAULT_FORM_STATE) => ({\n ...prevErrors,\n [name]: value.trim() ? '' : dictionary.requiredFieldError,\n }));\n\n // Case when user removed all form fields - reset to initial state\n if (isFormEmpty && isFormTouched) {\n setErrorsField(DEFAULT_FORM_STATE);\n setIsFormTouched(false);\n await applyGiftOptionsToCart(giftOptions);\n }\n\n if (isDataChanged && isFormFilled) {\n await applyGiftOptionsToCart(giftOptions);\n }\n },\n [\n fieldsDisabled,\n isFormEmpty,\n isFormTouched,\n isDataChanged,\n isFormFilled,\n dictionary,\n applyGiftOptionsToCart,\n giftOptions,\n onGiftOptionsChange,\n ]\n );\n\n const onInputChange = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const name = target.name;\n const value = target.type === 'checkbox' ? target.checked : target.value;\n\n updateGiftOptions(name, value);\n },\n [updateGiftOptions]\n );\n\n useEffect(() => {\n if (isProductView) return;\n\n const dataEvent = events.on(\n // @ts-ignore\n dataSource === 'cart' ? 'cart/data' : 'order/data',\n (payload: CartModel) => {\n setCartData(payload);\n // Gift wrapping is allowed for the cart if at least one item has gift wrapping available\n const isCartGiftWrappingAllowed = payload?.items?.some(\n ({ giftWrappingAvailable }: { giftWrappingAvailable: boolean }) =>\n giftWrappingAvailable\n );\n const isCartGiftWrappingApplied = payload?.cartGiftWrapping?.some(\n (wrap: GiftWrappingConfigProps) => wrap.selected\n );\n\n // If gift wrapping is not allowed and it is applied, remove it\n if (!isCartGiftWrappingAllowed && isCartGiftWrappingApplied) {\n applyGiftOptionsToCart({\n ...giftOptions,\n giftWrappingId: '',\n isGiftWrappingSelected: false,\n });\n }\n },\n { eager: true }\n );\n return () => {\n dataEvent?.off();\n };\n }, [setCartData, applyGiftOptionsToCart, dataSource, giftOptions, isProductView]);\n\n const giftOptionsState: GiftFormDataType | null = useMemo(() => {\n if (!cartData && !item) return null;\n\n const giftWrappingOptions: GiftWrappingConfigProps[] = isProductView\n ? item?.productGiftWrapping?.map(\n (wrap: GiftWrappingConfigProps): GiftWrappingConfigProps => ({\n ...wrap,\n price:\n item?.giftWrappingPrice && item?.giftWrappingPrice?.value > 0\n ? item.giftWrappingPrice\n : wrap.price,\n })\n )\n : cartData?.cartGiftWrapping || [];\n\n const selectedWrap = giftWrappingOptions?.find((wrap) => wrap.selected);\n const selectedGiftWrappingId =\n selectedWrap?.uid ?? giftWrappingOptions?.[0]?.uid;\n\n const isGiftWrappingSelected = !!selectedWrap;\n\n const giftMessageConfig = isProductView\n ? item.giftMessage\n : cartData?.giftMessage;\n const printedCardIncluded = cartData?.printedCardIncluded;\n const giftReceiptIncluded = cartData?.giftReceiptIncluded;\n\n const giftMessageAvailable = shouldShowGiftMessage(item, isProductView);\n\n const allowGiftWrappingOnOrder = state.config?.allowGiftWrappingOnOrder;\n const allowGiftReceipt = state.config?.allowGiftReceipt;\n const allowPrintedCard = state.config?.allowPrintedCard;\n const isGiftWrappingAvailableForSome = cartData?.items?.some(\n (item: { giftWrappingAvailable: boolean }) => item.giftWrappingAvailable\n );\n const allowGiftWrappingOnProduct = item?.giftWrappingAvailable;\n const isGiftReceiptVisible = isProductView ? false : !!allowGiftReceipt;\n const isPrintedCartVisible = isProductView ? false : !!allowPrintedCard;\n const isGiftWrappingVisible = isProductView\n ? !!allowGiftWrappingOnProduct && !!giftWrappingOptions.length\n : !!allowGiftWrappingOnOrder &&\n !!giftWrappingOptions.length &&\n !!isGiftWrappingAvailableForSome;\n const checkBoxesIsHidden =\n !isGiftReceiptVisible && !isPrintedCartVisible && !isGiftWrappingVisible;\n\n setAreGiftOptionsVisible({\n isGiftReceiptVisible,\n isPrintedCartVisible,\n isGiftWrappingVisible,\n isGiftOptionsVisible: !checkBoxesIsHidden,\n });\n setIsGiftMessageVisible(giftMessageAvailable);\n\n return {\n ...(item && 'uid' in item ? { itemId: item.uid } : {}),\n ...(!isProductView\n ? {\n printedCardIncluded,\n giftReceiptIncluded,\n }\n : {}),\n ...giftMessageConfig,\n giftWrappingId: selectedGiftWrappingId,\n isGiftWrappingSelected,\n giftWrappingOptions,\n };\n }, [cartData, item, isProductView]);\n\n useEffect(() => {\n if (!giftOptionsState) return;\n\n const { giftWrappingOptions, ...giftOptionsFetchData } = giftOptionsState;\n\n setGiftOptions(giftOptionsFetchData);\n\n if (giftWrappingOptions?.length) {\n setGiftWrappingConfig(giftWrappingOptions);\n }\n\n setLoading(false);\n }, [giftOptionsState]);\n\n const isGiftOptionsApplied = useMemo(() => {\n return Object.entries(giftOptions)\n .filter(([key]) => key !== 'itemId' && key !== 'giftWrappingId')\n .some(([, value]) => Boolean(value));\n }, [giftOptions]);\n\n const isGiftOptionsHidden = useMemo(() => {\n return !loading && !!state?.config && areGiftOptionsDisabled(view, item);\n }, [item, loading, view]);\n\n return {\n loading,\n giftOptions,\n showModal,\n errorsField,\n updateLoading,\n cartData,\n fieldsDisabled,\n isGiftOptionsApplied,\n giftWrappingConfig,\n setFieldsDisabled,\n handleFormMouseLeave,\n onInputChange,\n updateGiftOptions,\n setShowModal,\n handleBlur,\n isGiftMessageVisible,\n areGiftOptionsVisible,\n isGiftOptionsHidden,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { GiftOptions as GiftOptionsComponent } from '@/cart/components';\nimport { Item } from '@/cart/data/models';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { useGiftOptions } from '@/cart/hooks/useGiftOptions';\nimport {\n GiftOptionsViewProps,\n GiftOptionsDataSourcesProps,\n GiftFormDataType,\n ProductGiftOptionsConfig,\n GiftOptionsReadOnlyViewProps,\n} from '@/cart/types';\nimport { ImageNodeRenderProps, ImageProps } from '@adobe-commerce/elsie/components';\n\nexport interface GiftOptionsProps {\n item: Item | ProductGiftOptionsConfig;\n view?: GiftOptionsViewProps;\n readOnlyFormOrderView: GiftOptionsReadOnlyViewProps;\n dataSource?: GiftOptionsDataSourcesProps;\n isEditable?: boolean;\n initialLoading?: boolean;\n handleItemsLoading?: (uid: string, state: boolean) => void;\n handleItemsError?: (uid: string, message?: string) => void;\n onItemUpdate?: ({ item }: { item: Item }) => void;\n onGiftOptionsChange?: (data: GiftFormDataType) => void;\n slots?: {\n SwatchImage?: SlotProps<{ \n item: Item | ProductGiftOptionsConfig\n imageSwatchContext: ImageNodeRenderProps['imageSwatchContext']\n defaultImageProps: ImageProps\n }>;\n };\n}\n\nexport const GiftOptions: Container<GiftOptionsProps> = ({\n item,\n view = 'order',\n readOnlyFormOrderView = 'primary',\n dataSource = 'cart',\n isEditable = true,\n initialLoading = true,\n slots,\n handleItemsLoading,\n handleItemsError,\n onItemUpdate,\n onGiftOptionsChange,\n}: GiftOptionsProps) => {\n const {\n isGiftMessageVisible,\n areGiftOptionsVisible,\n loading,\n giftOptions,\n showModal,\n errorsField,\n updateLoading,\n cartData,\n isGiftOptionsApplied,\n fieldsDisabled,\n giftWrappingConfig,\n handleFormMouseLeave,\n updateGiftOptions,\n setShowModal,\n onInputChange,\n handleBlur,\n isGiftOptionsHidden,\n } = useGiftOptions({\n item,\n view,\n dataSource,\n initialLoading,\n handleItemsLoading,\n handleItemsError,\n onItemUpdate,\n onGiftOptionsChange,\n });\n\n if (isGiftOptionsHidden) {\n return null;\n }\n\n return (\n <GiftOptionsComponent\n item={item}\n view={view}\n loading={loading}\n onBlur={handleBlur}\n giftOptions={giftOptions}\n showModal={showModal}\n isEditable={isEditable}\n errorsField={errorsField}\n setShowModal={setShowModal}\n updateLoading={updateLoading}\n updateGiftOptions={updateGiftOptions}\n cartData={cartData}\n isGiftOptionsApplied={isGiftOptionsApplied}\n fieldsDisabled={fieldsDisabled}\n giftWrappingConfig={giftWrappingConfig}\n handleFormMouseLeave={handleFormMouseLeave}\n readOnlyFormOrderView={readOnlyFormOrderView}\n onInputChange={onInputChange}\n isGiftMessageVisible={isGiftMessageVisible}\n areGiftOptionsVisible={areGiftOptionsVisible}\n imageSwatchImageNode={\n slots?.SwatchImage ? ({ imageSwatchContext, ...defaultImageProps }) => (\n // No need to provide default content, as the slot will only be rendered if it's actually provided.\n <Slot \n name=\"SwatchImage\"\n slotTag='span'\n contentTag='span'\n slot={slots.SwatchImage} \n context={{ item, imageSwatchContext, defaultImageProps }} \n />\n ) : undefined\n }\n />\n );\n};\n"],"names":["SvgCheckWithCircle","props","React","SvgGift","useFocusTrap","showModal","containerRef","useRef","useEffect","container","focusableElements","firstElement","lastElement","handleKeyDown","event","GiftOptionModal","view","productName","giftWrappingConfig","imageSwatchImageNode","setShowModal","updateGiftOptions","dictionary","useText","giftWrappingItem","setGiftWrappingItem","useState","selectedGiftWrapping","item","focusElement","renderTitle","jsx","jsxs","Modal","Fragment","_a","Price","ContentGrid","wrapItem","ImageSwatch","Button","GiftLoader","Skeleton","SkeletonRow","CheckboxGroup","className","giftOptions","disabled","cartData","onInputChange","areGiftOptionsVisible","id","useId","productGiftWrappingOptions","orderGiftWrappingOptions","giftWrappingOptions","el","selectedGiftWrappingLabel","productGiftWrappingPrice","renderSelectedGiftWrappingLabel","printedCardPrice","_b","state","_c","productWrappingPrice","_d","renderPrice","price","classes","Field","Checkbox","FormFields","errorMessage","onBlur","isGiftMessageVisible","Input","TextArea","ReadOnlyFormView","readOnlyFormOrderView","recipientName","senderName","message","giftReceiptIncluded","printedCardIncluded","isGiftWrappingSelected","giftWrapCart","uid","isGiftMessageProvided","giftWrapProductSelectLabel","shouldRenderGiftOptions","productGiftOptionsConfig","noProductGiftOptionsApplied","Accordion","ChevronUp","ChevronDown","AccordionSection","Gift","element","config","renderHeader","Icon","selectedGiftOptions","CheckWithCircle","enteredGiftMessage","Card","GiftOptions","loading","isEditable","errorsField","updateLoading","fieldsDisabled","isGiftOptionsApplied","handleFormMouseLeave","renderAccordion","useCallback","defaultOpen","ProgressSpinner","DEFAULT_FORM_STATE","DEFAULT_CHECKBOXES_STATE","shouldShowGiftMessage","isProductView","allowGiftMessageOnOrderItems","areGiftOptionsDisabled","allowGiftWrappingOnOrder","allowGiftWrappingOnOrderItems","allowGiftMessageOnOrder","allowGiftReceipt","allowPrintedCard","isGiftOptionsOnProductDisabled","isGiftOptionsOnOrderDisabled","useGiftOptions","dataSource","initialLoading","handleItemsLoading","handleItemsError","onItemUpdate","onGiftOptionsChange","setLoading","setAreGiftOptionsVisible","setIsGiftMessageVisible","setUpdateLoading","setFieldsDisabled","isDataChanged","setIsDataChanged","isFormTouched","setIsFormTouched","setGiftWrappingConfig","setCartData","setErrorsField","setGiftOptions","isFormFilled","isFormEmpty","_e","_f","applyGiftOptionsToCart","updatedGiftOptions","giftWrappingId","updateProductsFromCart","error","setGiftOptionsOnCart","name","value","extraGiftOptions","prevGiftOptions","isValidGiftFormKey","key","getPrevValue","handleBlur","prevErrors","target","dataEvent","events","payload","isCartGiftWrappingAllowed","giftWrappingAvailable","isCartGiftWrappingApplied","wrap","giftOptionsState","useMemo","selectedWrap","selectedGiftWrappingId","giftMessageConfig","giftMessageAvailable","isGiftWrappingAvailableForSome","allowGiftWrappingOnProduct","isGiftReceiptVisible","isPrintedCartVisible","isGiftWrappingVisible","giftOptionsFetchData","isGiftOptionsHidden","slots","GiftOptionsComponent","imageSwatchContext","defaultImageProps","Slot"],"mappings":"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","x_google_ignoreList":[0,1]}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@dropins/storefront-cart", "version": "
|
|
1
|
+
{"name": "@dropins/storefront-cart", "version": "3.0.0-beta1", "@dropins/tools": "1.6.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}
|