UNPKG

@commercelayer/react-components

Version:
2 lines 2.44 kB
"use client"; "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CartLink=CartLink;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),OrderContext_1=tslib_1.__importDefault(require("../../context/OrderContext")),Parent_1=tslib_1.__importDefault(require("../utils/Parent")),CommerceLayerContext_1=tslib_1.__importDefault(require("../../context/CommerceLayerContext")),getApplicationLink_1=require("../../utils/getApplicationLink"),getDomain_1=require("../../utils/getDomain"),events_1=require("../../utils/events"),organization_1=require("../../utils/organization");function CartLink(props){const{label,children,type,customDomain}=props,p=tslib_1.__rest(props,["label","children","type","customDomain"]),{order,createOrder}=(0,react_1.useContext)(OrderContext_1.default),{accessToken,endpoint}=(0,react_1.useContext)(CommerceLayerContext_1.default);if(accessToken==null)throw new Error("Cannot use `CartLink` outside of `CommerceLayer`");if(endpoint==null)throw new Error("Cannot use `CartLink` outside of `CommerceLayer`");const{domain,slug}=(0,getDomain_1.getDomain)(endpoint),href=slug&&order?.id?(0,getApplicationLink_1.getApplicationLink)({slug,orderId:order?.id,accessToken,domain,applicationType:"cart",customDomain}):void 0,handleClick=event=>tslib_1.__awaiter(this,void 0,void 0,function*(){var _a,_b,_c,_d,_e;if(event.preventDefault(),type!=="mini")if(order?.id){const config=yield(0,organization_1.getOrganizationConfig)({accessToken,endpoint,params:{orderId:order?.id,accessToken,slug}});location.href=(_c=(_b=(_a=config?.links)===null||_a===void 0?void 0:_a.cart)!==null&&_b!==void 0?_b:href)!==null&&_c!==void 0?_c:""}else{const orderId=yield createOrder({}),config=yield(0,organization_1.getOrganizationConfig)({accessToken,endpoint,params:{orderId:order?.id,accessToken,slug}});slug&&(location.href=(_e=(_d=config?.links)===null||_d===void 0?void 0:_d.cart)!==null&&_e!==void 0?_e:(0,getApplicationLink_1.getApplicationLink)({slug,orderId,accessToken,domain,applicationType:"cart",customDomain}))}else(0,events_1.publish)("open-cart")}),parentProps=Object.assign({handleClick,label,href,orderId:order?.id,accessToken},p);return accessToken?children?(0,jsx_runtime_1.jsx)(Parent_1.default,Object.assign({},parentProps,{children})):(0,jsx_runtime_1.jsx)("a",Object.assign({href,onClick:e=>{handleClick(e)}},p,{children:label})):null}exports.default=CartLink;