@anker-in/headless-ui 1.3.62 → 1.3.63
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/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +2 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js.map +3 -3
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.d.ts +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js.map +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/types.d.ts +12 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/types.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/types.js.map +1 -1
- package/dist/cjs/biz-components/Listing/BizProductProvider.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/BizProductProvider.js.map +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +6 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +4 -4
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponInit.d.ts +13 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponInit.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponInit.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponSuccess.d.ts +13 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponSuccess.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponSuccess.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CreditCouponListItem.d.ts +19 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CreditCouponListItem.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CreditCouponListItem.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/RedeemCouponModal.d.ts +18 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/RedeemCouponModal.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/RedeemCouponModal.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.d.ts +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/tracking.d.ts +33 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/tracking.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/tracking.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/types.d.ts +72 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/types.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/types.js.map +7 -0
- package/dist/cjs/biz-components/index.d.ts +3 -0
- package/dist/cjs/biz-components/index.js +1 -1
- package/dist/cjs/biz-components/index.js.map +3 -3
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +2 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js.map +3 -3
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.d.ts +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.js +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.js.map +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/types.d.ts +12 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/types.js.map +1 -1
- package/dist/esm/biz-components/Listing/BizProductProvider.d.ts +1 -1
- package/dist/esm/biz-components/Listing/BizProductProvider.js.map +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +6 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +4 -4
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponInit.d.ts +13 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponInit.js +2 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponInit.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponSuccess.d.ts +13 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponSuccess.js +2 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CouponSuccess.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CreditCouponListItem.d.ts +19 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CreditCouponListItem.js +2 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/CreditCouponListItem.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/RedeemCouponModal.d.ts +18 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/RedeemCouponModal.js +2 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/RedeemCouponModal.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.d.ts +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.js +2 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/tracking.d.ts +33 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/tracking.js +2 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/tracking.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/types.d.ts +72 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/types.js +1 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/types.js.map +7 -0
- package/dist/esm/biz-components/index.d.ts +3 -0
- package/dist/esm/biz-components/index.js +1 -1
- package/dist/esm/biz-components/index.js.map +2 -2
- package/package.json +1 -1
- package/style.css +67 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 积分兑换 Coupon 单条规则数据
|
|
3
|
+
*
|
|
4
|
+
* 纯展示数据,调用方需在传入前完成所有业务判断(登录/激活/积分/库存/是否已兑换),
|
|
5
|
+
* 只把"允许兑换"的行传入 items,本组件不做任何过滤或状态判断。
|
|
6
|
+
*/
|
|
7
|
+
export interface CreditCouponRuleData {
|
|
8
|
+
/** 规则唯一标识(用于 key 和兑换请求) */
|
|
9
|
+
id: number | string;
|
|
10
|
+
/** 标题文案,对应接口 name 或运营配置的展示标题 */
|
|
11
|
+
title: string;
|
|
12
|
+
/** 预格式化好的积分文案(如 "2000 pts"),避免组件内嵌 formatPrice/locale 逻辑 */
|
|
13
|
+
consumeCreditsLabel: string;
|
|
14
|
+
/** 展示用规则说明(拆分自 note/coupon_rule 或运营配置),弹窗内展示 */
|
|
15
|
+
rules?: string[];
|
|
16
|
+
/** 折扣金额:百分比 -10 10% 固定金额 -10 10 */
|
|
17
|
+
value?: string;
|
|
18
|
+
/** 已兑换的持久兑换码(页面刷新后由后端返回),有值时列表项展示兑换码 + Copy 按钮(替代 Redeem CTA) */
|
|
19
|
+
code?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 兑换弹窗当前状态,完全由调用方驱动。
|
|
23
|
+
*
|
|
24
|
+
* - idle:初始确认态,Confirm 按钮可点击
|
|
25
|
+
* - loading:调用方正在发起兑换请求,Confirm 按钮 disabled + loading 动效
|
|
26
|
+
* - success:兑换成功,切换渲染成功态,展示 couponCode
|
|
27
|
+
* - error:兑换失败,停留确认态,底部展示 errorMessage,Confirm 按钮恢复可点击
|
|
28
|
+
*/
|
|
29
|
+
export type RedeemStatus = 'idle' | 'loading' | 'success' | 'error';
|
|
30
|
+
/** 弹窗文案配置 */
|
|
31
|
+
export interface CreditCouponRedeemModalCopy {
|
|
32
|
+
/** 确认态标题,如 "Confirm to redeem this reward?" */
|
|
33
|
+
confirmTitle: string;
|
|
34
|
+
/** 确认按钮文案 */
|
|
35
|
+
confirmButton: string;
|
|
36
|
+
/** 成功态标题 */
|
|
37
|
+
successTitle: string;
|
|
38
|
+
/** 成功态描述 */
|
|
39
|
+
successDesc: string;
|
|
40
|
+
/** 规则说明区块标签,如 "Rules" */
|
|
41
|
+
ruleLabel?: string;
|
|
42
|
+
/** 已兑换行的兑换码前缀标签,如 "Code";不传则不展示前缀,仅展示纯 code */
|
|
43
|
+
codeLabel?: string;
|
|
44
|
+
/** Copy 按钮默认文案 */
|
|
45
|
+
copyLabel?: string;
|
|
46
|
+
/** Copy 按钮点击后的文案 */
|
|
47
|
+
copiedLabel?: string;
|
|
48
|
+
/** 折扣背景图 */
|
|
49
|
+
modalIcon?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface CreditCouponRedeemProps {
|
|
52
|
+
/** 列表标题,如 "Member benefits you will get" */
|
|
53
|
+
title?: string;
|
|
54
|
+
/** 纯展示数据,调用方已过滤掉所有不可兑换的行 */
|
|
55
|
+
items: CreditCouponRuleData[];
|
|
56
|
+
/** 默认展示条数,超出显示 "View More";不传则展示全部 */
|
|
57
|
+
visibleCount?: number;
|
|
58
|
+
/** "View More" 展开链接文案 */
|
|
59
|
+
viewMoreLabel?: string;
|
|
60
|
+
/** 统一的 CTA 文案(如 "Redeem"),所有行共用,不再按行定制 */
|
|
61
|
+
redeemLabel?: string;
|
|
62
|
+
unLoginLabel?: string;
|
|
63
|
+
className?: string;
|
|
64
|
+
iconUrl?: string;
|
|
65
|
+
/** 弹窗打开状态变化时的旁路通知(可选,便于调用方联动埋点等),弹窗开关本身由组件内部管理 */
|
|
66
|
+
onModalOpenChange?: (open: boolean) => void;
|
|
67
|
+
/** 用户在弹窗内点击"确认兑换"时触发,调用方据此发起真实兑换请求。
|
|
68
|
+
* 成功时 resolve 返回兑换码;失败时 reject 抛出 Error(message 作为弹窗错误文案)。 */
|
|
69
|
+
onConfirm: (item: CreditCouponRuleData) => Promise<string>;
|
|
70
|
+
/** 弹窗文案配置 */
|
|
71
|
+
modalCopy: CreditCouponRedeemModalCopy;
|
|
72
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var g=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of a(e))!l.call(t,i)&&i!==o&&n(t,i,{get:()=>e[i],enumerable:!(r=s(e,i))||r.enumerable});return t};var d=t=>g(n({},"__esModule",{value:!0}),t);var u={};module.exports=d(u);
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../src/biz-components/Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/types.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * \u79EF\u5206\u5151\u6362 Coupon \u5355\u6761\u89C4\u5219\u6570\u636E\n *\n * \u7EAF\u5C55\u793A\u6570\u636E\uFF0C\u8C03\u7528\u65B9\u9700\u5728\u4F20\u5165\u524D\u5B8C\u6210\u6240\u6709\u4E1A\u52A1\u5224\u65AD\uFF08\u767B\u5F55/\u6FC0\u6D3B/\u79EF\u5206/\u5E93\u5B58/\u662F\u5426\u5DF2\u5151\u6362\uFF09\uFF0C\n * \u53EA\u628A\"\u5141\u8BB8\u5151\u6362\"\u7684\u884C\u4F20\u5165 items\uFF0C\u672C\u7EC4\u4EF6\u4E0D\u505A\u4EFB\u4F55\u8FC7\u6EE4\u6216\u72B6\u6001\u5224\u65AD\u3002\n */\nexport interface CreditCouponRuleData {\n /** \u89C4\u5219\u552F\u4E00\u6807\u8BC6\uFF08\u7528\u4E8E key \u548C\u5151\u6362\u8BF7\u6C42\uFF09 */\n id: number | string\n /** \u6807\u9898\u6587\u6848\uFF0C\u5BF9\u5E94\u63A5\u53E3 name \u6216\u8FD0\u8425\u914D\u7F6E\u7684\u5C55\u793A\u6807\u9898 */\n title: string\n /** \u9884\u683C\u5F0F\u5316\u597D\u7684\u79EF\u5206\u6587\u6848\uFF08\u5982 \"2000 pts\"\uFF09\uFF0C\u907F\u514D\u7EC4\u4EF6\u5185\u5D4C formatPrice/locale \u903B\u8F91 */\n consumeCreditsLabel: string\n /** \u5C55\u793A\u7528\u89C4\u5219\u8BF4\u660E\uFF08\u62C6\u5206\u81EA note/coupon_rule \u6216\u8FD0\u8425\u914D\u7F6E\uFF09\uFF0C\u5F39\u7A97\u5185\u5C55\u793A */\n rules?: string[]\n /** \u6298\u6263\u91D1\u989D\uFF1A\u767E\u5206\u6BD4 -10 10% \u56FA\u5B9A\u91D1\u989D -10 10 */\n value?: string\n /** \u5DF2\u5151\u6362\u7684\u6301\u4E45\u5151\u6362\u7801\uFF08\u9875\u9762\u5237\u65B0\u540E\u7531\u540E\u7AEF\u8FD4\u56DE\uFF09\uFF0C\u6709\u503C\u65F6\u5217\u8868\u9879\u5C55\u793A\u5151\u6362\u7801 + Copy \u6309\u94AE\uFF08\u66FF\u4EE3 Redeem CTA\uFF09 */\n code?: string\n}\n\n/**\n * \u5151\u6362\u5F39\u7A97\u5F53\u524D\u72B6\u6001\uFF0C\u5B8C\u5168\u7531\u8C03\u7528\u65B9\u9A71\u52A8\u3002\n *\n * - idle\uFF1A\u521D\u59CB\u786E\u8BA4\u6001\uFF0CConfirm \u6309\u94AE\u53EF\u70B9\u51FB\n * - loading\uFF1A\u8C03\u7528\u65B9\u6B63\u5728\u53D1\u8D77\u5151\u6362\u8BF7\u6C42\uFF0CConfirm \u6309\u94AE disabled + loading \u52A8\u6548\n * - success\uFF1A\u5151\u6362\u6210\u529F\uFF0C\u5207\u6362\u6E32\u67D3\u6210\u529F\u6001\uFF0C\u5C55\u793A couponCode\n * - error\uFF1A\u5151\u6362\u5931\u8D25\uFF0C\u505C\u7559\u786E\u8BA4\u6001\uFF0C\u5E95\u90E8\u5C55\u793A errorMessage\uFF0CConfirm \u6309\u94AE\u6062\u590D\u53EF\u70B9\u51FB\n */\nexport type RedeemStatus = 'idle' | 'loading' | 'success' | 'error'\n\n/** \u5F39\u7A97\u6587\u6848\u914D\u7F6E */\nexport interface CreditCouponRedeemModalCopy {\n /** \u786E\u8BA4\u6001\u6807\u9898\uFF0C\u5982 \"Confirm to redeem this reward?\" */\n confirmTitle: string\n /** \u786E\u8BA4\u6309\u94AE\u6587\u6848 */\n confirmButton: string\n /** \u6210\u529F\u6001\u6807\u9898 */\n successTitle: string\n /** \u6210\u529F\u6001\u63CF\u8FF0 */\n successDesc: string\n /** \u89C4\u5219\u8BF4\u660E\u533A\u5757\u6807\u7B7E\uFF0C\u5982 \"Rules\" */\n ruleLabel?: string\n /** \u5DF2\u5151\u6362\u884C\u7684\u5151\u6362\u7801\u524D\u7F00\u6807\u7B7E\uFF0C\u5982 \"Code\"\uFF1B\u4E0D\u4F20\u5219\u4E0D\u5C55\u793A\u524D\u7F00\uFF0C\u4EC5\u5C55\u793A\u7EAF code */\n codeLabel?: string\n /** Copy \u6309\u94AE\u9ED8\u8BA4\u6587\u6848 */\n copyLabel?: string\n /** Copy \u6309\u94AE\u70B9\u51FB\u540E\u7684\u6587\u6848 */\n copiedLabel?: string\n /** \u6298\u6263\u80CC\u666F\u56FE */\n modalIcon?: string\n}\n\nexport interface CreditCouponRedeemProps {\n /** \u5217\u8868\u6807\u9898\uFF0C\u5982 \"Member benefits you will get\" */\n title?: string\n /** \u7EAF\u5C55\u793A\u6570\u636E\uFF0C\u8C03\u7528\u65B9\u5DF2\u8FC7\u6EE4\u6389\u6240\u6709\u4E0D\u53EF\u5151\u6362\u7684\u884C */\n items: CreditCouponRuleData[]\n /** \u9ED8\u8BA4\u5C55\u793A\u6761\u6570\uFF0C\u8D85\u51FA\u663E\u793A \"View More\"\uFF1B\u4E0D\u4F20\u5219\u5C55\u793A\u5168\u90E8 */\n visibleCount?: number\n /** \"View More\" \u5C55\u5F00\u94FE\u63A5\u6587\u6848 */\n viewMoreLabel?: string\n /** \u7EDF\u4E00\u7684 CTA \u6587\u6848\uFF08\u5982 \"Redeem\"\uFF09\uFF0C\u6240\u6709\u884C\u5171\u7528\uFF0C\u4E0D\u518D\u6309\u884C\u5B9A\u5236 */\n redeemLabel?: string\n unLoginLabel?: string\n className?: string\n\n iconUrl?: string\n\n /** \u5F39\u7A97\u6253\u5F00\u72B6\u6001\u53D8\u5316\u65F6\u7684\u65C1\u8DEF\u901A\u77E5\uFF08\u53EF\u9009\uFF0C\u4FBF\u4E8E\u8C03\u7528\u65B9\u8054\u52A8\u57CB\u70B9\u7B49\uFF09\uFF0C\u5F39\u7A97\u5F00\u5173\u672C\u8EAB\u7531\u7EC4\u4EF6\u5185\u90E8\u7BA1\u7406 */\n onModalOpenChange?: (open: boolean) => void\n\n /** \u7528\u6237\u5728\u5F39\u7A97\u5185\u70B9\u51FB\"\u786E\u8BA4\u5151\u6362\"\u65F6\u89E6\u53D1\uFF0C\u8C03\u7528\u65B9\u636E\u6B64\u53D1\u8D77\u771F\u5B9E\u5151\u6362\u8BF7\u6C42\u3002\n * \u6210\u529F\u65F6 resolve \u8FD4\u56DE\u5151\u6362\u7801\uFF1B\u5931\u8D25\u65F6 reject \u629B\u51FA Error\uFF08message \u4F5C\u4E3A\u5F39\u7A97\u9519\u8BEF\u6587\u6848\uFF09\u3002 */\n onConfirm: (item: CreditCouponRuleData) => Promise<string>\n\n /** \u5F39\u7A97\u6587\u6848\u914D\u7F6E */\n modalCopy: CreditCouponRedeemModalCopy\n}\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["types_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -67,6 +67,8 @@ export { default as ProductGridBox } from './Listing/components/ProductCard/Prod
|
|
|
67
67
|
export { default as ProductGallery } from './Listing/components/ProductCard/ProductGallery/index.js';
|
|
68
68
|
export { default as ProductSummary } from './Listing/components/ProductCard/ProductSummary/index.js';
|
|
69
69
|
export { default as BenefitsTab } from './Listing/components/ProductCard/ProductDetail/BenefitsTab.js';
|
|
70
|
+
export { default as CreditCouponRedeem } from './Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.js';
|
|
71
|
+
export type { CreditCouponRedeemProps, CreditCouponRuleData, RedeemStatus, } from './Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.js';
|
|
70
72
|
export { default as PaidShipping } from './Listing/components/PaidShipping/index.js';
|
|
71
73
|
export { default as CartActionButtons } from './Listing/components/CartActionButtons/index.js';
|
|
72
74
|
export type { CartActionButtonsProps } from './Listing/components/CartActionButtons/index.js';
|
|
@@ -126,6 +128,7 @@ export { default as PromotionalBar } from './PromotionalBar/index.js';
|
|
|
126
128
|
export { default as EventSchedule } from './EventSchedule/index.js';
|
|
127
129
|
export { default as SecondaryBanner } from './SecondaryBanner/index.js';
|
|
128
130
|
export { default as BuyOneGetOneShelf } from './BuyOneGetOneShelf/index.js';
|
|
131
|
+
export type { ButtonFunctionType as BuyOneGetOneShelfButtonFunctionType } from './BuyOneGetOneShelf/types.js';
|
|
129
132
|
export { default as ActiveShelf } from './ActiveShelf/index.js';
|
|
130
133
|
export { default as MediaShelf } from './MediaShelf/index.js';
|
|
131
134
|
export { default as CreditsShelf, CreditsProductCard } from './CreditsShelf/index.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var xt=Object.create;var f=Object.defineProperty;var yt=Object.getOwnPropertyDescriptor;var Pt=Object.getOwnPropertyNames;var St=Object.getPrototypeOf,ht=Object.prototype.hasOwnProperty;var Ct=(t,o)=>{for(var i in o)f(t,i,{get:o[i],enumerable:!0})},P=(t,o,i,y)=>{if(o&&typeof o=="object"||typeof o=="function")for(let p of Pt(o))!ht.call(t,p)&&p!==i&&f(t,p,{get:()=>o[p],enumerable:!(y=yt(o,p))||y.enumerable});return t};var e=(t,o,i)=>(i=t!=null?xt(St(t)):{},P(o||!t||!t.__esModule?f(i,"default",{value:t,enumerable:!0}):i,t)),gt=t=>P(f({},"__esModule",{value:!0}),t);var Bt={};Ct(Bt,{AccessoriesProductGrid:()=>a.AccessoriesProductGrid,AccessoryProductCard:()=>m.AccessoryProductCard,AccessoryShelf:()=>m.default,AccordionCards:()=>G.default,ActiveShelf:()=>Ze.default,ActivityMechanism:()=>g.default,ActivitySchedule:()=>S.default,AddToCartSuccessPopover:()=>a.AddToCartSuccessPopover,AiuiProvider:()=>_.default,AnchorNavigation:()=>_e.default,AplusDesc:()=>Be.default,BenefitsTab:()=>xe.default,BizProductProvider:()=>c.default,BrandCardLink:()=>De.default,BrandEquity:()=>M.default,BuyOneGetOneShelf:()=>Xe.default,CartActionButtons:()=>Pe.default,CartGiftSection:()=>r.CartGiftSection,CartItemRow:()=>r.CartItemRow,CartPerksSection:()=>r.CartPerksSection,CartPriceSummary:()=>r.CartPriceSummary,CartSummaryHeader:()=>r.CartSummaryHeader,CartThirdPartyBanner:()=>r.CartThirdPartyBanner,Category:()=>b.default,CreativeModule:()=>X.default,CreditsProductCard:()=>n.CreditsProductCard,CreditsShelf:()=>n.default,DownLoad:()=>Ie.default,Evaluate:()=>j.default,EventSchedule:()=>Je.default,Faq:()=>W.default,FeatureCards:()=>Le.default,FeatureShowcase:()=>We.default,FeaturedBlogPosts:()=>we.default,Features:()=>Me.default,FootCharger:()=>Ae.default,FooterNavigation:()=>z.default,GiftBox:()=>Te.default,GiftShelf:()=>h.default,GiftTierShelf:()=>C.default,Graphic:()=>k.default,GraphicAttractionBlock:()=>R.default,GraphicMore:()=>ge.default,GraphicOverlay:()=>Z.default,HeaderNavigation:()=>H.default,HeroBanner:()=>F.default,IPC_SEARCH_PAGE:()=>d.IPC_SEARCH_PAGE,IPRedirect:()=>Tt,ImageOverlayShelf:()=>ot.default,ImageTextFeature:()=>ke.default,ImageTextOverlay:()=>at.default,ImageWithText:()=>Ve.default,Ksp:()=>Ge.default,MainProductArea:()=>a.MainProductArea,Marquee:()=>O.default,MarqueeImageContent:()=>s.MarqueeImageContent,MarqueeItem:()=>s.MarqueeItem,MarqueeReview:()=>E.default,MarqueeTextContent:()=>s.MarqueeTextContent,MediaEndorsement:()=>tt.default,MediaPlayerBase:()=>L.default,MediaPlayerMulti:()=>V.default,MediaPlayerSticky:()=>w.default,MediaSceneSwitcher:()=>He.default,MediaSceneSwitcherV2:()=>ze.default,MediaShelf:()=>$e.default,MediaTextOverlay:()=>rt.default,MemberEquity:()=>B.default,MiniCart:()=>it.default,MiniCartCircleProgress:()=>st.default,MiniCartDialog:()=>x.default,MiniCartDialogComponent:()=>x.MiniCartDialog,ModalCoupon:()=>ut.default,ModalRegisterSubscribe:()=>ct.default,ModalSmsSubscribe:()=>lt.default,ModalSubscribeConfirm:()=>nt.default,ModalVerify:()=>mt.default,MultiLayoutGraphicBlock:()=>q.default,NotifyMeDialog:()=>Se.NotifyMeDialog,PAYLOAD_COMPONENT_MAP:()=>Mt,PaidShipping:()=>ye.default,ProductActions:()=>re.default,ProductBanner:()=>ne.default,ProductBenefits:()=>ae.default,ProductBenefitsTabs:()=>oe.default,ProductBundle:()=>de.default,ProductCompare:()=>Fe.default,ProductCoupon:()=>ce.default,ProductFreeGift:()=>se.default,ProductFunctionFreeGift:()=>pe.default,ProductGallery:()=>le.default,ProductGridBox:()=>ue.default,ProductHero:()=>qe.default,ProductHighlight:()=>ie.default,ProductLottery:()=>be.default,ProductNav:()=>Ue.default,ProductOptions:()=>fe.default,ProductPaidShipping:()=>Ce.default,ProductServiceBenefits:()=>he.default,ProductSummary:()=>me.default,PromoBanner:()=>a.PromoBanner,PromotionalBar:()=>Ye.default,PurchaseBar:()=>te.default,SceneProductCard:()=>u.SceneProductCard,SceneShelf:()=>u.default,SceneShelfV2:()=>l.default,SceneShelfV2ProductCard:()=>l.SceneShelfV2ProductCard,SceneShelfV3:()=>et.default,SearchPage:()=>K.default,SearchPageTabType:()=>d.SearchPageTabType,SecondaryBanner:()=>Qe.default,SectionHeader:()=>a.SectionHeader,SelectStore:()=>ve.default,ShelfDisplay:()=>A.default,ShelfDisplayHorizontal:()=>D.default,Slogan:()=>T.default,Spacer:()=>I.default,Specs:()=>$.default,SpecsComparison:()=>Re.default,SwiperBox:()=>J.default,TabGroup:()=>ee.default,TabWithImage:()=>Ne.default,Tabs:()=>Y.default,TabsWithMedia:()=>Ee.default,ThreeDCarousel:()=>Ke.default,Title:()=>v.default,VideoFeature:()=>Oe.default,VideoModal:()=>Q.VideoModal,WebPushPopup:()=>pt.default,WheelLottery:()=>je.default,WhyChoose:()=>N.default,useAiuiContext:()=>dt.useAiuiContext,useBizProductContext:()=>c.useBizProductContext,useEmarsysWebPush:()=>ft.useEmarsysWebPush,withLayout:()=>U.withLayout});module.exports=gt(Bt);var a=require("./AccessoriesShelf/index.js"),S=e(require("./ActivitySchedule/index.js")),h=e(require("./GiftShelf/index.js")),C=e(require("./GiftTierShelf/index.js")),g=e(require("./ActivityMechanism/index.js")),M=e(require("./BrandEquity/index.js")),B=e(require("./MemberEquity/index.js")),T=e(require("./Slogan/index.js")),v=e(require("./Title/index.js")),I=e(require("./Spacer/index.js")),A=e(require("./ShelfDisplay/index.js")),D=e(require("./ShelfDisplayHorizontal/index.js")),j=e(require("./Evaluate/index.js")),b=e(require("./Category/index.js")),F=e(require("./HeroBanner/index.js")),G=e(require("./AccordionCards/index.js")),k=e(require("./Graphic/index.js")),L=e(require("./MediaPlayerBase/index.js")),w=e(require("./MediaPlayerSticky/index.js")),V=e(require("./MediaPlayerMulti/index.js")),O=e(require("./Marquee/index.js")),E=e(require("./MarqueeReview/index.js")),N=e(require("./WhyChoose/index.js")),W=e(require("./Faq/index.js")),s=require("./Marquee/index.js"),q=e(require("./MultiLayoutGraphicBlock/index.js")),R=e(require("./GraphicAttractionBlock/index.js")),H=e(require("./HeaderNavigation/index.js")),z=e(require("./FooterNavigation/index.js")),K=e(require("./SearchPage/index.js")),d=require("./SearchPage/types.js"),U=require("../shared/Styles.js"),_=e(require("./AiuiProvider/index.js")),Y=e(require("./Tabs/index.js")),J=e(require("./SwiperBox/index.js")),Q=require("./VideoModal/index.js"),X=e(require("./CreativeModule/index.js")),Z=e(require("./GraphicOverlay/index.js")),$=e(require("./Specs/index.js")),ee=e(require("./TabsGroup/index.js")),c=e(require("./Listing/BizProductProvider.js")),te=e(require("./Listing/components/PurchaseBar/index.js")),re=e(require("./Listing/components/PurchaseBar/ProductActions/index.js")),oe=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js")),ae=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js")),ie=e(require("./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js")),se=e(require("./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js")),pe=e(require("./Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.js")),fe=e(require("./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js")),de=e(require("./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js")),ce=e(require("./Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js")),ne=e(require("./Listing/components/ProductCard/ProductDetail/ProductBanner/index.js")),ue=e(require("./Listing/components/ProductCard/ProductGridBox.js")),le=e(require("./Listing/components/ProductCard/ProductGallery/index.js")),me=e(require("./Listing/components/ProductCard/ProductSummary/index.js")),xe=e(require("./Listing/components/ProductCard/ProductDetail/BenefitsTab.js")),ye=e(require("./Listing/components/PaidShipping/index.js")),Pe=e(require("./Listing/components/CartActionButtons/index.js")),Se=require("./NotifyMeDialog/index.js"),he=e(require("./Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js")),Ce=e(require("./Listing/components/ProductCard/ProductPaidShipping/index.js")),ge=e(require("./GraphicMore/index.js")),Me=e(require("./Features/index.js")),Be=e(require("./AplusDesc/index.js")),Te=e(require("./GiftBox/index.js")),ve=e(require("./SelectStore/index.js")),Ie=e(require("./DownLoad/index.js")),Ae=e(require("./FootCharger/index.js")),De=e(require("./BrandCardLink/index.js")),Tt=e(require("./IPRedirect/index.js")),je=e(require("./WheelLottery/index.js")),be=e(require("./ProductLottery/index.js")),Fe=e(require("./ProductCompare/index.js")),Ge=e(require("./Ksp/index.js")),ke=e(require("./ImageTextFeature/index.js")),Le=e(require("./FeatureCards/index.js")),we=e(require("./FeaturedBlogPosts/index.js")),Ve=e(require("./ImageWithText/index.js")),Oe=e(require("./VideoFeature/index.js")),Ee=e(require("./TabsWithMedia/index.js")),Ne=e(require("./TabWithImage/index.js")),We=e(require("./FeatureShowcase/index.js")),qe=e(require("./ProductHero/index.js")),Re=e(require("./SpecsComparison/index.js")),He=e(require("./MediaSceneSwitcher/index.js")),ze=e(require("./MediaSceneSwitcherV2/index.js")),Ke=e(require("./ThreeDCarousel/index.js")),Ue=e(require("./ProductNav/index.js")),_e=e(require("./AnchorNavigation/index.js")),Ye=e(require("./PromotionalBar/index.js")),Je=e(require("./EventSchedule/index.js")),Qe=e(require("./SecondaryBanner/index.js")),Xe=e(require("./BuyOneGetOneShelf/index.js")),Ze=e(require("./ActiveShelf/index.js")),$e=e(require("./MediaShelf/index.js")),n=e(require("./CreditsShelf/index.js")),u=e(require("./SceneShelf/index.js")),l=e(require("./SceneShelfV2/index.js")),et=e(require("./SceneShelfV3/index.js")),tt=e(require("./MediaEndorsement/index.js")),rt=e(require("./MediaTextOverlay/index.js")),ot=e(require("./ImageOverlayShelf/index.js")),m=e(require("./AccessoriesShelf/components/AccessoryShelf/index.js")),at=e(require("./ImageTextOverlay/index.js")),it=e(require("./MiniCart/index.js")),st=e(require("./MiniCart/CircleProgress.js")),x=e(require("./MiniCart/MiniCartDialog.js")),pt=e(require("./WebPushPopup/index.js")),ft=require("../hooks/useEmarsysWebPush.js"),r=require("./CartDetail/index.js"),dt=require("./AiuiProvider/index.js"),ct=e(require("./ModalRegisterSubscribe/index.js")),nt=e(require("./ModalSubscribeConfirm/index.js")),ut=e(require("./ModalCoupon/index.js")),lt=e(require("./ModalSmsSubscribe/index.js")),mt=e(require("./ModalVerify/index.js"));const Mt={"ipc-accordioncards":"AccordionCards","ipc-aplusdesc":"AplusDesc","ipc-banner":"HeroBanner","ipc-brand-equity":"BrandEquity","ipc-category":"Category","ipc-collection-banner":"CollectionBanner","ipc-collection-shelves":"CollectionShelves","ipc-creativemodule":"CreativeModule","ipc-download":"DownLoad","ipc-evaluate":"Evaluate","ipc-faq":"Faq","ipc-features":"Features","ipc-footcharger":"FootCharger","ipc-ga-block":"GraphicAttractionBlock","ipc-giftbox":"GiftBox","ipc-giftshelf":"GiftShelf","ipc-graphic":"Graphic","ipc-graphicmore":"GraphicMore","ipc-graphicoverlay":"GraphicOverlay","ipc-marquee":"Marquee","ipc-mediaplayerbase":"MediaPlayerBase","ipc-mediaplayermulti":"MediaPlayerMulti","ipc-mediaplayersticky":"MediaPlayerSticky","ipc-member-equity":"MemberEquity","ipc-mlg-block":"MultiLayoutGraphicBlock","ipc-search-page-tabs":"SearchPageBlock","ipc-selectstore":"SelectStore","ipc-shelfdisplay":"ShelfDisplay","ipc-shelfdisplay-horizontal":"ShelfDisplayHorizontal","ipc-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"Tabs","ipc-text-marquee":"TextMarquee","ipc-title":"Title","ipc-whychoose":"WhyChoose","ipc-product-nav":"ProductNav","ipc-brand-card-link":"BrandCardLink","ipc-ipredirect":"IPRedirect",ksp:"Ksp","ipc-secondary-banner":"SecondaryBanner","ipc-media-endorsement":"MediaEndorsement","ipc-media-scene-switcher-v2":"MediaSceneSwitcherV2","ipc-featured-blog-posts":"FeaturedBlogPosts","ipc-media-text-overlay":"MediaTextOverlay",ProductCompare:"ProductCompare"};
|
|
1
|
+
"use strict";var yt=Object.create;var f=Object.defineProperty;var Pt=Object.getOwnPropertyDescriptor;var St=Object.getOwnPropertyNames;var ht=Object.getPrototypeOf,Ct=Object.prototype.hasOwnProperty;var gt=(t,o)=>{for(var i in o)f(t,i,{get:o[i],enumerable:!0})},P=(t,o,i,y)=>{if(o&&typeof o=="object"||typeof o=="function")for(let p of St(o))!Ct.call(t,p)&&p!==i&&f(t,p,{get:()=>o[p],enumerable:!(y=Pt(o,p))||y.enumerable});return t};var e=(t,o,i)=>(i=t!=null?yt(ht(t)):{},P(o||!t||!t.__esModule?f(i,"default",{value:t,enumerable:!0}):i,t)),Mt=t=>P(f({},"__esModule",{value:!0}),t);var Tt={};gt(Tt,{AccessoriesProductGrid:()=>a.AccessoriesProductGrid,AccessoryProductCard:()=>m.AccessoryProductCard,AccessoryShelf:()=>m.default,AccordionCards:()=>G.default,ActiveShelf:()=>$e.default,ActivityMechanism:()=>g.default,ActivitySchedule:()=>S.default,AddToCartSuccessPopover:()=>a.AddToCartSuccessPopover,AiuiProvider:()=>_.default,AnchorNavigation:()=>Ye.default,AplusDesc:()=>Te.default,BenefitsTab:()=>xe.default,BizProductProvider:()=>c.default,BrandCardLink:()=>Ae.default,BrandEquity:()=>M.default,BuyOneGetOneShelf:()=>Ze.default,CartActionButtons:()=>Se.default,CartGiftSection:()=>r.CartGiftSection,CartItemRow:()=>r.CartItemRow,CartPerksSection:()=>r.CartPerksSection,CartPriceSummary:()=>r.CartPriceSummary,CartSummaryHeader:()=>r.CartSummaryHeader,CartThirdPartyBanner:()=>r.CartThirdPartyBanner,Category:()=>b.default,CreativeModule:()=>X.default,CreditCouponRedeem:()=>ye.default,CreditsProductCard:()=>n.CreditsProductCard,CreditsShelf:()=>n.default,DownLoad:()=>De.default,Evaluate:()=>A.default,EventSchedule:()=>Qe.default,Faq:()=>W.default,FeatureCards:()=>Oe.default,FeatureShowcase:()=>qe.default,FeaturedBlogPosts:()=>we.default,Features:()=>Be.default,FootCharger:()=>je.default,FooterNavigation:()=>z.default,GiftBox:()=>ve.default,GiftShelf:()=>h.default,GiftTierShelf:()=>C.default,Graphic:()=>k.default,GraphicAttractionBlock:()=>R.default,GraphicMore:()=>Me.default,GraphicOverlay:()=>Z.default,HeaderNavigation:()=>H.default,HeroBanner:()=>F.default,IPC_SEARCH_PAGE:()=>d.IPC_SEARCH_PAGE,IPRedirect:()=>vt,ImageOverlayShelf:()=>at.default,ImageTextFeature:()=>Le.default,ImageTextOverlay:()=>it.default,ImageWithText:()=>Ve.default,Ksp:()=>ke.default,MainProductArea:()=>a.MainProductArea,Marquee:()=>V.default,MarqueeImageContent:()=>s.MarqueeImageContent,MarqueeItem:()=>s.MarqueeItem,MarqueeReview:()=>E.default,MarqueeTextContent:()=>s.MarqueeTextContent,MediaEndorsement:()=>rt.default,MediaPlayerBase:()=>L.default,MediaPlayerMulti:()=>w.default,MediaPlayerSticky:()=>O.default,MediaSceneSwitcher:()=>ze.default,MediaSceneSwitcherV2:()=>Ke.default,MediaShelf:()=>et.default,MediaTextOverlay:()=>ot.default,MemberEquity:()=>B.default,MiniCart:()=>st.default,MiniCartCircleProgress:()=>pt.default,MiniCartDialog:()=>x.default,MiniCartDialogComponent:()=>x.MiniCartDialog,ModalCoupon:()=>lt.default,ModalRegisterSubscribe:()=>nt.default,ModalSmsSubscribe:()=>mt.default,ModalSubscribeConfirm:()=>ut.default,ModalVerify:()=>xt.default,MultiLayoutGraphicBlock:()=>q.default,NotifyMeDialog:()=>he.NotifyMeDialog,PAYLOAD_COMPONENT_MAP:()=>Bt,PaidShipping:()=>Pe.default,ProductActions:()=>re.default,ProductBanner:()=>ne.default,ProductBenefits:()=>ae.default,ProductBenefitsTabs:()=>oe.default,ProductBundle:()=>de.default,ProductCompare:()=>Ge.default,ProductCoupon:()=>ce.default,ProductFreeGift:()=>se.default,ProductFunctionFreeGift:()=>pe.default,ProductGallery:()=>le.default,ProductGridBox:()=>ue.default,ProductHero:()=>Re.default,ProductHighlight:()=>ie.default,ProductLottery:()=>Fe.default,ProductNav:()=>_e.default,ProductOptions:()=>fe.default,ProductPaidShipping:()=>ge.default,ProductServiceBenefits:()=>Ce.default,ProductSummary:()=>me.default,PromoBanner:()=>a.PromoBanner,PromotionalBar:()=>Je.default,PurchaseBar:()=>te.default,SceneProductCard:()=>u.SceneProductCard,SceneShelf:()=>u.default,SceneShelfV2:()=>l.default,SceneShelfV2ProductCard:()=>l.SceneShelfV2ProductCard,SceneShelfV3:()=>tt.default,SearchPage:()=>K.default,SearchPageTabType:()=>d.SearchPageTabType,SecondaryBanner:()=>Xe.default,SectionHeader:()=>a.SectionHeader,SelectStore:()=>Ie.default,ShelfDisplay:()=>D.default,ShelfDisplayHorizontal:()=>j.default,Slogan:()=>T.default,Spacer:()=>I.default,Specs:()=>$.default,SpecsComparison:()=>He.default,SwiperBox:()=>J.default,TabGroup:()=>ee.default,TabWithImage:()=>We.default,Tabs:()=>Y.default,TabsWithMedia:()=>Ne.default,ThreeDCarousel:()=>Ue.default,Title:()=>v.default,VideoFeature:()=>Ee.default,VideoModal:()=>Q.VideoModal,WebPushPopup:()=>ft.default,WheelLottery:()=>be.default,WhyChoose:()=>N.default,useAiuiContext:()=>ct.useAiuiContext,useBizProductContext:()=>c.useBizProductContext,useEmarsysWebPush:()=>dt.useEmarsysWebPush,withLayout:()=>U.withLayout});module.exports=Mt(Tt);var a=require("./AccessoriesShelf/index.js"),S=e(require("./ActivitySchedule/index.js")),h=e(require("./GiftShelf/index.js")),C=e(require("./GiftTierShelf/index.js")),g=e(require("./ActivityMechanism/index.js")),M=e(require("./BrandEquity/index.js")),B=e(require("./MemberEquity/index.js")),T=e(require("./Slogan/index.js")),v=e(require("./Title/index.js")),I=e(require("./Spacer/index.js")),D=e(require("./ShelfDisplay/index.js")),j=e(require("./ShelfDisplayHorizontal/index.js")),A=e(require("./Evaluate/index.js")),b=e(require("./Category/index.js")),F=e(require("./HeroBanner/index.js")),G=e(require("./AccordionCards/index.js")),k=e(require("./Graphic/index.js")),L=e(require("./MediaPlayerBase/index.js")),O=e(require("./MediaPlayerSticky/index.js")),w=e(require("./MediaPlayerMulti/index.js")),V=e(require("./Marquee/index.js")),E=e(require("./MarqueeReview/index.js")),N=e(require("./WhyChoose/index.js")),W=e(require("./Faq/index.js")),s=require("./Marquee/index.js"),q=e(require("./MultiLayoutGraphicBlock/index.js")),R=e(require("./GraphicAttractionBlock/index.js")),H=e(require("./HeaderNavigation/index.js")),z=e(require("./FooterNavigation/index.js")),K=e(require("./SearchPage/index.js")),d=require("./SearchPage/types.js"),U=require("../shared/Styles.js"),_=e(require("./AiuiProvider/index.js")),Y=e(require("./Tabs/index.js")),J=e(require("./SwiperBox/index.js")),Q=require("./VideoModal/index.js"),X=e(require("./CreativeModule/index.js")),Z=e(require("./GraphicOverlay/index.js")),$=e(require("./Specs/index.js")),ee=e(require("./TabsGroup/index.js")),c=e(require("./Listing/BizProductProvider.js")),te=e(require("./Listing/components/PurchaseBar/index.js")),re=e(require("./Listing/components/PurchaseBar/ProductActions/index.js")),oe=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js")),ae=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js")),ie=e(require("./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js")),se=e(require("./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js")),pe=e(require("./Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.js")),fe=e(require("./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js")),de=e(require("./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js")),ce=e(require("./Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js")),ne=e(require("./Listing/components/ProductCard/ProductDetail/ProductBanner/index.js")),ue=e(require("./Listing/components/ProductCard/ProductGridBox.js")),le=e(require("./Listing/components/ProductCard/ProductGallery/index.js")),me=e(require("./Listing/components/ProductCard/ProductSummary/index.js")),xe=e(require("./Listing/components/ProductCard/ProductDetail/BenefitsTab.js")),ye=e(require("./Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.js")),Pe=e(require("./Listing/components/PaidShipping/index.js")),Se=e(require("./Listing/components/CartActionButtons/index.js")),he=require("./NotifyMeDialog/index.js"),Ce=e(require("./Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js")),ge=e(require("./Listing/components/ProductCard/ProductPaidShipping/index.js")),Me=e(require("./GraphicMore/index.js")),Be=e(require("./Features/index.js")),Te=e(require("./AplusDesc/index.js")),ve=e(require("./GiftBox/index.js")),Ie=e(require("./SelectStore/index.js")),De=e(require("./DownLoad/index.js")),je=e(require("./FootCharger/index.js")),Ae=e(require("./BrandCardLink/index.js")),vt=e(require("./IPRedirect/index.js")),be=e(require("./WheelLottery/index.js")),Fe=e(require("./ProductLottery/index.js")),Ge=e(require("./ProductCompare/index.js")),ke=e(require("./Ksp/index.js")),Le=e(require("./ImageTextFeature/index.js")),Oe=e(require("./FeatureCards/index.js")),we=e(require("./FeaturedBlogPosts/index.js")),Ve=e(require("./ImageWithText/index.js")),Ee=e(require("./VideoFeature/index.js")),Ne=e(require("./TabsWithMedia/index.js")),We=e(require("./TabWithImage/index.js")),qe=e(require("./FeatureShowcase/index.js")),Re=e(require("./ProductHero/index.js")),He=e(require("./SpecsComparison/index.js")),ze=e(require("./MediaSceneSwitcher/index.js")),Ke=e(require("./MediaSceneSwitcherV2/index.js")),Ue=e(require("./ThreeDCarousel/index.js")),_e=e(require("./ProductNav/index.js")),Ye=e(require("./AnchorNavigation/index.js")),Je=e(require("./PromotionalBar/index.js")),Qe=e(require("./EventSchedule/index.js")),Xe=e(require("./SecondaryBanner/index.js")),Ze=e(require("./BuyOneGetOneShelf/index.js")),$e=e(require("./ActiveShelf/index.js")),et=e(require("./MediaShelf/index.js")),n=e(require("./CreditsShelf/index.js")),u=e(require("./SceneShelf/index.js")),l=e(require("./SceneShelfV2/index.js")),tt=e(require("./SceneShelfV3/index.js")),rt=e(require("./MediaEndorsement/index.js")),ot=e(require("./MediaTextOverlay/index.js")),at=e(require("./ImageOverlayShelf/index.js")),m=e(require("./AccessoriesShelf/components/AccessoryShelf/index.js")),it=e(require("./ImageTextOverlay/index.js")),st=e(require("./MiniCart/index.js")),pt=e(require("./MiniCart/CircleProgress.js")),x=e(require("./MiniCart/MiniCartDialog.js")),ft=e(require("./WebPushPopup/index.js")),dt=require("../hooks/useEmarsysWebPush.js"),r=require("./CartDetail/index.js"),ct=require("./AiuiProvider/index.js"),nt=e(require("./ModalRegisterSubscribe/index.js")),ut=e(require("./ModalSubscribeConfirm/index.js")),lt=e(require("./ModalCoupon/index.js")),mt=e(require("./ModalSmsSubscribe/index.js")),xt=e(require("./ModalVerify/index.js"));const Bt={"ipc-accordioncards":"AccordionCards","ipc-aplusdesc":"AplusDesc","ipc-banner":"HeroBanner","ipc-brand-equity":"BrandEquity","ipc-category":"Category","ipc-collection-banner":"CollectionBanner","ipc-collection-shelves":"CollectionShelves","ipc-creativemodule":"CreativeModule","ipc-download":"DownLoad","ipc-evaluate":"Evaluate","ipc-faq":"Faq","ipc-features":"Features","ipc-footcharger":"FootCharger","ipc-ga-block":"GraphicAttractionBlock","ipc-giftbox":"GiftBox","ipc-giftshelf":"GiftShelf","ipc-graphic":"Graphic","ipc-graphicmore":"GraphicMore","ipc-graphicoverlay":"GraphicOverlay","ipc-marquee":"Marquee","ipc-mediaplayerbase":"MediaPlayerBase","ipc-mediaplayermulti":"MediaPlayerMulti","ipc-mediaplayersticky":"MediaPlayerSticky","ipc-member-equity":"MemberEquity","ipc-mlg-block":"MultiLayoutGraphicBlock","ipc-search-page-tabs":"SearchPageBlock","ipc-selectstore":"SelectStore","ipc-shelfdisplay":"ShelfDisplay","ipc-shelfdisplay-horizontal":"ShelfDisplayHorizontal","ipc-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"Tabs","ipc-text-marquee":"TextMarquee","ipc-title":"Title","ipc-whychoose":"WhyChoose","ipc-product-nav":"ProductNav","ipc-brand-card-link":"BrandCardLink","ipc-ipredirect":"IPRedirect",ksp:"Ksp","ipc-secondary-banner":"SecondaryBanner","ipc-media-endorsement":"MediaEndorsement","ipc-media-scene-switcher-v2":"MediaSceneSwitcherV2","ipc-featured-blog-posts":"FeaturedBlogPosts","ipc-media-text-overlay":"MediaTextOverlay",ProductCompare:"ProductCompare"};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/biz-components/index.ts"],
|
|
4
|
-
"sourcesContent": ["export {\n AccessoriesProductGrid,\n SectionHeader,\n PromoBanner,\n MainProductArea,\n AddToCartSuccessPopover,\n} from './AccessoriesShelf/index.js'\nexport type {\n UserType,\n BannerConfig,\n BannerAction,\n AddToCartSuccessPopoverProps,\n AddToCartSuccessCopyConfig,\n AddToCartSuccessSemanticName,\n} from './AccessoriesShelf/index.js'\nexport { default as ActivitySchedule } from './ActivitySchedule/index.js'\nexport type { ActivityScheduleProps, ActivityScheduleData, ActivityScheduleItem } from './ActivitySchedule/types.js'\nexport { default as GiftShelf } from './GiftShelf/index.js'\nexport type {\n GiftShelfProps,\n GiftShelfData,\n GiftShelfItem,\n CountdownConfig,\n ResponsiveBackgroundImage as GiftShelfResponsiveBackgroundImage,\n} from './GiftShelf/types.js'\nexport { default as GiftTierShelf } from './GiftTierShelf/index.js'\nexport type { GiftTierShelfProps, GiftTierShelfData, GiftTierItem, GiftTierProduct } from './GiftTierShelf/types.js'\nexport { default as ActivityMechanism } from './ActivityMechanism/index.js'\nexport type {\n ActivityMechanismProps,\n ActivityMechanismItem,\n ActivityMechanismSemanticName,\n ResponsiveBackgroundImage,\n} from './ActivityMechanism/types.js'\nexport { default as BrandEquity } from './BrandEquity/index.js'\nexport { default as MemberEquity } from './MemberEquity/index.js'\nexport { default as Slogan } from './Slogan/index.js'\nexport { default as Title } from './Title/index.js'\nexport { default as Spacer } from './Spacer/index.js'\nexport { default as ShelfDisplay } from './ShelfDisplay/index.js'\nexport { default as ShelfDisplayHorizontal } from './ShelfDisplayHorizontal/index.js'\nexport type {\n ShelfDisplayProps,\n ShelfDisplayType,\n ShelfDisplayItem,\n SocialEndorsementItem,\n} from './ShelfDisplay/shelfDisplay.js'\nexport { default as Evaluate } from './Evaluate/index.js'\nexport { default as Category } from './Category/index.js'\nexport { default as HeroBanner } from './HeroBanner/index.js'\nexport { default as AccordionCards } from './AccordionCards/index.js'\nexport { default as Graphic } from './Graphic/index.js'\nexport { default as MediaPlayerBase } from './MediaPlayerBase/index.js'\nexport { default as MediaPlayerSticky } from './MediaPlayerSticky/index.js'\nexport { default as MediaPlayerMulti } from './MediaPlayerMulti/index.js'\nexport { default as Marquee } from './Marquee/index.js'\nexport { default as MarqueeReview } from './MarqueeReview/index.js'\nexport type { MarqueeReviewProps, MarqueeReviewData, ReviewItem } from './MarqueeReview/index.js'\nexport { default as WhyChoose } from './WhyChoose/index.js'\nexport { default as Faq } from './Faq/index.js'\nexport { MarqueeItem, MarqueeImageContent, MarqueeTextContent } from './Marquee/index.js'\nexport { default as MultiLayoutGraphicBlock } from './MultiLayoutGraphicBlock/index.js'\nexport type { MultiLayoutGraphicBlockProps } from './MultiLayoutGraphicBlock/index.js'\nexport { default as GraphicAttractionBlock } from './GraphicAttractionBlock/index.js'\nexport type { GraphicAttractionBlockProps } from './GraphicAttractionBlock/index.js'\nexport { default as HeaderNavigation } from './HeaderNavigation/index.js'\nexport { default as FooterNavigation } from './FooterNavigation/index.js'\nexport { default as SearchPage } from './SearchPage/index.js'\nexport type { SearchPageProps } from './SearchPage/types.js'\nexport { IPC_SEARCH_PAGE, SearchPageTabType } from './SearchPage/types.js'\n\nexport { withLayout } from '../shared/Styles.js'\nexport { default as AiuiProvider } from './AiuiProvider/index.js'\nexport { default as Tabs } from './Tabs/index.js'\nexport { default as SwiperBox } from './SwiperBox/index.js'\nexport { VideoModal } from './VideoModal/index.js'\nexport { default as CreativeModule } from './CreativeModule/index.js'\nexport { default as GraphicOverlay } from './GraphicOverlay/index.js'\nexport { default as Specs } from './Specs/index.js'\nexport { default as TabGroup } from './TabsGroup/index.js'\n\nexport { default as BizProductProvider, useBizProductContext } from './Listing/BizProductProvider.js'\nexport { default as PurchaseBar } from './Listing/components/PurchaseBar/index.js'\nexport { default as ProductActions } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport type { ProductActionsProps } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport { default as ProductBenefitsTabs } from './Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js'\nexport { default as ProductBenefits } from './Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js'\nexport { default as ProductHighlight } from './Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js'\nexport { default as ProductFreeGift } from './Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js'\nexport { default as ProductFunctionFreeGift } from './Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.js'\nexport type {\n ProductFunctionFreeGiftProps,\n FunctionFreeGiftItem,\n} from './Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift'\n// export { default as ProductExchangePurchase } from './Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js'\nexport { default as ProductOptions } from './Listing/components/ProductCard/ProductDetail/ProductOptions/index.js'\nexport { default as ProductBundle } from './Listing/components/ProductCard/ProductDetail/ProductBundle/index.js'\nexport type {\n ProductBundleProps,\n BundleOption,\n BundleVariantItem,\n} from './Listing/components/ProductCard/ProductDetail/ProductBundle/index.js'\nexport { default as ProductCoupon } from './Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js'\nexport { default as ProductBanner } from './Listing/components/ProductCard/ProductDetail/ProductBanner/index.js'\nexport { default as ProductGridBox } from './Listing/components/ProductCard/ProductGridBox.js'\nexport { default as ProductGallery } from './Listing/components/ProductCard/ProductGallery/index.js'\nexport { default as ProductSummary } from './Listing/components/ProductCard/ProductSummary/index.js'\nexport { default as BenefitsTab } from './Listing/components/ProductCard/ProductDetail/BenefitsTab.js'\nexport { default as PaidShipping } from './Listing/components/PaidShipping/index.js'\nexport { default as CartActionButtons } from './Listing/components/CartActionButtons/index.js'\nexport type { CartActionButtonsProps } from './Listing/components/CartActionButtons/index.js'\nexport { NotifyMeDialog } from './NotifyMeDialog/index.js'\nexport type { NotifyMeDialogProps, CheckboxConfig, SubscriptionMeta } from './NotifyMeDialog/types.js'\nexport { default as ProductServiceBenefits } from './Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js'\nexport type {\n ProductServiceBenefitsProps,\n ServiceBenefitItem,\n} from './Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js'\nexport { default as ProductPaidShipping } from './Listing/components/ProductCard/ProductPaidShipping/index.js'\n\nexport { default as GraphicMore } from './GraphicMore/index.js'\nexport { default as Features } from './Features/index.js'\nexport { default as AplusDesc } from './AplusDesc/index.js'\nexport { default as GiftBox } from './GiftBox/index.js'\nexport { default as SelectStore } from './SelectStore/index.js'\nexport { default as DownLoad } from './DownLoad/index.js'\nexport { default as FootCharger } from './FootCharger/index.js'\nexport { default as BrandCardLink } from './BrandCardLink/index.js'\nexport type { BrandCardLinkProps, BrandCardLinkItemProps } from './BrandCardLink/types.js'\n\nexport * as IPRedirect from './IPRedirect/index.js'\n\nexport { default as WheelLottery } from './WheelLottery/index.js'\nexport type {\n WheelLotteryProps,\n WheelLotteryHandle,\n Prize,\n ChanceMethod,\n WinningInfo,\n UserData,\n} from './WheelLottery/types.js'\nexport { default as ProductLottery } from './ProductLottery/index.js'\nexport type { ProductLotteryProps, ProductLotteryHandle, MediaConfig, CtaButtonConfig } from './ProductLottery/types.js'\nexport { default as ProductCompare } from './ProductCompare/index.js'\nexport type { ProductCompareProps, ProductItemData } from './ProductCompare/index.js'\nexport { default as Ksp } from './Ksp/index.js'\nexport type { KspProps, KspData, KspCardItem } from './Ksp/index.js'\nexport { default as ImageTextFeature } from './ImageTextFeature/index.js'\nexport type { ImageTextFeatureProps, ImageTextFeatureItem } from './ImageTextFeature/index.js'\nexport { default as FeatureCards } from './FeatureCards/index.js'\nexport type { FeatureCardsProps, FeatureCardItem } from './FeatureCards/index.js'\nexport { default as FeaturedBlogPosts } from './FeaturedBlogPosts/index.js'\nexport type {\n FeaturedBlogPostsProps,\n FeaturedBlogPostsData,\n FeaturedBlogPostItem,\n FeaturedBlogPostSpan,\n} from './FeaturedBlogPosts/index.js'\nexport { default as ImageWithText } from './ImageWithText/index.js'\nexport type { ImageWithTextProps } from './ImageWithText/index.js'\nexport { default as VideoFeature } from './VideoFeature/index.js'\nexport type { VideoFeatureProps } from './VideoFeature/index.js'\nexport { default as TabsWithMedia } from './TabsWithMedia/index.js'\nexport type { TabsWithMediaProps, TabItem, TimeIndex } from './TabsWithMedia/index.js'\nexport { default as TabWithImage } from './TabWithImage/index.js'\nexport type { TabWithImageProps, TabWithImageDataItem } from './TabWithImage/index.js'\nexport { default as FeatureShowcase } from './FeatureShowcase/index.js'\nexport type { FeatureShowcaseProps, FeatureShowcaseItem } from './FeatureShowcase/index.js'\nexport { default as ProductHero } from './ProductHero/index.js'\nexport type { ProductHeroProps } from './ProductHero/index.js'\nexport { default as SpecsComparison } from './SpecsComparison/index.js'\nexport type {\n SpecsComparisonProps,\n SpecsComparisonMenuItem,\n SpecsComparisonLeftMenuItem,\n} from './SpecsComparison/index.js'\nexport { default as MediaSceneSwitcher } from './MediaSceneSwitcher/index.js'\nexport type { MediaSceneSwitcherProps } from './MediaSceneSwitcher/types.js'\nexport { default as MediaSceneSwitcherV2 } from './MediaSceneSwitcherV2/index.js'\nexport type {\n MediaSceneSwitcherV2Props,\n MediaSceneSwitcherV2Data,\n MediaSceneSwitcherV2Item,\n MediaSceneSwitcherV2Layout,\n} from './MediaSceneSwitcherV2/index.js'\nexport { default as ThreeDCarousel } from './ThreeDCarousel/index.js'\nexport type { ThreeDCarouselProps } from './ThreeDCarousel/index.js'\nexport { default as ProductNav } from './ProductNav/index.js'\nexport type { ProductNavProps, TabLink, AnchorItem, BuyButton } from './ProductNav/index.js'\nexport { default as AnchorNavigation } from './AnchorNavigation/index.js'\nexport { default as PromotionalBar } from './PromotionalBar/index.js'\nexport { default as EventSchedule } from './EventSchedule/index.js'\nexport { default as SecondaryBanner } from './SecondaryBanner/index.js'\nexport { default as BuyOneGetOneShelf } from './BuyOneGetOneShelf/index.js'\nexport { default as ActiveShelf } from './ActiveShelf/index.js'\nexport { default as MediaShelf } from './MediaShelf/index.js'\nexport { default as CreditsShelf, CreditsProductCard } from './CreditsShelf/index.js'\nexport type {\n CreditsShelfSemanticName,\n CreditsProductCardData,\n CopyConfig as CreditsShelfCopyConfig,\n ButtonFunctionType as CreditsShelfButtonFunctionType,\n} from './CreditsShelf/index.js'\nexport { default as SceneShelf, SceneProductCard } from './SceneShelf/index.js'\nexport type { SceneShelfSemanticName, SceneProductCardData, SceneProductCardSemanticName } from './SceneShelf/index.js'\nexport { default as SceneShelfV2, SceneShelfV2ProductCard } from './SceneShelfV2/index.js'\nexport type {\n SceneShelfV2SemanticName,\n SceneShelfV2Data,\n SceneShelfV2Product,\n SceneShelfV2Props,\n} from './SceneShelfV2/index.js'\nexport { default as SceneShelfV3 } from './SceneShelfV3/index.js'\nexport type { SceneShelfV3Data, SceneShelfV3Props, ProductTab as SceneShelfV3ProductTab } from './SceneShelfV3/index.js'\nexport type {\n SceneShelfV3SemanticName,\n ProductCardData as SceneShelfV3ProductCardData,\n} from './SceneShelfV3/ProductCard.js'\n\nexport { default as MediaEndorsement } from './MediaEndorsement/index.js'\nexport type {\n MediaEndorsementProps,\n MediaEndorsementData,\n MediaEndorsementItem,\n MediaEndorsementSemanticName,\n} from './MediaEndorsement/index.js'\n\nexport { default as MediaTextOverlay } from './MediaTextOverlay/index.js'\nexport type {\n MediaTextOverlayProps,\n MediaTextOverlayData,\n MediaTextOverlayItem,\n MediaTextOverlaySemanticName,\n ResponsiveMedia,\n} from './MediaTextOverlay/index.js'\n\n// Copy configuration types and defaults\nexport type {\n CopyConfig as MediaShelfCopyConfig,\n ButtonFunctionType as MediaShelfButtonFunctionType,\n} from './MediaShelf/types.js'\nexport type { CopyConfig as ActiveShelfCopyConfig, ButtonFunctionType } from './ActiveShelf/types.js'\n\nexport {\n default as ImageOverlayShelf,\n type ButtonFunctionType as ImageOverlayShelfButtonFunctionType,\n} from './ImageOverlayShelf/index.js'\n\nexport { default as AccessoryShelf, AccessoryProductCard } from './AccessoriesShelf/components/AccessoryShelf/index.js'\nexport type {\n AccessoryShelfProps,\n AccessoryProductData,\n AccessoryCardSemanticName,\n AccessoryCopyConfig,\n AccessoryProductCardProps,\n} from './AccessoriesShelf/components/AccessoryShelf'\n\nexport { default as ImageTextOverlay } from './ImageTextOverlay/index.js'\nexport type {\n ImageTextOverlayProps,\n ImageTextOverlayData,\n ImageTextOverlayItem,\n ImageTextOverlaySemanticName,\n ImageTextOverlayBackgroundImage,\n} from './ImageTextOverlay/types.js'\n\n// MiniCart \u7EC4\u4EF6\u53CA\u7C7B\u578B\u5BFC\u51FA\nexport { default as MiniCart } from './MiniCart/index.js'\nexport type { Cart, CartLineItem, MiniCartData, MiniCartProps, CircleProgressConfig } from './MiniCart/index.js'\nexport { default as MiniCartCircleProgress } from './MiniCart/CircleProgress.js'\nexport type { CircleProgressProps as MiniCartCircleProgressProps } from './MiniCart/CircleProgress.js'\nexport { default as MiniCartDialog, MiniCartDialog as MiniCartDialogComponent } from './MiniCart/MiniCartDialog.js'\nexport type {\n MiniCartDialogProps,\n MiniCartDialogCopy,\n MiniCartDialogSemanticName,\n CartData,\n} from './MiniCart/MiniCartDialog.js'\n\n// \u2500\u2500\u2500 Web Push \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport { default as WebPushPopup } from './WebPushPopup/index.js'\nexport type { WebPushPopupProps } from './WebPushPopup/index.js'\nexport { useEmarsysWebPush } from '../hooks/useEmarsysWebPush.js'\nexport type {\n UseEmarsysWebPushOptions,\n UseEmarsysWebPushReturn,\n EmarsysContactInfo,\n EmarsysInitConfig,\n} from '../hooks/useEmarsysWebPush.js'\n\n/**\n * \u7EC4\u4EF6\u6620\u5C04\u5BF9\u8C61\n * \u5C06 CMS block type \u6620\u5C04\u5230\u53EF\u76F4\u63A5\u6E32\u67D3\u7684\u9759\u6001\u7EC4\u4EF6\u540D\u79F0\u3002\n * \u53EA\u6709\u5F00\u7BB1\u5373\u7528\u3001\u65E0\u9700\u6D88\u8D39\u8005\u4E8C\u6B21\u5C01\u88C5\u7684\u7EC4\u4EF6\u624D\u5E94\u52A0\u5165\u6B64\u6620\u5C04\u3002\n */\nexport const PAYLOAD_COMPONENT_MAP = {\n 'ipc-accordioncards': 'AccordionCards',\n 'ipc-aplusdesc': 'AplusDesc',\n 'ipc-banner': 'HeroBanner',\n 'ipc-brand-equity': 'BrandEquity',\n 'ipc-category': 'Category',\n 'ipc-collection-banner': 'CollectionBanner',\n 'ipc-collection-shelves': 'CollectionShelves',\n 'ipc-creativemodule': 'CreativeModule',\n 'ipc-download': 'DownLoad',\n 'ipc-evaluate': 'Evaluate',\n 'ipc-faq': 'Faq',\n 'ipc-features': 'Features',\n 'ipc-footcharger': 'FootCharger',\n 'ipc-ga-block': 'GraphicAttractionBlock',\n 'ipc-giftbox': 'GiftBox',\n 'ipc-giftshelf': 'GiftShelf',\n 'ipc-graphic': 'Graphic',\n 'ipc-graphicmore': 'GraphicMore',\n 'ipc-graphicoverlay': 'GraphicOverlay',\n 'ipc-marquee': 'Marquee',\n 'ipc-mediaplayerbase': 'MediaPlayerBase',\n 'ipc-mediaplayermulti': 'MediaPlayerMulti',\n 'ipc-mediaplayersticky': 'MediaPlayerSticky',\n 'ipc-member-equity': 'MemberEquity',\n 'ipc-mlg-block': 'MultiLayoutGraphicBlock',\n 'ipc-search-page-tabs': 'SearchPageBlock',\n 'ipc-selectstore': 'SelectStore',\n 'ipc-shelfdisplay': 'ShelfDisplay',\n 'ipc-shelfdisplay-horizontal': 'ShelfDisplayHorizontal',\n 'ipc-slogan': 'Slogan',\n 'ipc-spacer': 'Spacer',\n 'ipc-specs': 'Specs',\n 'ipc-tabs': 'Tabs',\n 'ipc-text-marquee': 'TextMarquee',\n 'ipc-title': 'Title',\n 'ipc-whychoose': 'WhyChoose',\n 'ipc-product-nav': 'ProductNav',\n 'ipc-brand-card-link': 'BrandCardLink',\n 'ipc-ipredirect': 'IPRedirect',\n ksp: 'Ksp',\n 'ipc-secondary-banner': 'SecondaryBanner',\n 'ipc-media-endorsement': 'MediaEndorsement',\n 'ipc-media-scene-switcher-v2': 'MediaSceneSwitcherV2',\n 'ipc-featured-blog-posts': 'FeaturedBlogPosts',\n 'ipc-media-text-overlay': 'MediaTextOverlay',\n ProductCompare: 'ProductCompare',\n}\n\n// Cart Components\nexport {\n CartSummaryHeader,\n CartItemRow,\n CartGiftSection,\n CartPerksSection,\n CartThirdPartyBanner,\n CartPriceSummary,\n} from './CartDetail/index.js'\nexport type {\n CartSummaryHeaderProps,\n CartItemRowProps,\n CartGiftSectionProps,\n CartPerksSectionProps,\n CartPerk,\n CartThirdPartyProps,\n GiftOption,\n GiftSlotConfig,\n CartPriceSummaryProps,\n} from './CartDetail/index.js'\n// \u516C\u5F00\u5BFC\u51FA useAiuiContext hook\uFF08\u4F9B Registry \u5206\u53D1\u7684 biz-components \u6D88\u8D39\u8005\u4F7F\u7528\uFF09\nexport { useAiuiContext } from './AiuiProvider/index.js'\n\n// \u516C\u5F00\u5BFC\u51FA ContainerProps\uFF08\u4F9B Registry \u5206\u53D1\u7684 biz-components \u4F7F\u7528\uFF09\nexport type { ContainerProps } from '../shared/Styles.js'\n\n// Modal components\nexport { default as ModalRegisterSubscribe } from './ModalRegisterSubscribe/index.js'\nexport { default as ModalSubscribeConfirm } from './ModalSubscribeConfirm/index.js'\nexport { default as ModalCoupon } from './ModalCoupon/index.js'\nexport { default as ModalSmsSubscribe } from './ModalSmsSubscribe/index.js'\nexport { default as ModalVerify } from './ModalVerify/index.js'\n"],
|
|
5
|
-
"mappings": "skBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,
|
|
6
|
-
"names": ["biz_components_exports", "__export", "IPRedirect", "PAYLOAD_COMPONENT_MAP", "__toCommonJS", "import_AccessoriesShelf", "import_ActivitySchedule", "import_GiftShelf", "import_GiftTierShelf", "import_ActivityMechanism", "import_BrandEquity", "import_MemberEquity", "import_Slogan", "import_Title", "import_Spacer", "import_ShelfDisplay", "import_ShelfDisplayHorizontal", "import_Evaluate", "import_Category", "import_HeroBanner", "import_AccordionCards", "import_Graphic", "import_MediaPlayerBase", "import_MediaPlayerSticky", "import_MediaPlayerMulti", "import_Marquee", "import_MarqueeReview", "import_WhyChoose", "import_Faq", "import_MultiLayoutGraphicBlock", "import_GraphicAttractionBlock", "import_HeaderNavigation", "import_FooterNavigation", "import_SearchPage", "import_types", "import_Styles", "import_AiuiProvider", "import_Tabs", "import_SwiperBox", "import_VideoModal", "import_CreativeModule", "import_GraphicOverlay", "import_Specs", "import_TabsGroup", "import_BizProductProvider", "import_PurchaseBar", "import_ProductActions", "import_ProductBenefitsTabs", "import_ProductBenefits", "import_ProductHighlight", "import_ProductFreeGift", "import_ProductFunctionFreeGift", "import_ProductOptions", "import_ProductBundle", "import_ProductCoupon", "import_ProductBanner", "import_ProductGridBox", "import_ProductGallery", "import_ProductSummary", "import_BenefitsTab", "import_PaidShipping", "import_CartActionButtons", "import_NotifyMeDialog", "import_ProductServiceBenefits", "import_ProductPaidShipping", "import_GraphicMore", "import_Features", "import_AplusDesc", "import_GiftBox", "import_SelectStore", "import_DownLoad", "import_FootCharger", "import_BrandCardLink", "import_WheelLottery", "import_ProductLottery", "import_ProductCompare", "import_Ksp", "import_ImageTextFeature", "import_FeatureCards", "import_FeaturedBlogPosts", "import_ImageWithText", "import_VideoFeature", "import_TabsWithMedia", "import_TabWithImage", "import_FeatureShowcase", "import_ProductHero", "import_SpecsComparison", "import_MediaSceneSwitcher", "import_MediaSceneSwitcherV2", "import_ThreeDCarousel", "import_ProductNav", "import_AnchorNavigation", "import_PromotionalBar", "import_EventSchedule", "import_SecondaryBanner", "import_BuyOneGetOneShelf", "import_ActiveShelf", "import_MediaShelf", "import_CreditsShelf", "import_SceneShelf", "import_SceneShelfV2", "import_SceneShelfV3", "import_MediaEndorsement", "import_MediaTextOverlay", "import_ImageOverlayShelf", "import_AccessoryShelf", "import_ImageTextOverlay", "import_MiniCart", "import_CircleProgress", "import_MiniCartDialog", "import_WebPushPopup", "import_useEmarsysWebPush", "import_CartDetail", "import_ModalRegisterSubscribe", "import_ModalSubscribeConfirm", "import_ModalCoupon", "import_ModalSmsSubscribe", "import_ModalVerify"]
|
|
4
|
+
"sourcesContent": ["export {\n AccessoriesProductGrid,\n SectionHeader,\n PromoBanner,\n MainProductArea,\n AddToCartSuccessPopover,\n} from './AccessoriesShelf/index.js'\nexport type {\n UserType,\n BannerConfig,\n BannerAction,\n AddToCartSuccessPopoverProps,\n AddToCartSuccessCopyConfig,\n AddToCartSuccessSemanticName,\n} from './AccessoriesShelf/index.js'\nexport { default as ActivitySchedule } from './ActivitySchedule/index.js'\nexport type { ActivityScheduleProps, ActivityScheduleData, ActivityScheduleItem } from './ActivitySchedule/types.js'\nexport { default as GiftShelf } from './GiftShelf/index.js'\nexport type {\n GiftShelfProps,\n GiftShelfData,\n GiftShelfItem,\n CountdownConfig,\n ResponsiveBackgroundImage as GiftShelfResponsiveBackgroundImage,\n} from './GiftShelf/types.js'\nexport { default as GiftTierShelf } from './GiftTierShelf/index.js'\nexport type { GiftTierShelfProps, GiftTierShelfData, GiftTierItem, GiftTierProduct } from './GiftTierShelf/types.js'\nexport { default as ActivityMechanism } from './ActivityMechanism/index.js'\nexport type {\n ActivityMechanismProps,\n ActivityMechanismItem,\n ActivityMechanismSemanticName,\n ResponsiveBackgroundImage,\n} from './ActivityMechanism/types.js'\nexport { default as BrandEquity } from './BrandEquity/index.js'\nexport { default as MemberEquity } from './MemberEquity/index.js'\nexport { default as Slogan } from './Slogan/index.js'\nexport { default as Title } from './Title/index.js'\nexport { default as Spacer } from './Spacer/index.js'\nexport { default as ShelfDisplay } from './ShelfDisplay/index.js'\nexport { default as ShelfDisplayHorizontal } from './ShelfDisplayHorizontal/index.js'\nexport type {\n ShelfDisplayProps,\n ShelfDisplayType,\n ShelfDisplayItem,\n SocialEndorsementItem,\n} from './ShelfDisplay/shelfDisplay.js'\nexport { default as Evaluate } from './Evaluate/index.js'\nexport { default as Category } from './Category/index.js'\nexport { default as HeroBanner } from './HeroBanner/index.js'\nexport { default as AccordionCards } from './AccordionCards/index.js'\nexport { default as Graphic } from './Graphic/index.js'\nexport { default as MediaPlayerBase } from './MediaPlayerBase/index.js'\nexport { default as MediaPlayerSticky } from './MediaPlayerSticky/index.js'\nexport { default as MediaPlayerMulti } from './MediaPlayerMulti/index.js'\nexport { default as Marquee } from './Marquee/index.js'\nexport { default as MarqueeReview } from './MarqueeReview/index.js'\nexport type { MarqueeReviewProps, MarqueeReviewData, ReviewItem } from './MarqueeReview/index.js'\nexport { default as WhyChoose } from './WhyChoose/index.js'\nexport { default as Faq } from './Faq/index.js'\nexport { MarqueeItem, MarqueeImageContent, MarqueeTextContent } from './Marquee/index.js'\nexport { default as MultiLayoutGraphicBlock } from './MultiLayoutGraphicBlock/index.js'\nexport type { MultiLayoutGraphicBlockProps } from './MultiLayoutGraphicBlock/index.js'\nexport { default as GraphicAttractionBlock } from './GraphicAttractionBlock/index.js'\nexport type { GraphicAttractionBlockProps } from './GraphicAttractionBlock/index.js'\nexport { default as HeaderNavigation } from './HeaderNavigation/index.js'\nexport { default as FooterNavigation } from './FooterNavigation/index.js'\nexport { default as SearchPage } from './SearchPage/index.js'\nexport type { SearchPageProps } from './SearchPage/types.js'\nexport { IPC_SEARCH_PAGE, SearchPageTabType } from './SearchPage/types.js'\n\nexport { withLayout } from '../shared/Styles.js'\nexport { default as AiuiProvider } from './AiuiProvider/index.js'\nexport { default as Tabs } from './Tabs/index.js'\nexport { default as SwiperBox } from './SwiperBox/index.js'\nexport { VideoModal } from './VideoModal/index.js'\nexport { default as CreativeModule } from './CreativeModule/index.js'\nexport { default as GraphicOverlay } from './GraphicOverlay/index.js'\nexport { default as Specs } from './Specs/index.js'\nexport { default as TabGroup } from './TabsGroup/index.js'\n\nexport { default as BizProductProvider, useBizProductContext } from './Listing/BizProductProvider.js'\nexport { default as PurchaseBar } from './Listing/components/PurchaseBar/index.js'\nexport { default as ProductActions } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport type { ProductActionsProps } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport { default as ProductBenefitsTabs } from './Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js'\nexport { default as ProductBenefits } from './Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js'\nexport { default as ProductHighlight } from './Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js'\nexport { default as ProductFreeGift } from './Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js'\nexport { default as ProductFunctionFreeGift } from './Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.js'\nexport type {\n ProductFunctionFreeGiftProps,\n FunctionFreeGiftItem,\n} from './Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift'\n// export { default as ProductExchangePurchase } from './Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js'\nexport { default as ProductOptions } from './Listing/components/ProductCard/ProductDetail/ProductOptions/index.js'\nexport { default as ProductBundle } from './Listing/components/ProductCard/ProductDetail/ProductBundle/index.js'\nexport type {\n ProductBundleProps,\n BundleOption,\n BundleVariantItem,\n} from './Listing/components/ProductCard/ProductDetail/ProductBundle/index.js'\nexport { default as ProductCoupon } from './Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js'\nexport { default as ProductBanner } from './Listing/components/ProductCard/ProductDetail/ProductBanner/index.js'\nexport { default as ProductGridBox } from './Listing/components/ProductCard/ProductGridBox.js'\nexport { default as ProductGallery } from './Listing/components/ProductCard/ProductGallery/index.js'\nexport { default as ProductSummary } from './Listing/components/ProductCard/ProductSummary/index.js'\nexport { default as BenefitsTab } from './Listing/components/ProductCard/ProductDetail/BenefitsTab.js'\nexport { default as CreditCouponRedeem } from './Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.js'\nexport type {\n CreditCouponRedeemProps,\n CreditCouponRuleData,\n RedeemStatus,\n} from './Listing/components/ProductCard/ProductDetail/CreditCouponRedeem/index.js'\nexport { default as PaidShipping } from './Listing/components/PaidShipping/index.js'\nexport { default as CartActionButtons } from './Listing/components/CartActionButtons/index.js'\nexport type { CartActionButtonsProps } from './Listing/components/CartActionButtons/index.js'\nexport { NotifyMeDialog } from './NotifyMeDialog/index.js'\nexport type { NotifyMeDialogProps, CheckboxConfig, SubscriptionMeta } from './NotifyMeDialog/types.js'\nexport { default as ProductServiceBenefits } from './Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js'\nexport type {\n ProductServiceBenefitsProps,\n ServiceBenefitItem,\n} from './Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js'\nexport { default as ProductPaidShipping } from './Listing/components/ProductCard/ProductPaidShipping/index.js'\n\nexport { default as GraphicMore } from './GraphicMore/index.js'\nexport { default as Features } from './Features/index.js'\nexport { default as AplusDesc } from './AplusDesc/index.js'\nexport { default as GiftBox } from './GiftBox/index.js'\nexport { default as SelectStore } from './SelectStore/index.js'\nexport { default as DownLoad } from './DownLoad/index.js'\nexport { default as FootCharger } from './FootCharger/index.js'\nexport { default as BrandCardLink } from './BrandCardLink/index.js'\nexport type { BrandCardLinkProps, BrandCardLinkItemProps } from './BrandCardLink/types.js'\n\nexport * as IPRedirect from './IPRedirect/index.js'\n\nexport { default as WheelLottery } from './WheelLottery/index.js'\nexport type {\n WheelLotteryProps,\n WheelLotteryHandle,\n Prize,\n ChanceMethod,\n WinningInfo,\n UserData,\n} from './WheelLottery/types.js'\nexport { default as ProductLottery } from './ProductLottery/index.js'\nexport type { ProductLotteryProps, ProductLotteryHandle, MediaConfig, CtaButtonConfig } from './ProductLottery/types.js'\nexport { default as ProductCompare } from './ProductCompare/index.js'\nexport type { ProductCompareProps, ProductItemData } from './ProductCompare/index.js'\nexport { default as Ksp } from './Ksp/index.js'\nexport type { KspProps, KspData, KspCardItem } from './Ksp/index.js'\nexport { default as ImageTextFeature } from './ImageTextFeature/index.js'\nexport type { ImageTextFeatureProps, ImageTextFeatureItem } from './ImageTextFeature/index.js'\nexport { default as FeatureCards } from './FeatureCards/index.js'\nexport type { FeatureCardsProps, FeatureCardItem } from './FeatureCards/index.js'\nexport { default as FeaturedBlogPosts } from './FeaturedBlogPosts/index.js'\nexport type {\n FeaturedBlogPostsProps,\n FeaturedBlogPostsData,\n FeaturedBlogPostItem,\n FeaturedBlogPostSpan,\n} from './FeaturedBlogPosts/index.js'\nexport { default as ImageWithText } from './ImageWithText/index.js'\nexport type { ImageWithTextProps } from './ImageWithText/index.js'\nexport { default as VideoFeature } from './VideoFeature/index.js'\nexport type { VideoFeatureProps } from './VideoFeature/index.js'\nexport { default as TabsWithMedia } from './TabsWithMedia/index.js'\nexport type { TabsWithMediaProps, TabItem, TimeIndex } from './TabsWithMedia/index.js'\nexport { default as TabWithImage } from './TabWithImage/index.js'\nexport type { TabWithImageProps, TabWithImageDataItem } from './TabWithImage/index.js'\nexport { default as FeatureShowcase } from './FeatureShowcase/index.js'\nexport type { FeatureShowcaseProps, FeatureShowcaseItem } from './FeatureShowcase/index.js'\nexport { default as ProductHero } from './ProductHero/index.js'\nexport type { ProductHeroProps } from './ProductHero/index.js'\nexport { default as SpecsComparison } from './SpecsComparison/index.js'\nexport type {\n SpecsComparisonProps,\n SpecsComparisonMenuItem,\n SpecsComparisonLeftMenuItem,\n} from './SpecsComparison/index.js'\nexport { default as MediaSceneSwitcher } from './MediaSceneSwitcher/index.js'\nexport type { MediaSceneSwitcherProps } from './MediaSceneSwitcher/types.js'\nexport { default as MediaSceneSwitcherV2 } from './MediaSceneSwitcherV2/index.js'\nexport type {\n MediaSceneSwitcherV2Props,\n MediaSceneSwitcherV2Data,\n MediaSceneSwitcherV2Item,\n MediaSceneSwitcherV2Layout,\n} from './MediaSceneSwitcherV2/index.js'\nexport { default as ThreeDCarousel } from './ThreeDCarousel/index.js'\nexport type { ThreeDCarouselProps } from './ThreeDCarousel/index.js'\nexport { default as ProductNav } from './ProductNav/index.js'\nexport type { ProductNavProps, TabLink, AnchorItem, BuyButton } from './ProductNav/index.js'\nexport { default as AnchorNavigation } from './AnchorNavigation/index.js'\nexport { default as PromotionalBar } from './PromotionalBar/index.js'\nexport { default as EventSchedule } from './EventSchedule/index.js'\nexport { default as SecondaryBanner } from './SecondaryBanner/index.js'\nexport { default as BuyOneGetOneShelf } from './BuyOneGetOneShelf/index.js'\nexport type { ButtonFunctionType as BuyOneGetOneShelfButtonFunctionType } from './BuyOneGetOneShelf/types.js'\nexport { default as ActiveShelf } from './ActiveShelf/index.js'\nexport { default as MediaShelf } from './MediaShelf/index.js'\nexport { default as CreditsShelf, CreditsProductCard } from './CreditsShelf/index.js'\nexport type {\n CreditsShelfSemanticName,\n CreditsProductCardData,\n CopyConfig as CreditsShelfCopyConfig,\n ButtonFunctionType as CreditsShelfButtonFunctionType,\n} from './CreditsShelf/index.js'\nexport { default as SceneShelf, SceneProductCard } from './SceneShelf/index.js'\nexport type { SceneShelfSemanticName, SceneProductCardData, SceneProductCardSemanticName } from './SceneShelf/index.js'\nexport { default as SceneShelfV2, SceneShelfV2ProductCard } from './SceneShelfV2/index.js'\nexport type {\n SceneShelfV2SemanticName,\n SceneShelfV2Data,\n SceneShelfV2Product,\n SceneShelfV2Props,\n} from './SceneShelfV2/index.js'\nexport { default as SceneShelfV3 } from './SceneShelfV3/index.js'\nexport type { SceneShelfV3Data, SceneShelfV3Props, ProductTab as SceneShelfV3ProductTab } from './SceneShelfV3/index.js'\nexport type {\n SceneShelfV3SemanticName,\n ProductCardData as SceneShelfV3ProductCardData,\n} from './SceneShelfV3/ProductCard.js'\n\nexport { default as MediaEndorsement } from './MediaEndorsement/index.js'\nexport type {\n MediaEndorsementProps,\n MediaEndorsementData,\n MediaEndorsementItem,\n MediaEndorsementSemanticName,\n} from './MediaEndorsement/index.js'\n\nexport { default as MediaTextOverlay } from './MediaTextOverlay/index.js'\nexport type {\n MediaTextOverlayProps,\n MediaTextOverlayData,\n MediaTextOverlayItem,\n MediaTextOverlaySemanticName,\n ResponsiveMedia,\n} from './MediaTextOverlay/index.js'\n\n// Copy configuration types and defaults\nexport type {\n CopyConfig as MediaShelfCopyConfig,\n ButtonFunctionType as MediaShelfButtonFunctionType,\n} from './MediaShelf/types.js'\nexport type { CopyConfig as ActiveShelfCopyConfig, ButtonFunctionType } from './ActiveShelf/types.js'\n\nexport {\n default as ImageOverlayShelf,\n type ButtonFunctionType as ImageOverlayShelfButtonFunctionType,\n} from './ImageOverlayShelf/index.js'\n\nexport { default as AccessoryShelf, AccessoryProductCard } from './AccessoriesShelf/components/AccessoryShelf/index.js'\nexport type {\n AccessoryShelfProps,\n AccessoryProductData,\n AccessoryCardSemanticName,\n AccessoryCopyConfig,\n AccessoryProductCardProps,\n} from './AccessoriesShelf/components/AccessoryShelf'\n\nexport { default as ImageTextOverlay } from './ImageTextOverlay/index.js'\nexport type {\n ImageTextOverlayProps,\n ImageTextOverlayData,\n ImageTextOverlayItem,\n ImageTextOverlaySemanticName,\n ImageTextOverlayBackgroundImage,\n} from './ImageTextOverlay/types.js'\n\n// MiniCart \u7EC4\u4EF6\u53CA\u7C7B\u578B\u5BFC\u51FA\nexport { default as MiniCart } from './MiniCart/index.js'\nexport type { Cart, CartLineItem, MiniCartData, MiniCartProps, CircleProgressConfig } from './MiniCart/index.js'\nexport { default as MiniCartCircleProgress } from './MiniCart/CircleProgress.js'\nexport type { CircleProgressProps as MiniCartCircleProgressProps } from './MiniCart/CircleProgress.js'\nexport { default as MiniCartDialog, MiniCartDialog as MiniCartDialogComponent } from './MiniCart/MiniCartDialog.js'\nexport type {\n MiniCartDialogProps,\n MiniCartDialogCopy,\n MiniCartDialogSemanticName,\n CartData,\n} from './MiniCart/MiniCartDialog.js'\n\n// \u2500\u2500\u2500 Web Push \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport { default as WebPushPopup } from './WebPushPopup/index.js'\nexport type { WebPushPopupProps } from './WebPushPopup/index.js'\nexport { useEmarsysWebPush } from '../hooks/useEmarsysWebPush.js'\nexport type {\n UseEmarsysWebPushOptions,\n UseEmarsysWebPushReturn,\n EmarsysContactInfo,\n EmarsysInitConfig,\n} from '../hooks/useEmarsysWebPush.js'\n\n/**\n * \u7EC4\u4EF6\u6620\u5C04\u5BF9\u8C61\n * \u5C06 CMS block type \u6620\u5C04\u5230\u53EF\u76F4\u63A5\u6E32\u67D3\u7684\u9759\u6001\u7EC4\u4EF6\u540D\u79F0\u3002\n * \u53EA\u6709\u5F00\u7BB1\u5373\u7528\u3001\u65E0\u9700\u6D88\u8D39\u8005\u4E8C\u6B21\u5C01\u88C5\u7684\u7EC4\u4EF6\u624D\u5E94\u52A0\u5165\u6B64\u6620\u5C04\u3002\n */\nexport const PAYLOAD_COMPONENT_MAP = {\n 'ipc-accordioncards': 'AccordionCards',\n 'ipc-aplusdesc': 'AplusDesc',\n 'ipc-banner': 'HeroBanner',\n 'ipc-brand-equity': 'BrandEquity',\n 'ipc-category': 'Category',\n 'ipc-collection-banner': 'CollectionBanner',\n 'ipc-collection-shelves': 'CollectionShelves',\n 'ipc-creativemodule': 'CreativeModule',\n 'ipc-download': 'DownLoad',\n 'ipc-evaluate': 'Evaluate',\n 'ipc-faq': 'Faq',\n 'ipc-features': 'Features',\n 'ipc-footcharger': 'FootCharger',\n 'ipc-ga-block': 'GraphicAttractionBlock',\n 'ipc-giftbox': 'GiftBox',\n 'ipc-giftshelf': 'GiftShelf',\n 'ipc-graphic': 'Graphic',\n 'ipc-graphicmore': 'GraphicMore',\n 'ipc-graphicoverlay': 'GraphicOverlay',\n 'ipc-marquee': 'Marquee',\n 'ipc-mediaplayerbase': 'MediaPlayerBase',\n 'ipc-mediaplayermulti': 'MediaPlayerMulti',\n 'ipc-mediaplayersticky': 'MediaPlayerSticky',\n 'ipc-member-equity': 'MemberEquity',\n 'ipc-mlg-block': 'MultiLayoutGraphicBlock',\n 'ipc-search-page-tabs': 'SearchPageBlock',\n 'ipc-selectstore': 'SelectStore',\n 'ipc-shelfdisplay': 'ShelfDisplay',\n 'ipc-shelfdisplay-horizontal': 'ShelfDisplayHorizontal',\n 'ipc-slogan': 'Slogan',\n 'ipc-spacer': 'Spacer',\n 'ipc-specs': 'Specs',\n 'ipc-tabs': 'Tabs',\n 'ipc-text-marquee': 'TextMarquee',\n 'ipc-title': 'Title',\n 'ipc-whychoose': 'WhyChoose',\n 'ipc-product-nav': 'ProductNav',\n 'ipc-brand-card-link': 'BrandCardLink',\n 'ipc-ipredirect': 'IPRedirect',\n ksp: 'Ksp',\n 'ipc-secondary-banner': 'SecondaryBanner',\n 'ipc-media-endorsement': 'MediaEndorsement',\n 'ipc-media-scene-switcher-v2': 'MediaSceneSwitcherV2',\n 'ipc-featured-blog-posts': 'FeaturedBlogPosts',\n 'ipc-media-text-overlay': 'MediaTextOverlay',\n ProductCompare: 'ProductCompare',\n}\n\n// Cart Components\nexport {\n CartSummaryHeader,\n CartItemRow,\n CartGiftSection,\n CartPerksSection,\n CartThirdPartyBanner,\n CartPriceSummary,\n} from './CartDetail/index.js'\nexport type {\n CartSummaryHeaderProps,\n CartItemRowProps,\n CartGiftSectionProps,\n CartPerksSectionProps,\n CartPerk,\n CartThirdPartyProps,\n GiftOption,\n GiftSlotConfig,\n CartPriceSummaryProps,\n} from './CartDetail/index.js'\n// \u516C\u5F00\u5BFC\u51FA useAiuiContext hook\uFF08\u4F9B Registry \u5206\u53D1\u7684 biz-components \u6D88\u8D39\u8005\u4F7F\u7528\uFF09\nexport { useAiuiContext } from './AiuiProvider/index.js'\n\n// \u516C\u5F00\u5BFC\u51FA ContainerProps\uFF08\u4F9B Registry \u5206\u53D1\u7684 biz-components \u4F7F\u7528\uFF09\nexport type { ContainerProps } from '../shared/Styles.js'\n\n// Modal components\nexport { default as ModalRegisterSubscribe } from './ModalRegisterSubscribe/index.js'\nexport { default as ModalSubscribeConfirm } from './ModalSubscribeConfirm/index.js'\nexport { default as ModalCoupon } from './ModalCoupon/index.js'\nexport { default as ModalSmsSubscribe } from './ModalSmsSubscribe/index.js'\nexport { default as ModalVerify } from './ModalVerify/index.js'\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["biz_components_exports", "__export", "IPRedirect", "PAYLOAD_COMPONENT_MAP", "__toCommonJS", "import_AccessoriesShelf", "import_ActivitySchedule", "import_GiftShelf", "import_GiftTierShelf", "import_ActivityMechanism", "import_BrandEquity", "import_MemberEquity", "import_Slogan", "import_Title", "import_Spacer", "import_ShelfDisplay", "import_ShelfDisplayHorizontal", "import_Evaluate", "import_Category", "import_HeroBanner", "import_AccordionCards", "import_Graphic", "import_MediaPlayerBase", "import_MediaPlayerSticky", "import_MediaPlayerMulti", "import_Marquee", "import_MarqueeReview", "import_WhyChoose", "import_Faq", "import_MultiLayoutGraphicBlock", "import_GraphicAttractionBlock", "import_HeaderNavigation", "import_FooterNavigation", "import_SearchPage", "import_types", "import_Styles", "import_AiuiProvider", "import_Tabs", "import_SwiperBox", "import_VideoModal", "import_CreativeModule", "import_GraphicOverlay", "import_Specs", "import_TabsGroup", "import_BizProductProvider", "import_PurchaseBar", "import_ProductActions", "import_ProductBenefitsTabs", "import_ProductBenefits", "import_ProductHighlight", "import_ProductFreeGift", "import_ProductFunctionFreeGift", "import_ProductOptions", "import_ProductBundle", "import_ProductCoupon", "import_ProductBanner", "import_ProductGridBox", "import_ProductGallery", "import_ProductSummary", "import_BenefitsTab", "import_CreditCouponRedeem", "import_PaidShipping", "import_CartActionButtons", "import_NotifyMeDialog", "import_ProductServiceBenefits", "import_ProductPaidShipping", "import_GraphicMore", "import_Features", "import_AplusDesc", "import_GiftBox", "import_SelectStore", "import_DownLoad", "import_FootCharger", "import_BrandCardLink", "import_WheelLottery", "import_ProductLottery", "import_ProductCompare", "import_Ksp", "import_ImageTextFeature", "import_FeatureCards", "import_FeaturedBlogPosts", "import_ImageWithText", "import_VideoFeature", "import_TabsWithMedia", "import_TabWithImage", "import_FeatureShowcase", "import_ProductHero", "import_SpecsComparison", "import_MediaSceneSwitcher", "import_MediaSceneSwitcherV2", "import_ThreeDCarousel", "import_ProductNav", "import_AnchorNavigation", "import_PromotionalBar", "import_EventSchedule", "import_SecondaryBanner", "import_BuyOneGetOneShelf", "import_ActiveShelf", "import_MediaShelf", "import_CreditsShelf", "import_SceneShelf", "import_SceneShelfV2", "import_SceneShelfV3", "import_MediaEndorsement", "import_MediaTextOverlay", "import_ImageOverlayShelf", "import_AccessoryShelf", "import_ImageTextOverlay", "import_MiniCart", "import_CircleProgress", "import_MiniCartDialog", "import_WebPushPopup", "import_useEmarsysWebPush", "import_CartDetail", "import_ModalRegisterSubscribe", "import_ModalSubscribeConfirm", "import_ModalCoupon", "import_ModalSmsSubscribe", "import_ModalVerify"]
|
|
7
7
|
}
|
|
@@ -25,6 +25,8 @@ export interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
25
25
|
onLearnMore?: (product: ProductCardData, selectedGifts: FreeGift[]) => void;
|
|
26
26
|
/** Shop Now 点击回调 */
|
|
27
27
|
onShopNow?: (product: ProductCardData, selectedGifts: FreeGift[]) => void;
|
|
28
|
+
/** 加入购物车回调 */
|
|
29
|
+
onAddToCart?: (product: ProductCardData, selectedGifts: FreeGift[]) => void;
|
|
28
30
|
/** 赠品点击回调 */
|
|
29
31
|
onGiftClick?: (gift: FreeGift, selectedGifts: FreeGift[]) => void;
|
|
30
32
|
/** 赠品选择变化回调 */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as c,jsxs as w}from"react/jsx-runtime";import*as i from"react";import{cn as y}from"../../helpers/index.js";import Q from"./ProductImage.js";import U from"./ProductInfo.js";import X from"./GiftSelection.js";import Y from"./PriceAndActions.js";import{BuyOneGetOneShelfContext as Z}from"./context.js";const k=i.forwardRef(({productData:e,gifts:t=[],giftType:a=1,selectedGiftSku:F,sceneImages:g,tags:v,layout:N,className:L,onProductClick:p,onProductImageClick:h,onLearnMore:M,onShopNow:O,onAddToCart:T,onGiftClick:G,onGiftSelectionChange:I,classNames:P,soldOutText:B,renderOriginalPrice:R,...H},A)=>{const{layout:j,theme:z}=i.useContext(Z),f=N??j,[E,W]=i.useState(!1),[V,_]=i.useState(!1),[b,s]=i.useState(()=>!t||t.length===0?[]:a===2?t.map(r=>r.id):[t[0].id]),m=i.useMemo(()=>t?t.map(r=>({...r,selected:b.includes(r.id)})):[],[t,b]);i.useEffect(()=>{if(!t||t.length===0){s([]);return}s(a===2?t.map(r=>r.id):r=>{const o=r[0];return o&&t.some(l=>l.id===o)?[o]:[t[0].id]})},[t,a]);const d=i.useMemo(()=>({...e,gifts:t,gift_type:a}),[e,t,a]),$=r=>{if(a===2){const o=m.filter(n=>n.selected);G?.(r,o);return}s(()=>{const o=[r.id],n=t?.filter(l=>o.includes(l.id))||[];return G?.(r,n),I?.(n,d),o})},u=!!(h??p),S=`/products/${e.handle}`,x=()=>{(h??p)?.(d)},C=async(r,o)=>{const n=m.filter(K=>K.selected),l=o==="primary"?_:W;l(!0);try{switch(r){case"buyNow":await O?.(d,n);break;case"addCart":await T?.(d,n);break;case"learnMore":await M?.(d,n);break}}finally{l(!1)}},q=e.learnMoreFun??"learnMore",J=e.shopNowFun??"buyNow";return w("div",{ref:A,className:y("bg-container-primary rounded-box flex items-stretch overflow-hidden",f==="horizontal"?["laptop:flex-row lg-desktop:min-h-[560px] desktop:min-h-[448px] tablet:min-h-[526px] min-h-[610px] flex-col","laptop:col-span-2"]:["flex-col justify-between"],L),...H,children:[c(Q,{images:g,name:e.name,layout:f,tags:e.tags||v,onClick:u?x:void 0,href:u?void 0:S}),c("div",{className:y("bg-container-primary desktop:p-6 flex flex-col justify-between p-4",f==="horizontal"?["rounded-r-box laptop:rounded-r-box tablet:rounded-b-box tablet:rounded-l-none","laptop:basis-[39.1%]","desktop:basis-[42.1%]","lg-desktop:basis-[42.1%]","shrink-0"]:["rounded-b-box","w-full","grow"]),children:w("div",{className:"flex flex-1 flex-col justify-between gap-6",children:[c(U,{name:e.name,onClick:u?x:void 0,href:u?void 0:S,description:e.description,classNames:P}),c(X,{freeGiftLabel:e.freeGiftLabel,freeGifts:m,onGiftClick:$,giftType:a,selectedGiftSku:F,theme:z}),c(Y,{currentPrice:e.currentPrice??"",originalPrice:e.originalPrice,priceLabel:e.priceLabel,learnMoreText:e.learnMoreText,shopNowText:e.shopNowText,soldOutText:B,onLearnMore:()=>C(q,"secondary"),onShopNow:()=>C(J,"primary"),availableForSale:e.availableForSale,learnMoreLoading:E,shopNowLoading:V,trackingTitle:e.name,trackingDescription:e.description,trackingSku:e.sku,classNames:P,renderOriginalPrice:R})]})})]})});k.displayName="BuyOneGetOneShelf.ProductCard";var ie=k;export{ie as default};
|
|
2
2
|
//# sourceMappingURL=ProductCard.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/biz-components/BuyOneGetOneShelf/ProductCard.tsx"],
|
|
4
|
-
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport ProductImage from './ProductImage.js'\nimport ProductInfo from './ProductInfo.js'\nimport GiftSelection from './GiftSelection.js'\nimport PriceAndActions from './PriceAndActions.js'\nimport { BuyOneGetOneShelfContext } from './context.js'\nimport type {\n FreeGift,\n FreeGiftWithSelection,\n ProductCardData,\n PureProductData,\n ProductTag,\n BuyOneGetOneShelfProductCardSemanticName,\n} from './types.js'\n\nexport interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4EA7\u54C1\u6570\u636E\uFF08\u4E0D\u5305\u542B\u8D60\u54C1\u4FE1\u606F\uFF09 */\n productData: PureProductData\n /** \u8D60\u54C1\u5217\u8868 */\n gifts?: FreeGift[]\n /** \u8D60\u54C1\u7C7B\u578B 1-> \u8D60\u9001\u5176\u4E2D\u4E00\u4E2A\u8D60\u54C1\uFF0C 2 -> \u8D60\u9001\u6240\u6709\u8D60\u54C1 */\n giftType?: 1 | 2\n /** \u573A\u666F\u56FE\u7247 */\n sceneImages: any\n /** \u4EA7\u54C1\u6807\u7B7E */\n tags?: ProductTag[]\n /** \u5F53\u524D\u9009\u4E2D\u7684\u8D60\u54C1SKU\uFF08\u53D7\u63A7\u7EC4\u4EF6\uFF09 */\n selectedGiftSku?: string\n /** @deprecated Layout is now automatically inferred by Root based on children count. */\n layout?: 'horizontal' | 'vertical'\n classNames?: Partial<Record<BuyOneGetOneShelfProductCardSemanticName, string>>\n soldOutText?: string\n /** @deprecated Use `onProductImageClick` instead. */\n onProductClick?: (product: ProductCardData) => void\n /** \u4EA7\u54C1\u56FE\u7247\u70B9\u51FB\u56DE\u8C03 */\n onProductImageClick?: (product: ProductCardData) => void\n /** Learn More \u70B9\u51FB\u56DE\u8C03 */\n onLearnMore?: (product: ProductCardData, selectedGifts: FreeGift[]) => void\n /** Shop Now \u70B9\u51FB\u56DE\u8C03 */\n onShopNow?: (product: ProductCardData, selectedGifts: FreeGift[]) => void\n /** \u8D60\u54C1\u70B9\u51FB\u56DE\u8C03 */\n onGiftClick?: (gift: FreeGift, selectedGifts: FreeGift[]) => void\n /** \u8D60\u54C1\u9009\u62E9\u53D8\u5316\u56DE\u8C03 */\n onGiftSelectionChange?: (selectedGifts: FreeGift[], product: ProductCardData) => void\n /** \u9009\u4E2D\u8D60\u54C1SKU\u53D8\u5316\u56DE\u8C03\uFF08\u53D7\u63A7\u7EC4\u4EF6\uFF09 */\n onSelectedGiftSkuChange?: (selectedSku: string | null) => void\n /**\n * \u539F\u4EF7\u533A\u57DF\u6E32\u67D3\u51FD\u6570\uFF0C\u7528\u4E8E\u5728\u539F\u4EF7\u4F4D\u7F6E\u5C55\u793A\u81EA\u5B9A\u4E49\u5185\u5BB9\uFF08\u5982 Save \u91D1\u989D\u6587\u6848\uFF09\u3002\n * \u4E0D\u4F20\u65F6\u4F7F\u7528\u9ED8\u8BA4\u7684\u539F\u4EF7\u6E32\u67D3\uFF08\u5212\u7EBF\u4EF7\uFF09\u3002\n * @param originalPrice - \u683C\u5F0F\u5316\u540E\u7684\u539F\u4EF7\u6587\u672C\n */\n renderOriginalPrice?: (originalPrice: string | undefined) => React.ReactNode\n}\n\n/**\n * ProductCard - \u4E70\u8D60\u8D27\u67B6\u4EA7\u54C1\u5361\u7247\n *\n * @description \u7528\u4E8E\u4E70\u4E00\u8D60\u4E00\u6D3B\u52A8\u7684\u4EA7\u54C1\u5C55\u793A\u5361\u7247\uFF0C\u5DE6\u4FA7\u5C55\u793A\u4EA7\u54C1\u56FE\u7247\u548C\u6807\u7B7E\uFF0C\u53F3\u4FA7\u5C55\u793A\u4EA7\u54C1\u4FE1\u606F\u3001\u8D60\u54C1\u548C\u8D2D\u4E70\u6309\u94AE\n */\nconst ProductCard = React.forwardRef<HTMLDivElement, ProductCardProps>(\n (\n {\n productData,\n gifts = [],\n giftType = 1,\n selectedGiftSku,\n sceneImages,\n tags,\n layout: layoutProp,\n className,\n onProductClick,\n onProductImageClick,\n onLearnMore,\n onShopNow,\n onGiftClick,\n onGiftSelectionChange,\n classNames,\n soldOutText,\n renderOriginalPrice,\n ...props\n },\n ref\n ) => {\n const { layout: contextLayout, theme } = React.useContext(BuyOneGetOneShelfContext)\n const layout = layoutProp ?? contextLayout\n\n const [learnMoreLoading, setLearnMoreLoading] = React.useState(false)\n const [shopNowLoading, setShopNowLoading] = React.useState(false)\n\n // \u5185\u90E8\u72B6\u6001\u7BA1\u7406\u8D60\u54C1\u7684\u9009\u62E9\u72B6\u6001 - \u4F7F\u7528\u9009\u4E2D\u7684ID\u6570\u7EC4\u800C\u4E0D\u662F\u4FEE\u6539gift\u5BF9\u8C61\n const [selectedGiftIds, setSelectedGiftIds] = React.useState<string[]>(() => {\n if (!gifts || gifts.length === 0) return []\n\n if (giftType === 2) {\n // gift_type 2 (\u5168\u9009\u6A21\u5F0F) - \u9009\u4E2D\u6240\u6709\u8D60\u54C1\n return gifts.map((gift: FreeGift) => gift.id)\n } else {\n // gift_type 1 (\u5355\u9009\u6A21\u5F0F) - \u9ED8\u8BA4\u9009\u4E2D\u7B2C\u4E00\u4E2A\u8D60\u54C1\n return [gifts[0].id]\n }\n })\n\n // \u751F\u6210\u5E26\u6709\u9009\u62E9\u72B6\u6001\u7684\u8D60\u54C1\u5217\u8868\u7528\u4E8E\u6E32\u67D3\n const giftsWithSelection = React.useMemo(() => {\n if (!gifts) return []\n\n return gifts.map((gift: FreeGift) => ({\n ...gift,\n selected: selectedGiftIds.includes(gift.id),\n }))\n }, [gifts, selectedGiftIds])\n\n // \u5F53 gifts \u6216 giftType \u66F4\u65B0\u65F6\uFF0C\u540C\u6B65\u66F4\u65B0\u5185\u90E8\u72B6\u6001\n React.useEffect(() => {\n if (!gifts || gifts.length === 0) {\n setSelectedGiftIds([])\n return\n }\n\n if (giftType === 2) {\n // gift_type 2 (\u5168\u9009\u6A21\u5F0F) - \u9009\u4E2D\u6240\u6709\u8D60\u54C1\n setSelectedGiftIds(gifts.map((gift: FreeGift) => gift.id))\n } else {\n // gift_type 1 (\u5355\u9009\u6A21\u5F0F) - \u667A\u80FD\u72B6\u6001\u7BA1\u7406\n setSelectedGiftIds(prevSelectedIds => {\n // \u68C0\u67E5\u5F53\u524D\u9009\u4E2D\u7684\u793C\u54C1\u662F\u5426\u4ECD\u7136\u5B58\u5728\u4E8E\u65B0\u7684 gifts \u5217\u8868\u4E2D\n const currentSelectedId = prevSelectedIds[0]\n const isCurrentSelectionValid =\n currentSelectedId && gifts.some((gift: FreeGift) => gift.id === currentSelectedId)\n\n // \u5982\u679C\u5F53\u524D\u9009\u4E2D\u72B6\u6001\u4ECD\u7136\u6709\u6548\uFF0C\u4FDD\u6301\u4E0D\u53D8\uFF1B\u5426\u5219\u9ED8\u8BA4\u9009\u4E2D\u7B2C\u4E00\u4E2A\n return isCurrentSelectionValid ? [currentSelectedId] : [gifts[0].id]\n })\n }\n }, [gifts, giftType])\n\n // \u6784\u9020\u5B8C\u6574\u7684\u4EA7\u54C1\u6570\u636E\u7528\u4E8E\u56DE\u8C03\n const fullProductData: ProductCardData = React.useMemo(\n () => ({\n ...productData,\n gifts,\n gift_type: giftType,\n }),\n [productData, gifts, giftType]\n )\n\n const handleGiftClick = (gift: FreeGift) => {\n // gift_type 2 (\u5168\u9009\u6A21\u5F0F) - \u4E0D\u5141\u8BB8\u53D6\u6D88\u9009\u62E9\uFF0C\u76F4\u63A5\u8FD4\u56DE\n if (giftType === 2) {\n // \u83B7\u53D6\u5F53\u524D\u6240\u6709\u9009\u4E2D\u7684gifts\u4F5C\u4E3A\u7B2C\u4E8C\u4E2A\u53C2\u6570\n const currentSelectedGifts = giftsWithSelection.filter((g: FreeGiftWithSelection) => g.selected)\n onGiftClick?.(gift, currentSelectedGifts)\n return\n }\n\n // gift_type 1 (\u5355\u9009\u6A21\u5F0F)\n setSelectedGiftIds(() => {\n const newSelectedIds = [gift.id] // \u5355\u9009\uFF1A\u59CB\u7EC8\u9009\u4E2D\u5F53\u524D\u9879\uFF0C\u70B9\u51FB\u5DF2\u9009\u4E2D\u9879\u4FDD\u6301\u72B6\u6001\uFF0C\u70B9\u51FB\u672A\u9009\u4E2D\u9879\u5207\u6362\u5230\u8BE5\u9879\n\n // \u8BA1\u7B97\u65B0\u7684\u9009\u4E2Dgifts\u4F5C\u4E3A\u7B2C\u4E8C\u4E2A\u53C2\u6570\u4F20\u9012\u7ED9\u56DE\u8C03\n const newSelectedGifts = gifts?.filter((g: FreeGift) => newSelectedIds.includes(g.id)) || []\n\n // \u8C03\u7528\u56DE\u8C03\u51FD\u6570\uFF0C\u7B2C\u4E8C\u4E2A\u53C2\u6570\u662F\u5F53\u524D\u9009\u4E2D\u7684gifts\n onGiftClick?.(gift, newSelectedGifts)\n onGiftSelectionChange?.(newSelectedGifts, fullProductData)\n\n return newSelectedIds\n })\n }\n\n const hasClickHandler = !!(onProductImageClick ?? onProductClick)\n const productHref = `/products/${productData.handle}`\n\n const handleProductImageClick = () => {\n const callback = onProductImageClick ?? onProductClick\n callback?.(fullProductData)\n }\n\n const handleLearnMoreClick = async () => {\n const selectedGifts = giftsWithSelection.filter(gift => gift.selected)\n setLearnMoreLoading(true)\n try {\n await onLearnMore?.(fullProductData, selectedGifts)\n } finally {\n setLearnMoreLoading(false)\n }\n }\n\n const handleShopNowClick = async () => {\n const selectedGifts = giftsWithSelection.filter(gift => gift.selected)\n setShopNowLoading(true)\n try {\n await onShopNow?.(fullProductData, selectedGifts)\n } finally {\n setShopNowLoading(false)\n }\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-primary rounded-box flex items-stretch overflow-hidden',\n // \u6839\u636E\u5E03\u5C40\u6A21\u5F0F\u8C03\u6574\u5BB9\u5668\n layout === 'horizontal'\n ? [\n 'laptop:flex-row lg-desktop:min-h-[560px] desktop:min-h-[448px] tablet:min-h-[526px] min-h-[610px] flex-col',\n 'laptop:col-span-2',\n ]\n : ['flex-col justify-between'],\n className\n )}\n {...props}\n >\n {/* \u4EA7\u54C1\u56FE\u7247\u533A\u57DF */}\n <ProductImage\n images={sceneImages}\n name={productData.name}\n layout={layout}\n tags={productData.tags || tags}\n onClick={hasClickHandler ? handleProductImageClick : undefined}\n href={hasClickHandler ? undefined : productHref}\n />\n\n {/* \u4EA7\u54C1\u4FE1\u606F\u533A\u57DF */}\n <div\n className={cn(\n 'bg-container-primary desktop:p-6 flex flex-col justify-between p-4',\n // \u6839\u636E\u5E03\u5C40\u6A21\u5F0F\u8C03\u6574\u5706\u89D2\u548C\u5C3A\u5BF8\n layout === 'horizontal'\n ? [\n 'rounded-r-box laptop:rounded-r-box tablet:rounded-b-box tablet:rounded-l-none',\n // \u4F7F\u7528 flex-basis \u8BBE\u7F6E\u5BBD\u5EA6\u6BD4\u4F8B\n 'laptop:basis-[39.1%]', // 360px / 921px \u2248 39.1%\n 'desktop:basis-[42.1%]', // 552px / 1312px \u2248 42.1%\n 'lg-desktop:basis-[42.1%]', // 700px / 1664px \u2248 42.1%\n 'shrink-0',\n ]\n : ['rounded-b-box', 'w-full', 'grow']\n )}\n >\n <div className=\"flex flex-1 flex-col justify-between gap-6\">\n {/* \u4EA7\u54C1\u6807\u9898\u548C\u63CF\u8FF0 */}\n <ProductInfo\n name={productData.name}\n onClick={hasClickHandler ? handleProductImageClick : undefined}\n href={hasClickHandler ? undefined : productHref}\n description={productData.description}\n classNames={classNames}\n />\n\n {/* \u514D\u8D39\u8D60\u54C1\u533A\u57DF */}\n <GiftSelection\n freeGiftLabel={productData.freeGiftLabel}\n freeGifts={giftsWithSelection}\n onGiftClick={handleGiftClick}\n giftType={giftType}\n selectedGiftSku={selectedGiftSku}\n theme={theme}\n />\n <PriceAndActions\n currentPrice={productData.currentPrice ?? ''}\n originalPrice={productData.originalPrice}\n priceLabel={productData.priceLabel}\n learnMoreText={productData.learnMoreText}\n shopNowText={productData.shopNowText}\n soldOutText={soldOutText}\n onLearnMore={handleLearnMoreClick}\n onShopNow={handleShopNowClick}\n availableForSale={productData.availableForSale}\n learnMoreLoading={learnMoreLoading}\n shopNowLoading={shopNowLoading}\n trackingTitle={productData.name}\n trackingDescription={productData.description}\n trackingSku={productData.sku}\n classNames={classNames}\n renderOriginalPrice={renderOriginalPrice}\n />\n </div>\n </div>\n </div>\n )\n }\n)\n\nProductCard.displayName = 'BuyOneGetOneShelf.ProductCard'\n\nexport default ProductCard\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["jsx", "jsxs", "React", "cn", "ProductImage", "ProductInfo", "GiftSelection", "PriceAndActions", "BuyOneGetOneShelfContext", "ProductCard", "productData", "gifts", "giftType", "selectedGiftSku", "sceneImages", "tags", "layoutProp", "className", "onProductClick", "onProductImageClick", "onLearnMore", "onShopNow", "onGiftClick", "onGiftSelectionChange", "classNames", "soldOutText", "renderOriginalPrice", "props", "ref", "contextLayout", "theme", "layout", "learnMoreLoading", "setLearnMoreLoading", "shopNowLoading", "setShopNowLoading", "selectedGiftIds", "setSelectedGiftIds", "gift", "giftsWithSelection", "prevSelectedIds", "currentSelectedId", "fullProductData", "handleGiftClick", "currentSelectedGifts", "g", "newSelectedIds", "newSelectedGifts", "hasClickHandler", "productHref", "handleProductImageClick", "
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport ProductImage from './ProductImage.js'\nimport ProductInfo from './ProductInfo.js'\nimport GiftSelection from './GiftSelection.js'\nimport PriceAndActions from './PriceAndActions.js'\nimport { BuyOneGetOneShelfContext } from './context.js'\nimport type {\n FreeGift,\n FreeGiftWithSelection,\n ProductCardData,\n PureProductData,\n ProductTag,\n ButtonFunctionType,\n BuyOneGetOneShelfProductCardSemanticName,\n} from './types.js'\n\nexport interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4EA7\u54C1\u6570\u636E\uFF08\u4E0D\u5305\u542B\u8D60\u54C1\u4FE1\u606F\uFF09 */\n productData: PureProductData\n /** \u8D60\u54C1\u5217\u8868 */\n gifts?: FreeGift[]\n /** \u8D60\u54C1\u7C7B\u578B 1-> \u8D60\u9001\u5176\u4E2D\u4E00\u4E2A\u8D60\u54C1\uFF0C 2 -> \u8D60\u9001\u6240\u6709\u8D60\u54C1 */\n giftType?: 1 | 2\n /** \u573A\u666F\u56FE\u7247 */\n sceneImages: any\n /** \u4EA7\u54C1\u6807\u7B7E */\n tags?: ProductTag[]\n /** \u5F53\u524D\u9009\u4E2D\u7684\u8D60\u54C1SKU\uFF08\u53D7\u63A7\u7EC4\u4EF6\uFF09 */\n selectedGiftSku?: string\n /** @deprecated Layout is now automatically inferred by Root based on children count. */\n layout?: 'horizontal' | 'vertical'\n classNames?: Partial<Record<BuyOneGetOneShelfProductCardSemanticName, string>>\n soldOutText?: string\n /** @deprecated Use `onProductImageClick` instead. */\n onProductClick?: (product: ProductCardData) => void\n /** \u4EA7\u54C1\u56FE\u7247\u70B9\u51FB\u56DE\u8C03 */\n onProductImageClick?: (product: ProductCardData) => void\n /** Learn More \u70B9\u51FB\u56DE\u8C03 */\n onLearnMore?: (product: ProductCardData, selectedGifts: FreeGift[]) => void\n /** Shop Now \u70B9\u51FB\u56DE\u8C03 */\n onShopNow?: (product: ProductCardData, selectedGifts: FreeGift[]) => void\n /** \u52A0\u5165\u8D2D\u7269\u8F66\u56DE\u8C03 */\n onAddToCart?: (product: ProductCardData, selectedGifts: FreeGift[]) => void\n /** \u8D60\u54C1\u70B9\u51FB\u56DE\u8C03 */\n onGiftClick?: (gift: FreeGift, selectedGifts: FreeGift[]) => void\n /** \u8D60\u54C1\u9009\u62E9\u53D8\u5316\u56DE\u8C03 */\n onGiftSelectionChange?: (selectedGifts: FreeGift[], product: ProductCardData) => void\n /** \u9009\u4E2D\u8D60\u54C1SKU\u53D8\u5316\u56DE\u8C03\uFF08\u53D7\u63A7\u7EC4\u4EF6\uFF09 */\n onSelectedGiftSkuChange?: (selectedSku: string | null) => void\n /**\n * \u539F\u4EF7\u533A\u57DF\u6E32\u67D3\u51FD\u6570\uFF0C\u7528\u4E8E\u5728\u539F\u4EF7\u4F4D\u7F6E\u5C55\u793A\u81EA\u5B9A\u4E49\u5185\u5BB9\uFF08\u5982 Save \u91D1\u989D\u6587\u6848\uFF09\u3002\n * \u4E0D\u4F20\u65F6\u4F7F\u7528\u9ED8\u8BA4\u7684\u539F\u4EF7\u6E32\u67D3\uFF08\u5212\u7EBF\u4EF7\uFF09\u3002\n * @param originalPrice - \u683C\u5F0F\u5316\u540E\u7684\u539F\u4EF7\u6587\u672C\n */\n renderOriginalPrice?: (originalPrice: string | undefined) => React.ReactNode\n}\n\n/**\n * ProductCard - \u4E70\u8D60\u8D27\u67B6\u4EA7\u54C1\u5361\u7247\n *\n * @description \u7528\u4E8E\u4E70\u4E00\u8D60\u4E00\u6D3B\u52A8\u7684\u4EA7\u54C1\u5C55\u793A\u5361\u7247\uFF0C\u5DE6\u4FA7\u5C55\u793A\u4EA7\u54C1\u56FE\u7247\u548C\u6807\u7B7E\uFF0C\u53F3\u4FA7\u5C55\u793A\u4EA7\u54C1\u4FE1\u606F\u3001\u8D60\u54C1\u548C\u8D2D\u4E70\u6309\u94AE\n */\nconst ProductCard = React.forwardRef<HTMLDivElement, ProductCardProps>(\n (\n {\n productData,\n gifts = [],\n giftType = 1,\n selectedGiftSku,\n sceneImages,\n tags,\n layout: layoutProp,\n className,\n onProductClick,\n onProductImageClick,\n onLearnMore,\n onShopNow,\n onAddToCart,\n onGiftClick,\n onGiftSelectionChange,\n classNames,\n soldOutText,\n renderOriginalPrice,\n ...props\n },\n ref\n ) => {\n const { layout: contextLayout, theme } = React.useContext(BuyOneGetOneShelfContext)\n const layout = layoutProp ?? contextLayout\n\n const [learnMoreLoading, setLearnMoreLoading] = React.useState(false)\n const [shopNowLoading, setShopNowLoading] = React.useState(false)\n\n // \u5185\u90E8\u72B6\u6001\u7BA1\u7406\u8D60\u54C1\u7684\u9009\u62E9\u72B6\u6001 - \u4F7F\u7528\u9009\u4E2D\u7684ID\u6570\u7EC4\u800C\u4E0D\u662F\u4FEE\u6539gift\u5BF9\u8C61\n const [selectedGiftIds, setSelectedGiftIds] = React.useState<string[]>(() => {\n if (!gifts || gifts.length === 0) return []\n\n if (giftType === 2) {\n // gift_type 2 (\u5168\u9009\u6A21\u5F0F) - \u9009\u4E2D\u6240\u6709\u8D60\u54C1\n return gifts.map((gift: FreeGift) => gift.id)\n } else {\n // gift_type 1 (\u5355\u9009\u6A21\u5F0F) - \u9ED8\u8BA4\u9009\u4E2D\u7B2C\u4E00\u4E2A\u8D60\u54C1\n return [gifts[0].id]\n }\n })\n\n // \u751F\u6210\u5E26\u6709\u9009\u62E9\u72B6\u6001\u7684\u8D60\u54C1\u5217\u8868\u7528\u4E8E\u6E32\u67D3\n const giftsWithSelection = React.useMemo(() => {\n if (!gifts) return []\n\n return gifts.map((gift: FreeGift) => ({\n ...gift,\n selected: selectedGiftIds.includes(gift.id),\n }))\n }, [gifts, selectedGiftIds])\n\n // \u5F53 gifts \u6216 giftType \u66F4\u65B0\u65F6\uFF0C\u540C\u6B65\u66F4\u65B0\u5185\u90E8\u72B6\u6001\n React.useEffect(() => {\n if (!gifts || gifts.length === 0) {\n setSelectedGiftIds([])\n return\n }\n\n if (giftType === 2) {\n // gift_type 2 (\u5168\u9009\u6A21\u5F0F) - \u9009\u4E2D\u6240\u6709\u8D60\u54C1\n setSelectedGiftIds(gifts.map((gift: FreeGift) => gift.id))\n } else {\n // gift_type 1 (\u5355\u9009\u6A21\u5F0F) - \u667A\u80FD\u72B6\u6001\u7BA1\u7406\n setSelectedGiftIds(prevSelectedIds => {\n // \u68C0\u67E5\u5F53\u524D\u9009\u4E2D\u7684\u793C\u54C1\u662F\u5426\u4ECD\u7136\u5B58\u5728\u4E8E\u65B0\u7684 gifts \u5217\u8868\u4E2D\n const currentSelectedId = prevSelectedIds[0]\n const isCurrentSelectionValid =\n currentSelectedId && gifts.some((gift: FreeGift) => gift.id === currentSelectedId)\n\n // \u5982\u679C\u5F53\u524D\u9009\u4E2D\u72B6\u6001\u4ECD\u7136\u6709\u6548\uFF0C\u4FDD\u6301\u4E0D\u53D8\uFF1B\u5426\u5219\u9ED8\u8BA4\u9009\u4E2D\u7B2C\u4E00\u4E2A\n return isCurrentSelectionValid ? [currentSelectedId] : [gifts[0].id]\n })\n }\n }, [gifts, giftType])\n\n // \u6784\u9020\u5B8C\u6574\u7684\u4EA7\u54C1\u6570\u636E\u7528\u4E8E\u56DE\u8C03\n const fullProductData: ProductCardData = React.useMemo(\n () => ({\n ...productData,\n gifts,\n gift_type: giftType,\n }),\n [productData, gifts, giftType]\n )\n\n const handleGiftClick = (gift: FreeGift) => {\n // gift_type 2 (\u5168\u9009\u6A21\u5F0F) - \u4E0D\u5141\u8BB8\u53D6\u6D88\u9009\u62E9\uFF0C\u76F4\u63A5\u8FD4\u56DE\n if (giftType === 2) {\n // \u83B7\u53D6\u5F53\u524D\u6240\u6709\u9009\u4E2D\u7684gifts\u4F5C\u4E3A\u7B2C\u4E8C\u4E2A\u53C2\u6570\n const currentSelectedGifts = giftsWithSelection.filter((g: FreeGiftWithSelection) => g.selected)\n onGiftClick?.(gift, currentSelectedGifts)\n return\n }\n\n // gift_type 1 (\u5355\u9009\u6A21\u5F0F)\n setSelectedGiftIds(() => {\n const newSelectedIds = [gift.id] // \u5355\u9009\uFF1A\u59CB\u7EC8\u9009\u4E2D\u5F53\u524D\u9879\uFF0C\u70B9\u51FB\u5DF2\u9009\u4E2D\u9879\u4FDD\u6301\u72B6\u6001\uFF0C\u70B9\u51FB\u672A\u9009\u4E2D\u9879\u5207\u6362\u5230\u8BE5\u9879\n\n // \u8BA1\u7B97\u65B0\u7684\u9009\u4E2Dgifts\u4F5C\u4E3A\u7B2C\u4E8C\u4E2A\u53C2\u6570\u4F20\u9012\u7ED9\u56DE\u8C03\n const newSelectedGifts = gifts?.filter((g: FreeGift) => newSelectedIds.includes(g.id)) || []\n\n // \u8C03\u7528\u56DE\u8C03\u51FD\u6570\uFF0C\u7B2C\u4E8C\u4E2A\u53C2\u6570\u662F\u5F53\u524D\u9009\u4E2D\u7684gifts\n onGiftClick?.(gift, newSelectedGifts)\n onGiftSelectionChange?.(newSelectedGifts, fullProductData)\n\n return newSelectedIds\n })\n }\n\n const hasClickHandler = !!(onProductImageClick ?? onProductClick)\n const productHref = `/products/${productData.handle}`\n\n const handleProductImageClick = () => {\n const callback = onProductImageClick ?? onProductClick\n callback?.(fullProductData)\n }\n\n const handleButtonClick = async (buttonFun: ButtonFunctionType, buttonType: 'primary' | 'secondary') => {\n const selectedGifts = giftsWithSelection.filter(gift => gift.selected)\n const setLoading = buttonType === 'primary' ? setShopNowLoading : setLearnMoreLoading\n setLoading(true)\n try {\n switch (buttonFun) {\n case 'buyNow':\n await onShopNow?.(fullProductData, selectedGifts)\n break\n case 'addCart':\n await onAddToCart?.(fullProductData, selectedGifts)\n break\n case 'learnMore':\n await onLearnMore?.(fullProductData, selectedGifts)\n break\n }\n } finally {\n setLoading(false)\n }\n }\n\n const learnMoreFun = productData.learnMoreFun ?? 'learnMore'\n const shopNowFun = productData.shopNowFun ?? 'buyNow'\n\n return (\n <div\n ref={ref}\n className={cn(\n 'bg-container-primary rounded-box flex items-stretch overflow-hidden',\n // \u6839\u636E\u5E03\u5C40\u6A21\u5F0F\u8C03\u6574\u5BB9\u5668\n layout === 'horizontal'\n ? [\n 'laptop:flex-row lg-desktop:min-h-[560px] desktop:min-h-[448px] tablet:min-h-[526px] min-h-[610px] flex-col',\n 'laptop:col-span-2',\n ]\n : ['flex-col justify-between'],\n className\n )}\n {...props}\n >\n {/* \u4EA7\u54C1\u56FE\u7247\u533A\u57DF */}\n <ProductImage\n images={sceneImages}\n name={productData.name}\n layout={layout}\n tags={productData.tags || tags}\n onClick={hasClickHandler ? handleProductImageClick : undefined}\n href={hasClickHandler ? undefined : productHref}\n />\n\n {/* \u4EA7\u54C1\u4FE1\u606F\u533A\u57DF */}\n <div\n className={cn(\n 'bg-container-primary desktop:p-6 flex flex-col justify-between p-4',\n // \u6839\u636E\u5E03\u5C40\u6A21\u5F0F\u8C03\u6574\u5706\u89D2\u548C\u5C3A\u5BF8\n layout === 'horizontal'\n ? [\n 'rounded-r-box laptop:rounded-r-box tablet:rounded-b-box tablet:rounded-l-none',\n // \u4F7F\u7528 flex-basis \u8BBE\u7F6E\u5BBD\u5EA6\u6BD4\u4F8B\n 'laptop:basis-[39.1%]', // 360px / 921px \u2248 39.1%\n 'desktop:basis-[42.1%]', // 552px / 1312px \u2248 42.1%\n 'lg-desktop:basis-[42.1%]', // 700px / 1664px \u2248 42.1%\n 'shrink-0',\n ]\n : ['rounded-b-box', 'w-full', 'grow']\n )}\n >\n <div className=\"flex flex-1 flex-col justify-between gap-6\">\n {/* \u4EA7\u54C1\u6807\u9898\u548C\u63CF\u8FF0 */}\n <ProductInfo\n name={productData.name}\n onClick={hasClickHandler ? handleProductImageClick : undefined}\n href={hasClickHandler ? undefined : productHref}\n description={productData.description}\n classNames={classNames}\n />\n\n {/* \u514D\u8D39\u8D60\u54C1\u533A\u57DF */}\n <GiftSelection\n freeGiftLabel={productData.freeGiftLabel}\n freeGifts={giftsWithSelection}\n onGiftClick={handleGiftClick}\n giftType={giftType}\n selectedGiftSku={selectedGiftSku}\n theme={theme}\n />\n <PriceAndActions\n currentPrice={productData.currentPrice ?? ''}\n originalPrice={productData.originalPrice}\n priceLabel={productData.priceLabel}\n learnMoreText={productData.learnMoreText}\n shopNowText={productData.shopNowText}\n soldOutText={soldOutText}\n onLearnMore={() => handleButtonClick(learnMoreFun, 'secondary')}\n onShopNow={() => handleButtonClick(shopNowFun, 'primary')}\n availableForSale={productData.availableForSale}\n learnMoreLoading={learnMoreLoading}\n shopNowLoading={shopNowLoading}\n trackingTitle={productData.name}\n trackingDescription={productData.description}\n trackingSku={productData.sku}\n classNames={classNames}\n renderOriginalPrice={renderOriginalPrice}\n />\n </div>\n </div>\n </div>\n )\n }\n)\n\nProductCard.displayName = 'BuyOneGetOneShelf.ProductCard'\n\nexport default ProductCard\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "ProductImage", "ProductInfo", "GiftSelection", "PriceAndActions", "BuyOneGetOneShelfContext", "ProductCard", "productData", "gifts", "giftType", "selectedGiftSku", "sceneImages", "tags", "layoutProp", "className", "onProductClick", "onProductImageClick", "onLearnMore", "onShopNow", "onAddToCart", "onGiftClick", "onGiftSelectionChange", "classNames", "soldOutText", "renderOriginalPrice", "props", "ref", "contextLayout", "theme", "layout", "learnMoreLoading", "setLearnMoreLoading", "shopNowLoading", "setShopNowLoading", "selectedGiftIds", "setSelectedGiftIds", "gift", "giftsWithSelection", "prevSelectedIds", "currentSelectedId", "fullProductData", "handleGiftClick", "currentSelectedGifts", "g", "newSelectedIds", "newSelectedGifts", "hasClickHandler", "productHref", "handleProductImageClick", "handleButtonClick", "buttonFun", "buttonType", "selectedGifts", "setLoading", "learnMoreFun", "shopNowFun", "ProductCard_default"]
|
|
7
7
|
}
|
|
@@ -5,4 +5,4 @@ declare const BuyOneGetOneShelf: {
|
|
|
5
5
|
ProductCard: React.ForwardRefExoticComponent<import("./ProductCard.js").ProductCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
6
|
};
|
|
7
7
|
export default BuyOneGetOneShelf;
|
|
8
|
-
export type { FreeGift, FreeGiftWithSelection, ProductTag, BuyOneGetOneShelfSemanticName, BuyOneGetOneShelfRootSemanticName, BuyOneGetOneShelfProductCardSemanticName, ResponsiveImage, ResponsiveImages, BaseProductData, PureProductData, WithGiftData, ProductData, ProductCardData, CopyConfig, BogoItem, BuyOneGetOneShelfData, BuyOneGetOneShelfProps, BuyOneGetOneShelfCardProps, } from './types.js';
|
|
8
|
+
export type { FreeGift, FreeGiftWithSelection, ProductTag, ButtonFunctionType, BuyOneGetOneShelfSemanticName, BuyOneGetOneShelfRootSemanticName, BuyOneGetOneShelfProductCardSemanticName, ResponsiveImage, ResponsiveImages, BaseProductData, PureProductData, WithGiftData, ProductData, ProductCardData, CopyConfig, BogoItem, BuyOneGetOneShelfData, BuyOneGetOneShelfProps, BuyOneGetOneShelfCardProps, } from './types.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsx as s,jsxs as O}from"react/jsx-runtime";import*as t from"react";import{cn as i}from"../../helpers/index.js";import
|
|
1
|
+
"use client";import{jsx as s,jsxs as O}from"react/jsx-runtime";import*as t from"react";import{cn as i}from"../../helpers/index.js";import S from"./ProductCard.js";import{Heading as G,Text as P}from"../../components/index.js";import{BuyOneGetOneShelfContext as b}from"./context.js";import{useExposure as E}from"../../hooks/useExposure.js";const D="shelf",k="buy_one_get_one_shelf";function h(o){return t.Children.toArray(o).flatMap(e=>t.isValidElement(e)&&e.type===t.Fragment?h(e.props.children):[e])}function z(o){return t.isValidElement(o)?o.props.layout??"horizontal":"horizontal"}function T(o,e){let n=0,l=0;for(let r=0;r<e;r++){const p=z(o[r])==="horizontal"?2:1;p===2&&n>0&&(n=0),n+=p,n===2&&(l=r+1,n=0)}return o.slice(0,l)}const g=t.forwardRef(({className:o,classNames:e={},theme:n,title:l,subtitle:r,children:p,viewMoreThreshold:f=4,viewMoreText:R="View More",viewLessText:x="View Less",...v},C)=>{const d=t.useRef(null),[c,N]=t.useState(!1);E(d,{componentType:D,componentName:k,componentTitle:l,componentDescription:r}),t.useImperativeHandle(C,()=>d.current);const u=h(p),m=u.length>f,B=(m&&!c?T(u,f):u).map(a=>{if(!t.isValidElement(a))return a;const y=a.props;return y.layout==="horizontal"?t.cloneElement(a,{className:i(y.className,"laptop:col-span-2")}):a});return s(b.Provider,{value:{layout:"horizontal",theme:n},children:O("div",{ref:d,className:i("bogo-shelf-root w-full py-0",{"aiui-dark":n==="dark"},o,e?.root),...v,children:[l&&s(G,{as:"h2",size:3,html:l,className:i("bogo-shelf-title text-info-primary mb-4",e?.title)}),r&&s(P,{size:3,as:"p",html:r,className:i("bogo-shelf-description text-info-primary mb-6",e?.description)}),s("div",{className:i("grid grid-cols-1 gap-6","laptop:grid-cols-2"),children:B}),m&&s("div",{className:"mt-6 flex justify-center",children:O("button",{type:"button",onClick:()=>N(a=>!a),"aria-expanded":c,className:i("hover:text-brand-0 lg-desktop:text-[16px] text-info-primary flex cursor-pointer items-center gap-2 border-none bg-transparent text-[14px] font-bold outline-none transition-colors",e?.viewMoreBtn),children:[c?x:R,s("svg",{className:i("size-4 transition-transform",c&&"rotate-180"),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:s("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})})]})})});g.displayName="BuyOneGetOneShelf.Root";const w={Root:g,ProductCard:S};var _=w;export{_ as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/biz-components/BuyOneGetOneShelf/index.tsx"],
|
|
4
|
-
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport ProductCard from './ProductCard.js'\nimport { Heading, Text } from '../../components/index.js'\nimport { BuyOneGetOneShelfContext } from './context.js'\nimport type { BuyOneGetOneShelfProps } from './types.js'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nconst componentType = 'shelf'\nconst componentName = 'buy_one_get_one_shelf'\n\nfunction flattenChildren(children: React.ReactNode): React.ReactNode[] {\n return React.Children.toArray(children).flatMap(child => {\n if (React.isValidElement(child) && child.type === React.Fragment) {\n return flattenChildren((child.props as { children?: React.ReactNode }).children)\n }\n return [child]\n })\n}\n\nfunction getLayout(node: React.ReactNode): string {\n if (React.isValidElement(node)) {\n return (node.props as { layout?: string }).layout ?? 'horizontal'\n }\n return 'horizontal'\n}\n\nfunction sliceToCompleteRow(all: React.ReactNode[], threshold: number): React.ReactNode[] {\n let filledInRow = 0\n let lastCompleteIndex = 0\n for (let i = 0; i < threshold; i++) {\n const span = getLayout(all[i]) === 'horizontal' ? 2 : 1\n if (span === 2 && filledInRow > 0) filledInRow = 0\n filledInRow += span\n if (filledInRow === 2) {\n lastCompleteIndex = i + 1\n filledInRow = 0\n }\n }\n return all.slice(0, lastCompleteIndex)\n}\n\nconst BuyOneGetOneShelfRoot = React.forwardRef<HTMLDivElement, BuyOneGetOneShelfProps>(\n (\n {\n className,\n classNames = {},\n theme,\n title,\n subtitle,\n children,\n viewMoreThreshold = 4,\n viewMoreText = 'View More',\n viewLessText = 'View Less',\n ...props\n },\n ref\n ) => {\n const boxRef = React.useRef<HTMLDivElement>(null)\n const [isExpanded, setIsExpanded] = React.useState(false)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n React.useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n const childrenArray = flattenChildren(children)\n const needCollapse = childrenArray.length > viewMoreThreshold\n const displayedChildren =\n needCollapse && !isExpanded ? sliceToCompleteRow(childrenArray, viewMoreThreshold) : childrenArray\n\n const renderedChildren = displayedChildren.map(child => {\n if (!React.isValidElement(child)) return child\n const childProps = child.props as { layout?: string; className?: string }\n if (childProps.layout === 'horizontal') {\n return React.cloneElement(child as React.ReactElement<{ className?: string }>, {\n className: cn(childProps.className, 'laptop:col-span-2'),\n })\n }\n return child\n })\n\n return (\n <BuyOneGetOneShelfContext.Provider value={{ layout: 'horizontal', theme }}>\n <div\n ref={boxRef}\n className={cn(\n 'bogo-shelf-root w-full py-0',\n {\n 'aiui-dark': theme === 'dark',\n },\n className,\n classNames?.root\n )}\n {...props}\n >\n {title && (\n <Heading\n as=\"h2\"\n size={3}\n html={title}\n className={cn('bogo-shelf-title text-info-primary mb-4', classNames?.title)}\n />\n )}\n {subtitle && (\n <Text\n size={3}\n as=\"p\"\n html={subtitle}\n className={cn('bogo-shelf-description text-info-primary mb-6', classNames?.description)}\n />\n )}\n <div className={cn('grid grid-cols-1 gap-6', 'laptop:grid-cols-2')}>{renderedChildren}</div>\n {needCollapse && (\n <div className=\"mt-6 flex justify-center\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(prev => !prev)}\n aria-expanded={isExpanded}\n className={cn(\n 'hover:text-brand-0 lg-desktop:text-[16px] text-info-primary flex cursor-pointer items-center gap-2 border-none bg-transparent text-[14px] font-bold outline-none transition-colors',\n classNames?.viewMoreBtn\n )}\n >\n {isExpanded ? viewLessText : viewMoreText}\n <svg\n className={cn('size-4 transition-transform', isExpanded && 'rotate-180')}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n </BuyOneGetOneShelfContext.Provider>\n )\n }\n)\n\nBuyOneGetOneShelfRoot.displayName = 'BuyOneGetOneShelf.Root'\n\n// \u521B\u5EFA\u547D\u540D\u7A7A\u95F4\u5BF9\u8C61\uFF0C\u5305\u542B Root \u548C ProductCard \u7EC4\u4EF6\nconst BuyOneGetOneShelf = {\n Root: BuyOneGetOneShelfRoot,\n ProductCard: ProductCard,\n}\n\nexport default BuyOneGetOneShelf\n\n// Re-export types for external use\nexport type {\n FreeGift,\n FreeGiftWithSelection,\n ProductTag,\n BuyOneGetOneShelfSemanticName,\n BuyOneGetOneShelfRootSemanticName,\n BuyOneGetOneShelfProductCardSemanticName,\n ResponsiveImage,\n ResponsiveImages,\n BaseProductData,\n PureProductData,\n WithGiftData,\n ProductData,\n ProductCardData,\n CopyConfig,\n BogoItem,\n BuyOneGetOneShelfData,\n BuyOneGetOneShelfProps,\n BuyOneGetOneShelfCardProps,\n} from './types.js'\n"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport ProductCard from './ProductCard.js'\nimport { Heading, Text } from '../../components/index.js'\nimport { BuyOneGetOneShelfContext } from './context.js'\nimport type { BuyOneGetOneShelfProps } from './types.js'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nconst componentType = 'shelf'\nconst componentName = 'buy_one_get_one_shelf'\n\nfunction flattenChildren(children: React.ReactNode): React.ReactNode[] {\n return React.Children.toArray(children).flatMap(child => {\n if (React.isValidElement(child) && child.type === React.Fragment) {\n return flattenChildren((child.props as { children?: React.ReactNode }).children)\n }\n return [child]\n })\n}\n\nfunction getLayout(node: React.ReactNode): string {\n if (React.isValidElement(node)) {\n return (node.props as { layout?: string }).layout ?? 'horizontal'\n }\n return 'horizontal'\n}\n\nfunction sliceToCompleteRow(all: React.ReactNode[], threshold: number): React.ReactNode[] {\n let filledInRow = 0\n let lastCompleteIndex = 0\n for (let i = 0; i < threshold; i++) {\n const span = getLayout(all[i]) === 'horizontal' ? 2 : 1\n if (span === 2 && filledInRow > 0) filledInRow = 0\n filledInRow += span\n if (filledInRow === 2) {\n lastCompleteIndex = i + 1\n filledInRow = 0\n }\n }\n return all.slice(0, lastCompleteIndex)\n}\n\nconst BuyOneGetOneShelfRoot = React.forwardRef<HTMLDivElement, BuyOneGetOneShelfProps>(\n (\n {\n className,\n classNames = {},\n theme,\n title,\n subtitle,\n children,\n viewMoreThreshold = 4,\n viewMoreText = 'View More',\n viewLessText = 'View Less',\n ...props\n },\n ref\n ) => {\n const boxRef = React.useRef<HTMLDivElement>(null)\n const [isExpanded, setIsExpanded] = React.useState(false)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n React.useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n const childrenArray = flattenChildren(children)\n const needCollapse = childrenArray.length > viewMoreThreshold\n const displayedChildren =\n needCollapse && !isExpanded ? sliceToCompleteRow(childrenArray, viewMoreThreshold) : childrenArray\n\n const renderedChildren = displayedChildren.map(child => {\n if (!React.isValidElement(child)) return child\n const childProps = child.props as { layout?: string; className?: string }\n if (childProps.layout === 'horizontal') {\n return React.cloneElement(child as React.ReactElement<{ className?: string }>, {\n className: cn(childProps.className, 'laptop:col-span-2'),\n })\n }\n return child\n })\n\n return (\n <BuyOneGetOneShelfContext.Provider value={{ layout: 'horizontal', theme }}>\n <div\n ref={boxRef}\n className={cn(\n 'bogo-shelf-root w-full py-0',\n {\n 'aiui-dark': theme === 'dark',\n },\n className,\n classNames?.root\n )}\n {...props}\n >\n {title && (\n <Heading\n as=\"h2\"\n size={3}\n html={title}\n className={cn('bogo-shelf-title text-info-primary mb-4', classNames?.title)}\n />\n )}\n {subtitle && (\n <Text\n size={3}\n as=\"p\"\n html={subtitle}\n className={cn('bogo-shelf-description text-info-primary mb-6', classNames?.description)}\n />\n )}\n <div className={cn('grid grid-cols-1 gap-6', 'laptop:grid-cols-2')}>{renderedChildren}</div>\n {needCollapse && (\n <div className=\"mt-6 flex justify-center\">\n <button\n type=\"button\"\n onClick={() => setIsExpanded(prev => !prev)}\n aria-expanded={isExpanded}\n className={cn(\n 'hover:text-brand-0 lg-desktop:text-[16px] text-info-primary flex cursor-pointer items-center gap-2 border-none bg-transparent text-[14px] font-bold outline-none transition-colors',\n classNames?.viewMoreBtn\n )}\n >\n {isExpanded ? viewLessText : viewMoreText}\n <svg\n className={cn('size-4 transition-transform', isExpanded && 'rotate-180')}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n </BuyOneGetOneShelfContext.Provider>\n )\n }\n)\n\nBuyOneGetOneShelfRoot.displayName = 'BuyOneGetOneShelf.Root'\n\n// \u521B\u5EFA\u547D\u540D\u7A7A\u95F4\u5BF9\u8C61\uFF0C\u5305\u542B Root \u548C ProductCard \u7EC4\u4EF6\nconst BuyOneGetOneShelf = {\n Root: BuyOneGetOneShelfRoot,\n ProductCard: ProductCard,\n}\n\nexport default BuyOneGetOneShelf\n\n// Re-export types for external use\nexport type {\n FreeGift,\n FreeGiftWithSelection,\n ProductTag,\n ButtonFunctionType,\n BuyOneGetOneShelfSemanticName,\n BuyOneGetOneShelfRootSemanticName,\n BuyOneGetOneShelfProductCardSemanticName,\n ResponsiveImage,\n ResponsiveImages,\n BaseProductData,\n PureProductData,\n WithGiftData,\n ProductData,\n ProductCardData,\n CopyConfig,\n BogoItem,\n BuyOneGetOneShelfData,\n BuyOneGetOneShelfProps,\n BuyOneGetOneShelfCardProps,\n} from './types.js'\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["jsx", "jsxs", "React", "cn", "ProductCard", "Heading", "Text", "BuyOneGetOneShelfContext", "useExposure", "componentType", "componentName", "flattenChildren", "children", "child", "getLayout", "node", "sliceToCompleteRow", "all", "threshold", "filledInRow", "lastCompleteIndex", "i", "span", "BuyOneGetOneShelfRoot", "className", "classNames", "theme", "title", "subtitle", "viewMoreThreshold", "viewMoreText", "viewLessText", "props", "ref", "boxRef", "isExpanded", "setIsExpanded", "childrenArray", "needCollapse", "renderedChildren", "childProps", "prev", "BuyOneGetOneShelf", "BuyOneGetOneShelf_default"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { Theme } from '../../types/props';
|
|
3
|
+
/**
|
|
4
|
+
* 按钮功能类型
|
|
5
|
+
*/
|
|
6
|
+
export type ButtonFunctionType = 'buyNow' | 'addCart' | 'learnMore';
|
|
3
7
|
/**
|
|
4
8
|
* 免费赠品接口
|
|
5
9
|
*/
|
|
@@ -112,6 +116,10 @@ export interface PureProductData extends BaseProductData {
|
|
|
112
116
|
tags?: ProductTag[];
|
|
113
117
|
/** 赠品选择模式 */
|
|
114
118
|
giftSelectionMode?: 'single' | 'multiple';
|
|
119
|
+
/** Learn More 按钮功能(默认 'learnMore') */
|
|
120
|
+
learnMoreFun?: ButtonFunctionType;
|
|
121
|
+
/** Shop Now 按钮功能(默认 'buyNow') */
|
|
122
|
+
shopNowFun?: ButtonFunctionType;
|
|
115
123
|
availableForSale: boolean;
|
|
116
124
|
}
|
|
117
125
|
export interface ProductData extends BaseProductData, WithGiftData {
|
|
@@ -195,6 +203,8 @@ export interface BuyOneGetOneShelfCardProps extends Omit<React.HTMLAttributes<HT
|
|
|
195
203
|
learnMoreText?: string;
|
|
196
204
|
shopNowText?: string;
|
|
197
205
|
freeGiftLabel?: string;
|
|
206
|
+
learnMoreFun?: ButtonFunctionType;
|
|
207
|
+
shopNowFun?: ButtonFunctionType;
|
|
198
208
|
};
|
|
199
209
|
/** 赠品列表 */
|
|
200
210
|
gifts?: FreeGift[];
|
|
@@ -215,6 +225,8 @@ export interface BuyOneGetOneShelfCardProps extends Omit<React.HTMLAttributes<HT
|
|
|
215
225
|
onLearnMore?: (product: ProductCardData, selectedGifts: FreeGift[]) => void;
|
|
216
226
|
/** Shop Now 点击回调 */
|
|
217
227
|
onShopNow?: (product: ProductCardData, selectedGifts: FreeGift[]) => void;
|
|
228
|
+
/** 加入购物车回调 */
|
|
229
|
+
onAddToCart?: (product: ProductCardData, selectedGifts: FreeGift[]) => void;
|
|
218
230
|
/** 赠品点击回调 */
|
|
219
231
|
onGiftClick?: (gift: FreeGift, selectedGifts: FreeGift[]) => void;
|
|
220
232
|
/** 赠品选择变化回调 */
|