@anker-in/headless-ui 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +1 -1
  2. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  3. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  4. package/dist/cjs/biz-components/HeroBanner/HeroBannerCarousel.d.ts +1 -0
  5. package/dist/cjs/biz-components/HeroBanner/HeroBannerCarousel.js +1 -1
  6. package/dist/cjs/biz-components/HeroBanner/HeroBannerCarousel.js.map +3 -3
  7. package/dist/cjs/biz-components/HeroBanner/types.d.ts +15 -0
  8. package/dist/cjs/biz-components/HeroBanner/types.js +1 -1
  9. package/dist/cjs/biz-components/HeroBanner/types.js.map +1 -1
  10. package/dist/cjs/biz-components/WebPushPopup/index.d.ts +44 -0
  11. package/dist/cjs/biz-components/WebPushPopup/index.js +2 -0
  12. package/dist/cjs/biz-components/WebPushPopup/index.js.map +7 -0
  13. package/dist/cjs/biz-components/index.d.ts +4 -0
  14. package/dist/cjs/biz-components/index.js +1 -1
  15. package/dist/cjs/biz-components/index.js.map +3 -3
  16. package/dist/cjs/hooks/useEmarsysWebPush.d.ts +111 -0
  17. package/dist/cjs/hooks/useEmarsysWebPush.js +2 -0
  18. package/dist/cjs/hooks/useEmarsysWebPush.js.map +7 -0
  19. package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +1 -1
  20. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  21. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  22. package/dist/esm/biz-components/HeroBanner/HeroBannerCarousel.d.ts +1 -0
  23. package/dist/esm/biz-components/HeroBanner/HeroBannerCarousel.js +1 -1
  24. package/dist/esm/biz-components/HeroBanner/HeroBannerCarousel.js.map +3 -3
  25. package/dist/esm/biz-components/HeroBanner/types.d.ts +15 -0
  26. package/dist/esm/biz-components/WebPushPopup/index.d.ts +44 -0
  27. package/dist/esm/biz-components/WebPushPopup/index.js +2 -0
  28. package/dist/esm/biz-components/WebPushPopup/index.js.map +7 -0
  29. package/dist/esm/biz-components/index.d.ts +4 -0
  30. package/dist/esm/biz-components/index.js +1 -1
  31. package/dist/esm/biz-components/index.js.map +3 -3
  32. package/dist/esm/hooks/useEmarsysWebPush.d.ts +111 -0
  33. package/dist/esm/hooks/useEmarsysWebPush.js +2 -0
  34. package/dist/esm/hooks/useEmarsysWebPush.js.map +7 -0
  35. package/package.json +4 -2
  36. package/static/emarsys-service-worker.js +31 -0
  37. package/style.css +62 -0
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ export interface WebPushPopupProps {
3
+ /** 弹窗标题,不传则不渲染标题 */
4
+ title?: string;
5
+ /** 弹窗描述文案,不传则不渲染描述 */
6
+ description?: string;
7
+ /** "稍后"按钮文案,默认 'Later' */
8
+ dismissText?: string;
9
+ /** "订阅"按钮文案,默认 'Allow' */
10
+ subscribeText?: string;
11
+ /** 图标区域内容,默认渲染 🔔 */
12
+ icon?: React.ReactNode;
13
+ /** 用户点击"订阅"按钮时触发 */
14
+ onSubscribe: () => void;
15
+ /** 用户点击"稍后"按钮时触发 */
16
+ onDismiss: () => void;
17
+ /** 额外的容器 className */
18
+ className?: string;
19
+ }
20
+ /**
21
+ * WebPushPopup
22
+ *
23
+ * Emarsys Web Push 订阅引导弹窗(非侵入式,固定在右上角)。
24
+ * 所有文案、图标均通过 props 传入,不硬编码,支持多品牌自定义。
25
+ *
26
+ * 配合 `useEmarsysWebPush` Hook 使用:
27
+ *
28
+ * ```tsx
29
+ * import { useEmarsysWebPush, WebPushPopup } from '@anker-in/headless-ui/biz'
30
+ *
31
+ * const { shouldShowPopup, subscribe, dismissPopup } = useEmarsysWebPush({ ... })
32
+ *
33
+ * {shouldShowPopup && (
34
+ * <WebPushPopup
35
+ * title="Welcome to Anker"
36
+ * description="Get the latest deals and product updates."
37
+ * onSubscribe={subscribe}
38
+ * onDismiss={dismissPopup}
39
+ * />
40
+ * )}
41
+ * ```
42
+ */
43
+ declare const WebPushPopup: React.NamedExoticComponent<WebPushPopupProps>;
44
+ export default WebPushPopup;
@@ -0,0 +1,2 @@
1
+ "use strict";"use client";var x=Object.create;var n=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var N=(e,t)=>{for(var s in t)n(e,s,{get:t[s],enumerable:!0})},d=(e,t,s,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of h(t))!P.call(e,o)&&o!==s&&n(e,o,{get:()=>t[o],enumerable:!(l=v(t,o))||l.enumerable});return e};var w=(e,t,s)=>(s=e!=null?x(y(e)):{},d(t||!e||!e.__esModule?n(s,"default",{value:e,enumerable:!0}):s,e)),k=e=>d(n({},"__esModule",{value:!0}),e);var C={};N(C,{default:()=>W});module.exports=k(C);var i=require("react/jsx-runtime"),a=w(require("react")),u=require("../../helpers/utils.js");const c=a.default.memo(function({title:t,description:s,dismissText:l="Later",subscribeText:o="Allow",icon:b="\u{1F514}",onSubscribe:r,onDismiss:p,className:m}){const f=(0,a.useCallback)(()=>{r()},[r]),g=(0,a.useCallback)(()=>{p()},[p]);return(0,i.jsxs)("div",{role:"dialog","aria-modal":"false","aria-labelledby":t?"web-push-popup-title":void 0,className:(0,u.cn)("fixed right-4 top-4 z-[9999]","laptop:w-80 w-72","flex items-start gap-3","rounded-xl bg-white shadow-lg","border border-black/5","p-4",m),children:[(0,i.jsx)("span",{className:"mt-0.5 shrink-0 text-2xl leading-none","aria-hidden":"true",children:b}),(0,i.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col gap-2",children:[t&&(0,i.jsx)("p",{id:"web-push-popup-title",className:"truncate text-sm font-semibold leading-snug text-gray-900",children:t}),s&&(0,i.jsx)("p",{className:"text-xs leading-relaxed text-gray-500",children:s}),(0,i.jsxs)("div",{className:"flex items-center justify-end gap-2 pt-0.5",children:[(0,i.jsx)("button",{type:"button",onClick:g,className:(0,u.cn)("rounded-md px-3 py-1.5","text-xs font-medium text-gray-400","transition-colors duration-150","hover:bg-gray-100 hover:text-gray-600","focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-400"),children:l}),(0,i.jsx)("button",{type:"button",onClick:f,className:(0,u.cn)("rounded-md px-3 py-1.5","text-xs font-medium text-white","bg-gray-900","transition-colors duration-150","hover:bg-gray-700","focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900"),children:o})]})]})]})});c.displayName="WebPushPopup";var W=c;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/WebPushPopup/index.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport React, { useCallback } from 'react'\nimport { cn } from '../../helpers/utils.js'\n\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Types\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface WebPushPopupProps {\n /** \u5F39\u7A97\u6807\u9898\uFF0C\u4E0D\u4F20\u5219\u4E0D\u6E32\u67D3\u6807\u9898 */\n title?: string\n /** \u5F39\u7A97\u63CF\u8FF0\u6587\u6848\uFF0C\u4E0D\u4F20\u5219\u4E0D\u6E32\u67D3\u63CF\u8FF0 */\n description?: string\n /** \"\u7A0D\u540E\"\u6309\u94AE\u6587\u6848\uFF0C\u9ED8\u8BA4 'Later' */\n dismissText?: string\n /** \"\u8BA2\u9605\"\u6309\u94AE\u6587\u6848\uFF0C\u9ED8\u8BA4 'Allow' */\n subscribeText?: string\n /** \u56FE\u6807\u533A\u57DF\u5185\u5BB9\uFF0C\u9ED8\u8BA4\u6E32\u67D3 \uD83D\uDD14 */\n icon?: React.ReactNode\n /** \u7528\u6237\u70B9\u51FB\"\u8BA2\u9605\"\u6309\u94AE\u65F6\u89E6\u53D1 */\n onSubscribe: () => void\n /** \u7528\u6237\u70B9\u51FB\"\u7A0D\u540E\"\u6309\u94AE\u65F6\u89E6\u53D1 */\n onDismiss: () => void\n /** \u989D\u5916\u7684\u5BB9\u5668 className */\n className?: string\n}\n\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Component\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * WebPushPopup\n *\n * Emarsys Web Push \u8BA2\u9605\u5F15\u5BFC\u5F39\u7A97\uFF08\u975E\u4FB5\u5165\u5F0F\uFF0C\u56FA\u5B9A\u5728\u53F3\u4E0A\u89D2\uFF09\u3002\n * \u6240\u6709\u6587\u6848\u3001\u56FE\u6807\u5747\u901A\u8FC7 props \u4F20\u5165\uFF0C\u4E0D\u786C\u7F16\u7801\uFF0C\u652F\u6301\u591A\u54C1\u724C\u81EA\u5B9A\u4E49\u3002\n *\n * \u914D\u5408 `useEmarsysWebPush` Hook \u4F7F\u7528\uFF1A\n *\n * ```tsx\n * import { useEmarsysWebPush, WebPushPopup } from '@anker-in/headless-ui/biz'\n *\n * const { shouldShowPopup, subscribe, dismissPopup } = useEmarsysWebPush({ ... })\n *\n * {shouldShowPopup && (\n * <WebPushPopup\n * title=\"Welcome to Anker\"\n * description=\"Get the latest deals and product updates.\"\n * onSubscribe={subscribe}\n * onDismiss={dismissPopup}\n * />\n * )}\n * ```\n */\nconst WebPushPopup = React.memo(function WebPushPopup({\n title,\n description,\n dismissText = 'Later',\n subscribeText = 'Allow',\n icon = '\uD83D\uDD14',\n onSubscribe,\n onDismiss,\n className,\n}: WebPushPopupProps) {\n const handleSubscribe = useCallback(() => {\n onSubscribe()\n }, [onSubscribe])\n\n const handleDismiss = useCallback(() => {\n onDismiss()\n }, [onDismiss])\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"false\"\n aria-labelledby={title ? 'web-push-popup-title' : undefined}\n className={cn(\n 'fixed right-4 top-4 z-[9999]',\n 'laptop:w-80 w-72',\n 'flex items-start gap-3',\n 'rounded-xl bg-white shadow-lg',\n 'border border-black/5',\n 'p-4',\n className\n )}\n >\n {/* Icon */}\n <span className=\"mt-0.5 shrink-0 text-2xl leading-none\" aria-hidden=\"true\">\n {icon}\n </span>\n\n {/* Content */}\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n {title && (\n <p id=\"web-push-popup-title\" className=\"truncate text-sm font-semibold leading-snug text-gray-900\">\n {title}\n </p>\n )}\n\n {description && <p className=\"text-xs leading-relaxed text-gray-500\">{description}</p>}\n\n {/* Actions */}\n <div className=\"flex items-center justify-end gap-2 pt-0.5\">\n <button\n type=\"button\"\n onClick={handleDismiss}\n className={cn(\n 'rounded-md px-3 py-1.5',\n 'text-xs font-medium text-gray-400',\n 'transition-colors duration-150',\n 'hover:bg-gray-100 hover:text-gray-600',\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-400'\n )}\n >\n {dismissText}\n </button>\n\n <button\n type=\"button\"\n onClick={handleSubscribe}\n className={cn(\n 'rounded-md px-3 py-1.5',\n 'text-xs font-medium text-white',\n 'bg-gray-900',\n 'transition-colors duration-150',\n 'hover:bg-gray-700',\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900'\n )}\n >\n {subscribeText}\n </button>\n </div>\n </div>\n </div>\n )\n})\n\nWebPushPopup.displayName = 'WebPushPopup'\n\nexport default WebPushPopup\n"],
5
+ "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAyFM,IAAAI,EAAA,6BAvFNC,EAAmC,oBACnCC,EAAmB,kCAoDnB,MAAMC,EAAe,EAAAC,QAAM,KAAK,SAAsB,CACpD,MAAAC,EACA,YAAAC,EACA,YAAAC,EAAc,QACd,cAAAC,EAAgB,QAChB,KAAAC,EAAO,YACP,YAAAC,EACA,UAAAC,EACA,UAAAC,CACF,EAAsB,CACpB,MAAMC,KAAkB,eAAY,IAAM,CACxCH,EAAY,CACd,EAAG,CAACA,CAAW,CAAC,EAEVI,KAAgB,eAAY,IAAM,CACtCH,EAAU,CACZ,EAAG,CAACA,CAAS,CAAC,EAEd,SACE,QAAC,OACC,KAAK,SACL,aAAW,QACX,kBAAiBN,EAAQ,uBAAyB,OAClD,aAAW,MACT,+BACA,mBACA,yBACA,gCACA,wBACA,MACAO,CACF,EAGA,oBAAC,QAAK,UAAU,wCAAwC,cAAY,OACjE,SAAAH,EACH,KAGA,QAAC,OAAI,UAAU,qCACZ,UAAAJ,MACC,OAAC,KAAE,GAAG,uBAAuB,UAAU,4DACpC,SAAAA,EACH,EAGDC,MAAe,OAAC,KAAE,UAAU,wCAAyC,SAAAA,EAAY,KAGlF,QAAC,OAAI,UAAU,6CACb,oBAAC,UACC,KAAK,SACL,QAASQ,EACT,aAAW,MACT,yBACA,oCACA,iCACA,wCACA,6GACF,EAEC,SAAAP,EACH,KAEA,OAAC,UACC,KAAK,SACL,QAASM,EACT,aAAW,MACT,yBACA,iCACA,cACA,iCACA,oBACA,6GACF,EAEC,SAAAL,EACH,GACF,GACF,GACF,CAEJ,CAAC,EAEDL,EAAa,YAAc,eAE3B,IAAOL,EAAQK",
6
+ "names": ["WebPushPopup_exports", "__export", "WebPushPopup_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_utils", "WebPushPopup", "React", "title", "description", "dismissText", "subscribeText", "icon", "onSubscribe", "onDismiss", "className", "handleSubscribe", "handleDismiss"]
7
+ }
@@ -140,6 +140,10 @@ export { default as MiniCartCircleProgress } from './MiniCart/CircleProgress.js'
140
140
  export type { CircleProgressProps as MiniCartCircleProgressProps } from './MiniCart/CircleProgress.js';
141
141
  export { default as MiniCartDialog, MiniCartDialog as MiniCartDialogComponent } from './MiniCart/MiniCartDialog.js';
142
142
  export type { MiniCartDialogProps, MiniCartDialogCopy, MiniCartDialogSemanticName, CartData, } from './MiniCart/MiniCartDialog.js';
143
+ export { default as WebPushPopup } from './WebPushPopup/index.js';
144
+ export type { WebPushPopupProps } from './WebPushPopup/index.js';
145
+ export { useEmarsysWebPush } from '../hooks/useEmarsysWebPush.js';
146
+ export type { UseEmarsysWebPushOptions, UseEmarsysWebPushReturn, EmarsysContactInfo, EmarsysInitConfig, } from '../hooks/useEmarsysWebPush.js';
143
147
  /**
144
148
  * 组件映射对象
145
149
  */
@@ -1,2 +1,2 @@
1
- "use strict";var et=Object.create;var p=Object.defineProperty;var tt=Object.getOwnPropertyDescriptor;var rt=Object.getOwnPropertyNames;var at=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var it=(t,r)=>{for(var a in r)p(t,a,{get:r[a],enumerable:!0})},m=(t,r,a,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of rt(r))!ot.call(t,i)&&i!==a&&p(t,i,{get:()=>r[i],enumerable:!(u=tt(r,i))||u.enumerable});return t};var e=(t,r,a)=>(a=t!=null?et(at(t)):{},m(r||!t||!t.__esModule?p(a,"default",{value:t,enumerable:!0}):a,t)),pt=t=>m(p({},"__esModule",{value:!0}),t);var ft={};it(ft,{AccordionCards:()=>j.default,ActiveShelf:()=>_e.default,ActivityMechanism:()=>h.default,ActivitySchedule:()=>n.default,AiuiProvider:()=>R.default,AnchorNavigation:()=>Ee.default,AplusDesc:()=>ye.default,BenefitsTab:()=>le.default,BizProductProvider:()=>Y.default,BrandCardLink:()=>ge.default,BrandEquity:()=>S.default,BuyOneGetOneShelf:()=>Ke.default,Category:()=>B.default,CreativeModule:()=>K.default,CreditsProductCard:()=>f.CreditsProductCard,CreditsShelf:()=>f.default,DownLoad:()=>Pe.default,Evaluate:()=>T.default,EventSchedule:()=>Re.default,Faq:()=>L.default,FeatureCards:()=>je.default,FeatureShowcase:()=>ke.default,FeaturedBlogPosts:()=>De.default,Features:()=>xe.default,FootCharger:()=>Ce.default,FooterNavigation:()=>N.default,GiftBox:()=>he.default,GiftShelf:()=>x.default,GiftTierShelf:()=>y.default,Graphic:()=>D.default,GraphicAttractionBlock:()=>V.default,GraphicMore:()=>ne.default,GraphicOverlay:()=>_.default,HeaderNavigation:()=>q.default,HeroBanner:()=>I.default,IPC_SEARCH_PAGE:()=>s.IPC_SEARCH_PAGE,IPRedirect:()=>dt,ImageOverlayShelf:()=>Qe.default,ImageTextFeature:()=>Ie.default,ImageTextOverlay:()=>Xe.default,ImageWithText:()=>Fe.default,Ksp:()=>Be.default,Marquee:()=>A.default,MarqueeImageContent:()=>o.MarqueeImageContent,MarqueeItem:()=>o.MarqueeItem,MarqueeReview:()=>k.default,MarqueeTextContent:()=>o.MarqueeTextContent,MediaEndorsement:()=>Ye.default,MediaPlayerBase:()=>F.default,MediaPlayerMulti:()=>b.default,MediaPlayerSticky:()=>G.default,MediaSceneSwitcher:()=>Oe.default,MediaSceneSwitcherV2:()=>Ve.default,MediaShelf:()=>ze.default,MediaTextOverlay:()=>Je.default,MemberEquity:()=>P.default,MiniCart:()=>Ze.default,MiniCartCircleProgress:()=>$e.default,MiniCartDialog:()=>l.default,MiniCartDialogComponent:()=>l.MiniCartDialog,MultiLayoutGraphicBlock:()=>O.default,PAYLOAD_COMPONENT_MAP:()=>st,PaidShipping:()=>ue.default,ProductActions:()=>Q.default,ProductBanner:()=>pe.default,ProductBenefits:()=>$.default,ProductBenefitsTabs:()=>Z.default,ProductBundle:()=>oe.default,ProductCard:()=>X.default,ProductCompare:()=>Te.default,ProductCoupon:()=>ie.default,ProductDetail:()=>de.default,ProductExchangePurchase:()=>re.default,ProductFreeGift:()=>te.default,ProductGallery:()=>fe.default,ProductGridBox:()=>se.default,ProductHero:()=>we.default,ProductHighlight:()=>ee.default,ProductLottery:()=>ve.default,ProductNav:()=>Ne.default,ProductOptions:()=>ae.default,ProductPaidShipping:()=>me.default,ProductSummary:()=>ce.default,PromotionalBar:()=>We.default,PurchaseBar:()=>J.default,SceneProductCard:()=>d.SceneProductCard,SceneShelf:()=>d.default,SceneShelfV2:()=>c.default,SceneShelfV2ProductCard:()=>c.SceneShelfV2ProductCard,SceneShelfV3:()=>Ue.default,SearchPage:()=>E.default,SearchPageTabType:()=>s.SearchPageTabType,SecondaryBanner:()=>He.default,SelectStore:()=>Se.default,ShelfDisplay:()=>v.default,Slogan:()=>C.default,Spacer:()=>M.default,Specs:()=>z.default,SpecsComparison:()=>Le.default,TabGroup:()=>U.default,TabWithImage:()=>Ae.default,Tabs:()=>H.default,TabsWithMedia:()=>be.default,ThreeDCarousel:()=>qe.default,Title:()=>g.default,VideoFeature:()=>Ge.default,WheelLottery:()=>Me.default,WhyChoose:()=>w.default,withLayout:()=>W.withLayout});module.exports=pt(ft);var n=e(require("./ActivitySchedule/index.js")),x=e(require("./GiftShelf/index.js")),y=e(require("./GiftTierShelf/index.js")),h=e(require("./ActivityMechanism/index.js")),S=e(require("./BrandEquity/index.js")),P=e(require("./MemberEquity/index.js")),C=e(require("./Slogan/index.js")),g=e(require("./Title/index.js")),M=e(require("./Spacer/index.js")),v=e(require("./ShelfDisplay/index.js")),T=e(require("./Evaluate/index.js")),B=e(require("./Category/index.js")),I=e(require("./HeroBanner/index.js")),j=e(require("./AccordionCards/index.js")),D=e(require("./Graphic/index.js")),F=e(require("./MediaPlayerBase/index.js")),G=e(require("./MediaPlayerSticky/index.js")),b=e(require("./MediaPlayerMulti/index.js")),A=e(require("./Marquee/index.js")),k=e(require("./MarqueeReview/index.js")),w=e(require("./WhyChoose/index.js")),L=e(require("./Faq/index.js")),o=require("./Marquee/index.js"),O=e(require("./MultiLayoutGraphicBlock/index.js")),V=e(require("./GraphicAttractionBlock/index.js")),q=e(require("./HeaderNavigation/index.js")),N=e(require("./FooterNavigation/index.js")),E=e(require("./SearchPage/index.js")),s=require("./SearchPage/types.js"),W=require("../shared/Styles.js"),R=e(require("./AiuiProvider/index.js")),H=e(require("./Tabs/index.js")),K=e(require("./CreativeModule/index.js")),_=e(require("./GraphicOverlay/index.js")),z=e(require("./Specs/index.js")),U=e(require("./TabsGroup/index.js")),Y=e(require("./Listing/BizProductProvider.js")),J=e(require("./Listing/components/PurchaseBar/index.js")),Q=e(require("./Listing/components/PurchaseBar/ProductActions/index.js")),X=e(require("./Listing/components/ProductCard/index.js")),Z=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js")),$=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js")),ee=e(require("./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js")),te=e(require("./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js")),re=e(require("./Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js")),ae=e(require("./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js")),oe=e(require("./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js")),ie=e(require("./Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js")),pe=e(require("./Listing/components/ProductCard/ProductDetail/ProductBanner/index.js")),se=e(require("./Listing/components/ProductCard/ProductGridBox.js")),fe=e(require("./Listing/components/ProductCard/ProductGallery/index.js")),de=e(require("./Listing/components/ProductCard/ProductDetail/index.js")),ce=e(require("./Listing/components/ProductCard/ProductSummary/index.js")),le=e(require("./Listing/components/ProductCard/ProductDetail/BenefitsTab.js")),ue=e(require("./Listing/components/PaidShipping/index.js")),me=e(require("./Listing/components/ProductCard/ProductPaidShipping/index.js")),ne=e(require("./GraphicMore/index.js")),xe=e(require("./Features/index.js")),ye=e(require("./AplusDesc/index.js")),he=e(require("./GiftBox/index.js")),Se=e(require("./SelectStore/index.js")),Pe=e(require("./DownLoad/index.js")),Ce=e(require("./FootCharger/index.js")),ge=e(require("./BrandCardLink/index.js")),dt=e(require("./IPRedirect/index.js")),Me=e(require("./WheelLottery/index.js")),ve=e(require("./ProductLottery/index.js")),Te=e(require("./ProductCompare/index.js")),Be=e(require("./Ksp/index.js")),Ie=e(require("./ImageTextFeature/index.js")),je=e(require("./FeatureCards/index.js")),De=e(require("./FeaturedBlogPosts/index.js")),Fe=e(require("./ImageWithText/index.js")),Ge=e(require("./VideoFeature/index.js")),be=e(require("./TabsWithMedia/index.js")),Ae=e(require("./TabWithImage/index.js")),ke=e(require("./FeatureShowcase/index.js")),we=e(require("./ProductHero/index.js")),Le=e(require("./SpecsComparison/index.js")),Oe=e(require("./MediaSceneSwitcher/index.js")),Ve=e(require("./MediaSceneSwitcherV2/index.js")),qe=e(require("./ThreeDCarousel/index.js")),Ne=e(require("./ProductNav/index.js")),Ee=e(require("./AnchorNavigation/index.js")),We=e(require("./PromotionalBar/index.js")),Re=e(require("./EventSchedule/index.js")),He=e(require("./SecondaryBanner/index.js")),Ke=e(require("./BuyOneGetOneShelf/index.js")),_e=e(require("./ActiveShelf/index.js")),ze=e(require("./MediaShelf/index.js")),f=e(require("./CreditsShelf/index.js")),d=e(require("./SceneShelf/index.js")),c=e(require("./SceneShelfV2/index.js")),Ue=e(require("./SceneShelfV3/index.js")),Ye=e(require("./MediaEndorsement/index.js")),Je=e(require("./MediaTextOverlay/index.js")),Qe=e(require("./ImageOverlayShelf/index.js")),Xe=e(require("./ImageTextOverlay/index.js")),Ze=e(require("./MiniCart/index.js")),$e=e(require("./MiniCart/CircleProgress.js")),l=e(require("./MiniCart/MiniCartDialog.js"));const st={"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-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"TabsBlock","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-active-shelf":"ActiveShelf","ipc-media-shelf":"MediaShelf","ipc-bogo-shelf":"BuyOneGetOneShelf","ipc-media-endorsement":"MediaEndorsement","ipc-media-scene-switcher-v2":"MediaSceneSwitcherV2","ipc-featured-blog-posts":"FeaturedBlogPosts"};
1
+ "use strict";var rt=Object.create;var p=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var it=Object.getPrototypeOf,pt=Object.prototype.hasOwnProperty;var st=(t,r)=>{for(var a in r)p(t,a,{get:r[a],enumerable:!0})},m=(t,r,a,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of ot(r))!pt.call(t,i)&&i!==a&&p(t,i,{get:()=>r[i],enumerable:!(u=at(r,i))||u.enumerable});return t};var e=(t,r,a)=>(a=t!=null?rt(it(t)):{},m(r||!t||!t.__esModule?p(a,"default",{value:t,enumerable:!0}):a,t)),ft=t=>m(p({},"__esModule",{value:!0}),t);var ct={};st(ct,{AccordionCards:()=>j.default,ActiveShelf:()=>_e.default,ActivityMechanism:()=>h.default,ActivitySchedule:()=>n.default,AiuiProvider:()=>R.default,AnchorNavigation:()=>qe.default,AplusDesc:()=>ye.default,BenefitsTab:()=>le.default,BizProductProvider:()=>Y.default,BrandCardLink:()=>ge.default,BrandEquity:()=>S.default,BuyOneGetOneShelf:()=>Ke.default,Category:()=>B.default,CreativeModule:()=>K.default,CreditsProductCard:()=>f.CreditsProductCard,CreditsShelf:()=>f.default,DownLoad:()=>Pe.default,Evaluate:()=>T.default,EventSchedule:()=>Re.default,Faq:()=>L.default,FeatureCards:()=>je.default,FeatureShowcase:()=>ke.default,FeaturedBlogPosts:()=>be.default,Features:()=>xe.default,FootCharger:()=>Ce.default,FooterNavigation:()=>W.default,GiftBox:()=>he.default,GiftShelf:()=>x.default,GiftTierShelf:()=>y.default,Graphic:()=>b.default,GraphicAttractionBlock:()=>V.default,GraphicMore:()=>ne.default,GraphicOverlay:()=>_.default,HeaderNavigation:()=>E.default,HeroBanner:()=>I.default,IPC_SEARCH_PAGE:()=>s.IPC_SEARCH_PAGE,IPRedirect:()=>lt,ImageOverlayShelf:()=>Qe.default,ImageTextFeature:()=>Ie.default,ImageTextOverlay:()=>Xe.default,ImageWithText:()=>De.default,Ksp:()=>Be.default,Marquee:()=>A.default,MarqueeImageContent:()=>o.MarqueeImageContent,MarqueeItem:()=>o.MarqueeItem,MarqueeReview:()=>k.default,MarqueeTextContent:()=>o.MarqueeTextContent,MediaEndorsement:()=>Ye.default,MediaPlayerBase:()=>D.default,MediaPlayerMulti:()=>G.default,MediaPlayerSticky:()=>F.default,MediaSceneSwitcher:()=>Oe.default,MediaSceneSwitcherV2:()=>Ve.default,MediaShelf:()=>Ue.default,MediaTextOverlay:()=>Je.default,MemberEquity:()=>P.default,MiniCart:()=>Ze.default,MiniCartCircleProgress:()=>$e.default,MiniCartDialog:()=>l.default,MiniCartDialogComponent:()=>l.MiniCartDialog,MultiLayoutGraphicBlock:()=>O.default,PAYLOAD_COMPONENT_MAP:()=>dt,PaidShipping:()=>ue.default,ProductActions:()=>Q.default,ProductBanner:()=>pe.default,ProductBenefits:()=>$.default,ProductBenefitsTabs:()=>Z.default,ProductBundle:()=>oe.default,ProductCard:()=>X.default,ProductCompare:()=>Te.default,ProductCoupon:()=>ie.default,ProductDetail:()=>de.default,ProductExchangePurchase:()=>re.default,ProductFreeGift:()=>te.default,ProductGallery:()=>fe.default,ProductGridBox:()=>se.default,ProductHero:()=>we.default,ProductHighlight:()=>ee.default,ProductLottery:()=>ve.default,ProductNav:()=>We.default,ProductOptions:()=>ae.default,ProductPaidShipping:()=>me.default,ProductSummary:()=>ce.default,PromotionalBar:()=>Ne.default,PurchaseBar:()=>J.default,SceneProductCard:()=>d.SceneProductCard,SceneShelf:()=>d.default,SceneShelfV2:()=>c.default,SceneShelfV2ProductCard:()=>c.SceneShelfV2ProductCard,SceneShelfV3:()=>ze.default,SearchPage:()=>q.default,SearchPageTabType:()=>s.SearchPageTabType,SecondaryBanner:()=>He.default,SelectStore:()=>Se.default,ShelfDisplay:()=>v.default,Slogan:()=>C.default,Spacer:()=>M.default,Specs:()=>U.default,SpecsComparison:()=>Le.default,TabGroup:()=>z.default,TabWithImage:()=>Ae.default,Tabs:()=>H.default,TabsWithMedia:()=>Ge.default,ThreeDCarousel:()=>Ee.default,Title:()=>g.default,VideoFeature:()=>Fe.default,WebPushPopup:()=>et.default,WheelLottery:()=>Me.default,WhyChoose:()=>w.default,useEmarsysWebPush:()=>tt.useEmarsysWebPush,withLayout:()=>N.withLayout});module.exports=ft(ct);var n=e(require("./ActivitySchedule/index.js")),x=e(require("./GiftShelf/index.js")),y=e(require("./GiftTierShelf/index.js")),h=e(require("./ActivityMechanism/index.js")),S=e(require("./BrandEquity/index.js")),P=e(require("./MemberEquity/index.js")),C=e(require("./Slogan/index.js")),g=e(require("./Title/index.js")),M=e(require("./Spacer/index.js")),v=e(require("./ShelfDisplay/index.js")),T=e(require("./Evaluate/index.js")),B=e(require("./Category/index.js")),I=e(require("./HeroBanner/index.js")),j=e(require("./AccordionCards/index.js")),b=e(require("./Graphic/index.js")),D=e(require("./MediaPlayerBase/index.js")),F=e(require("./MediaPlayerSticky/index.js")),G=e(require("./MediaPlayerMulti/index.js")),A=e(require("./Marquee/index.js")),k=e(require("./MarqueeReview/index.js")),w=e(require("./WhyChoose/index.js")),L=e(require("./Faq/index.js")),o=require("./Marquee/index.js"),O=e(require("./MultiLayoutGraphicBlock/index.js")),V=e(require("./GraphicAttractionBlock/index.js")),E=e(require("./HeaderNavigation/index.js")),W=e(require("./FooterNavigation/index.js")),q=e(require("./SearchPage/index.js")),s=require("./SearchPage/types.js"),N=require("../shared/Styles.js"),R=e(require("./AiuiProvider/index.js")),H=e(require("./Tabs/index.js")),K=e(require("./CreativeModule/index.js")),_=e(require("./GraphicOverlay/index.js")),U=e(require("./Specs/index.js")),z=e(require("./TabsGroup/index.js")),Y=e(require("./Listing/BizProductProvider.js")),J=e(require("./Listing/components/PurchaseBar/index.js")),Q=e(require("./Listing/components/PurchaseBar/ProductActions/index.js")),X=e(require("./Listing/components/ProductCard/index.js")),Z=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js")),$=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js")),ee=e(require("./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js")),te=e(require("./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js")),re=e(require("./Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js")),ae=e(require("./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js")),oe=e(require("./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js")),ie=e(require("./Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js")),pe=e(require("./Listing/components/ProductCard/ProductDetail/ProductBanner/index.js")),se=e(require("./Listing/components/ProductCard/ProductGridBox.js")),fe=e(require("./Listing/components/ProductCard/ProductGallery/index.js")),de=e(require("./Listing/components/ProductCard/ProductDetail/index.js")),ce=e(require("./Listing/components/ProductCard/ProductSummary/index.js")),le=e(require("./Listing/components/ProductCard/ProductDetail/BenefitsTab.js")),ue=e(require("./Listing/components/PaidShipping/index.js")),me=e(require("./Listing/components/ProductCard/ProductPaidShipping/index.js")),ne=e(require("./GraphicMore/index.js")),xe=e(require("./Features/index.js")),ye=e(require("./AplusDesc/index.js")),he=e(require("./GiftBox/index.js")),Se=e(require("./SelectStore/index.js")),Pe=e(require("./DownLoad/index.js")),Ce=e(require("./FootCharger/index.js")),ge=e(require("./BrandCardLink/index.js")),lt=e(require("./IPRedirect/index.js")),Me=e(require("./WheelLottery/index.js")),ve=e(require("./ProductLottery/index.js")),Te=e(require("./ProductCompare/index.js")),Be=e(require("./Ksp/index.js")),Ie=e(require("./ImageTextFeature/index.js")),je=e(require("./FeatureCards/index.js")),be=e(require("./FeaturedBlogPosts/index.js")),De=e(require("./ImageWithText/index.js")),Fe=e(require("./VideoFeature/index.js")),Ge=e(require("./TabsWithMedia/index.js")),Ae=e(require("./TabWithImage/index.js")),ke=e(require("./FeatureShowcase/index.js")),we=e(require("./ProductHero/index.js")),Le=e(require("./SpecsComparison/index.js")),Oe=e(require("./MediaSceneSwitcher/index.js")),Ve=e(require("./MediaSceneSwitcherV2/index.js")),Ee=e(require("./ThreeDCarousel/index.js")),We=e(require("./ProductNav/index.js")),qe=e(require("./AnchorNavigation/index.js")),Ne=e(require("./PromotionalBar/index.js")),Re=e(require("./EventSchedule/index.js")),He=e(require("./SecondaryBanner/index.js")),Ke=e(require("./BuyOneGetOneShelf/index.js")),_e=e(require("./ActiveShelf/index.js")),Ue=e(require("./MediaShelf/index.js")),f=e(require("./CreditsShelf/index.js")),d=e(require("./SceneShelf/index.js")),c=e(require("./SceneShelfV2/index.js")),ze=e(require("./SceneShelfV3/index.js")),Ye=e(require("./MediaEndorsement/index.js")),Je=e(require("./MediaTextOverlay/index.js")),Qe=e(require("./ImageOverlayShelf/index.js")),Xe=e(require("./ImageTextOverlay/index.js")),Ze=e(require("./MiniCart/index.js")),$e=e(require("./MiniCart/CircleProgress.js")),l=e(require("./MiniCart/MiniCartDialog.js")),et=e(require("./WebPushPopup/index.js")),tt=require("../hooks/useEmarsysWebPush.js");const dt={"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-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"TabsBlock","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-active-shelf":"ActiveShelf","ipc-media-shelf":"MediaShelf","ipc-bogo-shelf":"BuyOneGetOneShelf","ipc-media-endorsement":"MediaEndorsement","ipc-media-scene-switcher-v2":"MediaSceneSwitcherV2","ipc-featured-blog-posts":"FeaturedBlogPosts"};
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 { 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 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 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 } 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 ProductCard } from './Listing/components/ProductCard/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 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 { 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 ProductDetail } from './Listing/components/ProductCard/ProductDetail/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 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 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/**\n * \u7EC4\u4EF6\u6620\u5C04\u5BF9\u8C61\n */\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-slogan': 'Slogan',\n 'ipc-spacer': 'Spacer',\n 'ipc-specs': 'Specs',\n 'ipc-tabs': 'TabsBlock',\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 /**\n * \u6D3B\u52A8\u8D27\u67B6\n */\n 'ipc-active-shelf': 'ActiveShelf',\n 'ipc-media-shelf': 'MediaShelf',\n /**\n * \u6D3B\u52A8\u4E70\u8D60\u8D27\u67B6\n */\n 'ipc-bogo-shelf': 'BuyOneGetOneShelf',\n 'ipc-media-endorsement': 'MediaEndorsement',\n 'ipc-media-scene-switcher-v2': 'MediaSceneSwitcherV2',\n 'ipc-featured-blog-posts': 'FeaturedBlogPosts',\n}\n"],
5
- "mappings": "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",
6
- "names": ["biz_components_exports", "__export", "IPRedirect", "PAYLOAD_COMPONENT_MAP", "__toCommonJS", "import_ActivitySchedule", "import_GiftShelf", "import_GiftTierShelf", "import_ActivityMechanism", "import_BrandEquity", "import_MemberEquity", "import_Slogan", "import_Title", "import_Spacer", "import_ShelfDisplay", "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_CreativeModule", "import_GraphicOverlay", "import_Specs", "import_TabsGroup", "import_BizProductProvider", "import_PurchaseBar", "import_ProductActions", "import_ProductCard", "import_ProductBenefitsTabs", "import_ProductBenefits", "import_ProductHighlight", "import_ProductFreeGift", "import_ProductExchangePurchase", "import_ProductOptions", "import_ProductBundle", "import_ProductCoupon", "import_ProductBanner", "import_ProductGridBox", "import_ProductGallery", "import_ProductDetail", "import_ProductSummary", "import_BenefitsTab", "import_PaidShipping", "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_ImageTextOverlay", "import_MiniCart", "import_CircleProgress", "import_MiniCartDialog"]
4
+ "sourcesContent": ["export { 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 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 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 } 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 ProductCard } from './Listing/components/ProductCard/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 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 { 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 ProductDetail } from './Listing/components/ProductCard/ProductDetail/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 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 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 */\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-slogan': 'Slogan',\n 'ipc-spacer': 'Spacer',\n 'ipc-specs': 'Specs',\n 'ipc-tabs': 'TabsBlock',\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 /**\n * \u6D3B\u52A8\u8D27\u67B6\n */\n 'ipc-active-shelf': 'ActiveShelf',\n 'ipc-media-shelf': 'MediaShelf',\n /**\n * \u6D3B\u52A8\u4E70\u8D60\u8D27\u67B6\n */\n 'ipc-bogo-shelf': 'BuyOneGetOneShelf',\n 'ipc-media-endorsement': 'MediaEndorsement',\n 'ipc-media-scene-switcher-v2': 'MediaSceneSwitcherV2',\n 'ipc-featured-blog-posts': 'FeaturedBlogPosts',\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["biz_components_exports", "__export", "IPRedirect", "PAYLOAD_COMPONENT_MAP", "__toCommonJS", "import_ActivitySchedule", "import_GiftShelf", "import_GiftTierShelf", "import_ActivityMechanism", "import_BrandEquity", "import_MemberEquity", "import_Slogan", "import_Title", "import_Spacer", "import_ShelfDisplay", "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_CreativeModule", "import_GraphicOverlay", "import_Specs", "import_TabsGroup", "import_BizProductProvider", "import_PurchaseBar", "import_ProductActions", "import_ProductCard", "import_ProductBenefitsTabs", "import_ProductBenefits", "import_ProductHighlight", "import_ProductFreeGift", "import_ProductExchangePurchase", "import_ProductOptions", "import_ProductBundle", "import_ProductCoupon", "import_ProductBanner", "import_ProductGridBox", "import_ProductGallery", "import_ProductDetail", "import_ProductSummary", "import_BenefitsTab", "import_PaidShipping", "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_ImageTextOverlay", "import_MiniCart", "import_CircleProgress", "import_MiniCartDialog", "import_WebPushPopup", "import_useEmarsysWebPush"]
7
7
  }
@@ -0,0 +1,111 @@
1
+ export interface EmarsysContactInfo {
2
+ /** Emarsys 联系人字段 ID(如 10372) */
3
+ fieldId: number;
4
+ /** 字段值(如用户唯一标识) */
5
+ fieldValue: string;
6
+ }
7
+ export interface EmarsysInitConfig {
8
+ /** Emarsys Domain Code,从后台获取 */
9
+ applicationCode: string;
10
+ /** macOS Safari 16+ 使用 VAPID 替代 APNS */
11
+ enableMacSafariVapid?: boolean;
12
+ /** 默认推送通知标题 */
13
+ defaultNotificationTitle?: string;
14
+ /** 默认推送通知图标 URL */
15
+ defaultNotificationIcon?: string;
16
+ /** 是否自动触发浏览器订阅弹窗,强烈建议设为 false */
17
+ autoSubscribe?: boolean;
18
+ /** 开发阶段开启 SDK 日志 */
19
+ enableLogging?: boolean;
20
+ serviceWorker: {
21
+ /** Service Worker 文件路径(需放在网站根目录) */
22
+ url: string;
23
+ /** VAPID 公钥(Base64 URL-safe 编码) */
24
+ applicationServerPublicKey: string;
25
+ };
26
+ }
27
+ type EmarsysSdkEventName = 'onReady' | 'onSubscribe' | 'onUnsubscribe' | 'onPermissionPrompt' | 'onPermissionGranted' | 'onPermissionDenied' | 'onSWInitError';
28
+ type EmarsysSdkCommand = ['init', EmarsysInitConfig] | [EmarsysSdkEventName, () => void];
29
+ interface EmarsysSdkApi {
30
+ subscribe: () => void;
31
+ unsubscribe: () => void;
32
+ login: (contactInfo: EmarsysContactInfo) => Promise<boolean>;
33
+ logout: () => Promise<boolean>;
34
+ isSubscribed: () => Promise<boolean>;
35
+ isRegistered: () => boolean;
36
+ customEvent: (eventName: string, payload?: Record<string, unknown>) => Promise<boolean>;
37
+ push: (command: EmarsysSdkCommand | ((sdk: EmarsysSdkApi) => void)) => void;
38
+ }
39
+ declare global {
40
+ interface Window {
41
+ WebEmarsysSdk: EmarsysSdkApi | (EmarsysSdkCommand | ((sdk: EmarsysSdkApi) => void))[];
42
+ }
43
+ }
44
+ export interface UseEmarsysWebPushOptions {
45
+ /** Emarsys Domain Code */
46
+ applicationCode: string;
47
+ /** VAPID 公钥 */
48
+ applicationServerPublicKey: string;
49
+ /** Service Worker 路径,默认 'service-worker.js'(不含前导斜杠) */
50
+ serviceWorkerUrl?: string;
51
+ /** 默认通知标题 */
52
+ defaultNotificationTitle?: string;
53
+ /** 默认通知图标 URL */
54
+ defaultNotificationIcon?: string;
55
+ /** 联系人主键字段 ID(由 Emarsys 后台配置) */
56
+ fieldId: number;
57
+ /**
58
+ * 当前用户的联系人标识(如 hashed email / customer ID)。
59
+ * null 表示未登录的匿名访客。
60
+ */
61
+ contactValue: string | null;
62
+ /** 是否开启调试日志,默认 false */
63
+ enableLogging?: boolean;
64
+ /**
65
+ * 点击"稍后"后的弹窗冷却天数,默认 7 天。
66
+ * 冷却期间不再展示自定义弹窗。
67
+ */
68
+ dismissCooldownDays?: number;
69
+ /**
70
+ * SDK 是否已通过外部 <Script> 标签加载完毕。
71
+ * 传入此 flag 以便 hook 在正确时机初始化。
72
+ * 默认 true(假设 SDK 已经加载)。
73
+ */
74
+ sdkLoaded?: boolean;
75
+ }
76
+ export interface UseEmarsysWebPushReturn {
77
+ /** 手动触发浏览器原生订阅弹窗(供"订阅"按钮调用) */
78
+ subscribe: () => void;
79
+ /** 取消推送订阅 */
80
+ unsubscribe: () => void;
81
+ /** 是否应向用户展示自定义引导弹窗 */
82
+ shouldShowPopup: boolean;
83
+ /** 关闭自定义弹窗并写入冷却标记 */
84
+ dismissPopup: () => void;
85
+ /** 当前是否已订阅(异步检测完成后更新) */
86
+ isSubscribed: boolean;
87
+ /** SDK 是否就绪 */
88
+ isReady: boolean;
89
+ }
90
+ /**
91
+ * useEmarsysWebPush
92
+ *
93
+ * 封装 Emarsys Web Push SDK 的订阅生命周期,包括:
94
+ * - SDK 初始化
95
+ * - 自定义弹窗展示逻辑(两步策略,避免直接触发浏览器原生弹窗)
96
+ * - 已登录联系人的 login / logout 自动管理
97
+ * - 已有订阅用户的迁移(从旧推送系统迁移)
98
+ *
99
+ * @example
100
+ * ```tsx
101
+ * const { shouldShowPopup, subscribe, dismissPopup } = useEmarsysWebPush({
102
+ * applicationCode: process.env.NEXT_PUBLIC_EMARSYS_APP_CODE!,
103
+ * applicationServerPublicKey: process.env.NEXT_PUBLIC_EMARSYS_VAPID_PUBLIC_KEY!,
104
+ * fieldId: 10372,
105
+ * contactValue: user?.customerId ?? null,
106
+ * sdkLoaded: scriptLoaded,
107
+ * })
108
+ * ```
109
+ */
110
+ export declare function useEmarsysWebPush({ applicationCode, applicationServerPublicKey, serviceWorkerUrl, defaultNotificationTitle, defaultNotificationIcon, fieldId, contactValue, enableLogging, dismissCooldownDays, sdkLoaded, }: UseEmarsysWebPushOptions): UseEmarsysWebPushReturn;
111
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";var E=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var x=(e,i)=>{for(var o in i)E(e,o,{get:i[o],enumerable:!0})},T=(e,i,o,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let u of U(i))!D.call(e,u)&&u!==o&&E(e,u,{get:()=>i[u],enumerable:!(l=O(i,u))||l.enumerable});return e};var K=e=>T(E({},"__esModule",{value:!0}),e);var j={};x(j,{useEmarsysWebPush:()=>B});module.exports=K(j);var n=require("react");const w="emarsysSubscribe",m="emarsysLogin",W="anker_push_dismissed";function M(){return typeof navigator>"u"?!1:/iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase())}function Y(){return typeof window>"u"?!1:window.matchMedia("(display-mode: standalone)").matches||"standalone"in window.navigator&&window.navigator.standalone===!0}function a(e,i,o){try{if(e==="get")return localStorage.getItem(i);e==="set"&&o!==void 0&&localStorage.setItem(i,o),e==="remove"&&localStorage.removeItem(i)}catch{}return null}function c(){if(typeof window>"u")return null;const e=window.WebEmarsysSdk;return!e||Array.isArray(e)?null:e}function B({applicationCode:e,applicationServerPublicKey:i,serviceWorkerUrl:o="service-worker.js",defaultNotificationTitle:l,defaultNotificationIcon:u,fieldId:k,contactValue:d,enableLogging:h=!1,dismissCooldownDays:v=7,sdkLoaded:b=!0}){const[p,R]=(0,n.useState)(!1),[C,S]=(0,n.useState)(!1),[L,g]=(0,n.useState)(!1),y=(0,n.useRef)(!1),P=(0,n.useRef)(!1);(0,n.useEffect)(()=>{if(!b||typeof window>"u")return;const s=o.replace(/^\/+/,"").replace(/^https?:\/\/[^/]+\//,"");window.WebEmarsysSdk=window.WebEmarsysSdk||[],window.WebEmarsysSdk.push(["init",{applicationCode:e,enableMacSafariVapid:!0,defaultNotificationTitle:l,defaultNotificationIcon:u,autoSubscribe:!1,enableLogging:h,serviceWorker:{url:s,applicationServerPublicKey:i}}])},[b,e,i,o,l,u,h]);const f=(0,n.useCallback)(s=>{if(y.current)return;const r=c();r&&r.isSubscribed().then(t=>{t&&r.login({fieldId:k,fieldValue:s}).then(I=>{I&&(a("set",m,"login"),y.current=!0)})})},[k]),A=(0,n.useCallback)(()=>{const s=c();s&&s.isSubscribed().then(r=>{r&&s.logout().then(t=>{t&&(a("remove",m),y.current=!1)})})},[]);(0,n.useEffect)(()=>{if(!b||typeof window>"u"||M()&&!Y())return;window.WebEmarsysSdk=window.WebEmarsysSdk||[];const s=window.WebEmarsysSdk;s.push(["onReady",()=>{R(!0),c()?.isSubscribed().then(t=>{S(t)}),s.push(["onPermissionGranted",()=>{!a("get",w)&&!P.current&&(c()?.subscribe(),a("set",w,"subscribe"))}]);let r=!1;s.push(["onPermissionGranted",()=>{r=!0}]),s.push(["onPermissionDenied",()=>{r=!0}]),setTimeout(()=>{if(r)return;const t=a("get",W);t&&Date.now()-parseInt(t,10)<v*24*60*60*1e3||g(!0)},2e3)}]),s.push(["onSubscribe",()=>{S(!0),a("set",w,"subscribe"),d&&f(d)}]),s.push(["onUnsubscribe",()=>{S(!1)}])},[b,d,v,f]),(0,n.useEffect)(()=>{p&&(d?a("get",m)||f(d):a("get",m)&&A())},[p,d,f,A]);const G=(0,n.useCallback)(()=>{g(!1),P.current=!0;const s=c();if(!s){window.WebEmarsysSdk.push(t=>{t.subscribe()});return}s.subscribe()},[]),_=(0,n.useCallback)(()=>{c()?.unsubscribe()},[]),N=(0,n.useCallback)(()=>{g(!1),a("set",W,String(Date.now()))},[]);return{subscribe:G,unsubscribe:_,shouldShowPopup:L,dismissPopup:N,isSubscribed:C,isReady:p}}
2
+ //# sourceMappingURL=useEmarsysWebPush.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useEmarsysWebPush.ts"],
4
+ "sourcesContent": ["import { useCallback, useEffect, useRef, useState } from 'react'\n\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Emarsys Web Push SDK \u5168\u5C40\u7C7B\u578B\u58F0\u660E\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface EmarsysContactInfo {\n /** Emarsys \u8054\u7CFB\u4EBA\u5B57\u6BB5 ID\uFF08\u5982 10372\uFF09 */\n fieldId: number\n /** \u5B57\u6BB5\u503C\uFF08\u5982\u7528\u6237\u552F\u4E00\u6807\u8BC6\uFF09 */\n fieldValue: string\n}\n\nexport interface EmarsysInitConfig {\n /** Emarsys Domain Code\uFF0C\u4ECE\u540E\u53F0\u83B7\u53D6 */\n applicationCode: string\n /** macOS Safari 16+ \u4F7F\u7528 VAPID \u66FF\u4EE3 APNS */\n enableMacSafariVapid?: boolean\n /** \u9ED8\u8BA4\u63A8\u9001\u901A\u77E5\u6807\u9898 */\n defaultNotificationTitle?: string\n /** \u9ED8\u8BA4\u63A8\u9001\u901A\u77E5\u56FE\u6807 URL */\n defaultNotificationIcon?: string\n /** \u662F\u5426\u81EA\u52A8\u89E6\u53D1\u6D4F\u89C8\u5668\u8BA2\u9605\u5F39\u7A97\uFF0C\u5F3A\u70C8\u5EFA\u8BAE\u8BBE\u4E3A false */\n autoSubscribe?: boolean\n /** \u5F00\u53D1\u9636\u6BB5\u5F00\u542F SDK \u65E5\u5FD7 */\n enableLogging?: boolean\n serviceWorker: {\n /** Service Worker \u6587\u4EF6\u8DEF\u5F84\uFF08\u9700\u653E\u5728\u7F51\u7AD9\u6839\u76EE\u5F55\uFF09 */\n url: string\n /** VAPID \u516C\u94A5\uFF08Base64 URL-safe \u7F16\u7801\uFF09 */\n applicationServerPublicKey: string\n }\n}\n\ntype EmarsysSdkEventName =\n | 'onReady'\n | 'onSubscribe'\n | 'onUnsubscribe'\n | 'onPermissionPrompt'\n | 'onPermissionGranted'\n | 'onPermissionDenied'\n | 'onSWInitError'\n\ntype EmarsysSdkCommand = ['init', EmarsysInitConfig] | [EmarsysSdkEventName, () => void]\n\ninterface EmarsysSdkApi {\n subscribe: () => void\n unsubscribe: () => void\n login: (contactInfo: EmarsysContactInfo) => Promise<boolean>\n logout: () => Promise<boolean>\n isSubscribed: () => Promise<boolean>\n isRegistered: () => boolean\n customEvent: (eventName: string, payload?: Record<string, unknown>) => Promise<boolean>\n push: (command: EmarsysSdkCommand | ((sdk: EmarsysSdkApi) => void)) => void\n}\n\ndeclare global {\n interface Window {\n WebEmarsysSdk: EmarsysSdkApi | (EmarsysSdkCommand | ((sdk: EmarsysSdkApi) => void))[]\n }\n}\n\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Hook \u5165\u53C2\u7C7B\u578B\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface UseEmarsysWebPushOptions {\n /** Emarsys Domain Code */\n applicationCode: string\n /** VAPID \u516C\u94A5 */\n applicationServerPublicKey: string\n /** Service Worker \u8DEF\u5F84\uFF0C\u9ED8\u8BA4 'service-worker.js'\uFF08\u4E0D\u542B\u524D\u5BFC\u659C\u6760\uFF09 */\n serviceWorkerUrl?: string\n /** \u9ED8\u8BA4\u901A\u77E5\u6807\u9898 */\n defaultNotificationTitle?: string\n /** \u9ED8\u8BA4\u901A\u77E5\u56FE\u6807 URL */\n defaultNotificationIcon?: string\n /** \u8054\u7CFB\u4EBA\u4E3B\u952E\u5B57\u6BB5 ID\uFF08\u7531 Emarsys \u540E\u53F0\u914D\u7F6E\uFF09 */\n fieldId: number\n /**\n * \u5F53\u524D\u7528\u6237\u7684\u8054\u7CFB\u4EBA\u6807\u8BC6\uFF08\u5982 hashed email / customer ID\uFF09\u3002\n * null \u8868\u793A\u672A\u767B\u5F55\u7684\u533F\u540D\u8BBF\u5BA2\u3002\n */\n contactValue: string | null\n /** \u662F\u5426\u5F00\u542F\u8C03\u8BD5\u65E5\u5FD7\uFF0C\u9ED8\u8BA4 false */\n enableLogging?: boolean\n /**\n * \u70B9\u51FB\"\u7A0D\u540E\"\u540E\u7684\u5F39\u7A97\u51B7\u5374\u5929\u6570\uFF0C\u9ED8\u8BA4 7 \u5929\u3002\n * \u51B7\u5374\u671F\u95F4\u4E0D\u518D\u5C55\u793A\u81EA\u5B9A\u4E49\u5F39\u7A97\u3002\n */\n dismissCooldownDays?: number\n /**\n * SDK \u662F\u5426\u5DF2\u901A\u8FC7\u5916\u90E8 <Script> \u6807\u7B7E\u52A0\u8F7D\u5B8C\u6BD5\u3002\n * \u4F20\u5165\u6B64 flag \u4EE5\u4FBF hook \u5728\u6B63\u786E\u65F6\u673A\u521D\u59CB\u5316\u3002\n * \u9ED8\u8BA4 true\uFF08\u5047\u8BBE SDK \u5DF2\u7ECF\u52A0\u8F7D\uFF09\u3002\n */\n sdkLoaded?: boolean\n}\n\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Hook \u8FD4\u56DE\u503C\u7C7B\u578B\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface UseEmarsysWebPushReturn {\n /** \u624B\u52A8\u89E6\u53D1\u6D4F\u89C8\u5668\u539F\u751F\u8BA2\u9605\u5F39\u7A97\uFF08\u4F9B\"\u8BA2\u9605\"\u6309\u94AE\u8C03\u7528\uFF09 */\n subscribe: () => void\n /** \u53D6\u6D88\u63A8\u9001\u8BA2\u9605 */\n unsubscribe: () => void\n /** \u662F\u5426\u5E94\u5411\u7528\u6237\u5C55\u793A\u81EA\u5B9A\u4E49\u5F15\u5BFC\u5F39\u7A97 */\n shouldShowPopup: boolean\n /** \u5173\u95ED\u81EA\u5B9A\u4E49\u5F39\u7A97\u5E76\u5199\u5165\u51B7\u5374\u6807\u8BB0 */\n dismissPopup: () => void\n /** \u5F53\u524D\u662F\u5426\u5DF2\u8BA2\u9605\uFF08\u5F02\u6B65\u68C0\u6D4B\u5B8C\u6210\u540E\u66F4\u65B0\uFF09 */\n isSubscribed: boolean\n /** SDK \u662F\u5426\u5C31\u7EEA */\n isReady: boolean\n}\n\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// \u5DE5\u5177\u51FD\u6570\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst STORAGE_KEY_SUBSCRIBE = 'emarsysSubscribe'\nconst STORAGE_KEY_LOGIN = 'emarsysLogin'\nconst STORAGE_KEY_DISMISSED = 'anker_push_dismissed'\n\nfunction isIOS(): boolean {\n if (typeof navigator === 'undefined') return false\n return /iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase())\n}\n\nfunction isStandaloneWebApp(): boolean {\n if (typeof window === 'undefined') return false\n return (\n window.matchMedia('(display-mode: standalone)').matches ||\n // Safari standalone \u5C5E\u6027\uFF08\u975E\u6807\u51C6\uFF09\n ('standalone' in window.navigator && (window.navigator as Navigator & { standalone?: boolean }).standalone === true)\n )\n}\n\nfunction safeLocalStorage(action: 'get', key: string): string | null\nfunction safeLocalStorage(action: 'set', key: string, value: string): void\nfunction safeLocalStorage(action: 'remove', key: string): void\nfunction safeLocalStorage(action: 'get' | 'set' | 'remove', key: string, value?: string): string | null | void {\n try {\n if (action === 'get') return localStorage.getItem(key)\n if (action === 'set' && value !== undefined) localStorage.setItem(key, value)\n if (action === 'remove') localStorage.removeItem(key)\n } catch {\n // SSR \u6216\u9690\u79C1\u6A21\u5F0F\u4E0B localStorage \u4E0D\u53EF\u7528\n }\n return null\n}\n\nfunction getSdkApi(): EmarsysSdkApi | null {\n if (typeof window === 'undefined') return null\n const sdk = window.WebEmarsysSdk\n if (!sdk || Array.isArray(sdk)) return null\n return sdk as EmarsysSdkApi\n}\n\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// \u6838\u5FC3 Hook\n// \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * useEmarsysWebPush\n *\n * \u5C01\u88C5 Emarsys Web Push SDK \u7684\u8BA2\u9605\u751F\u547D\u5468\u671F\uFF0C\u5305\u62EC\uFF1A\n * - SDK \u521D\u59CB\u5316\n * - \u81EA\u5B9A\u4E49\u5F39\u7A97\u5C55\u793A\u903B\u8F91\uFF08\u4E24\u6B65\u7B56\u7565\uFF0C\u907F\u514D\u76F4\u63A5\u89E6\u53D1\u6D4F\u89C8\u5668\u539F\u751F\u5F39\u7A97\uFF09\n * - \u5DF2\u767B\u5F55\u8054\u7CFB\u4EBA\u7684 login / logout \u81EA\u52A8\u7BA1\u7406\n * - \u5DF2\u6709\u8BA2\u9605\u7528\u6237\u7684\u8FC1\u79FB\uFF08\u4ECE\u65E7\u63A8\u9001\u7CFB\u7EDF\u8FC1\u79FB\uFF09\n *\n * @example\n * ```tsx\n * const { shouldShowPopup, subscribe, dismissPopup } = useEmarsysWebPush({\n * applicationCode: process.env.NEXT_PUBLIC_EMARSYS_APP_CODE!,\n * applicationServerPublicKey: process.env.NEXT_PUBLIC_EMARSYS_VAPID_PUBLIC_KEY!,\n * fieldId: 10372,\n * contactValue: user?.customerId ?? null,\n * sdkLoaded: scriptLoaded,\n * })\n * ```\n */\nexport function useEmarsysWebPush({\n applicationCode,\n applicationServerPublicKey,\n serviceWorkerUrl = 'service-worker.js',\n defaultNotificationTitle,\n defaultNotificationIcon,\n fieldId,\n contactValue,\n enableLogging = false,\n dismissCooldownDays = 7,\n sdkLoaded = true,\n}: UseEmarsysWebPushOptions): UseEmarsysWebPushReturn {\n const [isReady, setIsReady] = useState(false)\n const [isSubscribed, setIsSubscribed] = useState(false)\n const [shouldShowPopup, setShouldShowPopup] = useState(false)\n\n // \u907F\u514D\u91CD\u590D login/logout\n const hasPerformedLogin = useRef(false)\n // \u8FFD\u8E2A\u5F53\u524D session \u5185\u662F\u5426\u5DF2\u4E3B\u52A8\u89E6\u53D1\u8FC7 subscribe\n const isGeneralSubscribeRef = useRef(false)\n\n // \u2500\u2500 \u521D\u59CB\u5316 SDK \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\n useEffect(() => {\n if (!sdkLoaded || typeof window === 'undefined') return\n\n // SDK v4.7.0 \u5185\u90E8 registerServiceWorker() \u6267\u884C `/${url}` \u62FC\u63A5\uFF0C\n // \u56E0\u6B64\u6B64\u5904\u5FC5\u987B\u4F20\u4E0D\u542B\u524D\u5BFC\u659C\u6760\u7684\u7EAF\u8DEF\u5F84\uFF08\u5982 'service-worker.js'\uFF09\uFF0C\n // \u4F20\u5165\u5E26\u659C\u6760\u7684\u8DEF\u5F84\u6216\u7EDD\u5BF9 URL \u5747\u4F1A\u5BFC\u81F4\u53CC\u659C\u6760/\u8DE8\u57DF SecurityError\u3002\n const swPath = serviceWorkerUrl.replace(/^\\/+/, '').replace(/^https?:\\/\\/[^/]+\\//, '')\n\n window.WebEmarsysSdk = window.WebEmarsysSdk || []\n const sdk = window.WebEmarsysSdk as (EmarsysSdkCommand | ((api: EmarsysSdkApi) => void))[]\n\n sdk.push([\n 'init',\n {\n applicationCode,\n enableMacSafariVapid: true,\n defaultNotificationTitle,\n defaultNotificationIcon,\n autoSubscribe: false,\n enableLogging,\n serviceWorker: {\n url: swPath,\n applicationServerPublicKey,\n },\n },\n ])\n }, [\n sdkLoaded,\n applicationCode,\n applicationServerPublicKey,\n serviceWorkerUrl,\n defaultNotificationTitle,\n defaultNotificationIcon,\n enableLogging,\n ])\n\n // \u2500\u2500 \u6267\u884C Emarsys login\uFF08\u5173\u8054\u5DF2\u77E5\u8054\u7CFB\u4EBA\uFF09\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\n const performLogin = useCallback(\n (value: string) => {\n if (hasPerformedLogin.current) return\n const api = getSdkApi()\n if (!api) return\n\n api.isSubscribed().then(subscribed => {\n if (!subscribed) return\n api.login({ fieldId, fieldValue: value }).then(result => {\n if (result) {\n safeLocalStorage('set', STORAGE_KEY_LOGIN, 'login')\n hasPerformedLogin.current = true\n }\n })\n })\n },\n [fieldId]\n )\n\n // \u2500\u2500 \u6267\u884C Emarsys logout\uFF08\u89E3\u9664\u8054\u7CFB\u4EBA\u5173\u8054\uFF09\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\n const performLogout = useCallback(() => {\n const api = getSdkApi()\n if (!api) return\n\n api.isSubscribed().then(subscribed => {\n if (!subscribed) return\n api.logout().then(result => {\n if (result) {\n safeLocalStorage('remove', STORAGE_KEY_LOGIN)\n hasPerformedLogin.current = false\n }\n })\n })\n }, [])\n\n // \u2500\u2500 \u6CE8\u518C SDK \u56DE\u8C03 & \u4E1A\u52A1\u903B\u8F91 \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\n useEffect(() => {\n if (!sdkLoaded || typeof window === 'undefined') return\n\n // iOS \u6D4F\u89C8\u5668\uFF08\u975E PWA \u6A21\u5F0F\uFF09\u4E0D\u505A\u4EFB\u4F55\u64CD\u4F5C\n if (isIOS() && !isStandaloneWebApp()) return\n\n window.WebEmarsysSdk = window.WebEmarsysSdk || []\n const sdk = window.WebEmarsysSdk as (EmarsysSdkCommand | ((api: EmarsysSdkApi) => void))[]\n\n sdk.push([\n 'onReady',\n () => {\n setIsReady(true)\n\n // \u68C0\u67E5\u5F53\u524D\u8BA2\u9605\u72B6\u6001\n getSdkApi()\n ?.isSubscribed()\n .then(subscribed => {\n setIsSubscribed(subscribed)\n })\n\n // \u5DF2\u6709\u8BA2\u9605\u7528\u6237\u8FC1\u79FB\uFF08\u65E7\u63A8\u9001\u7CFB\u7EDF \u2192 Emarsys\uFF09\n sdk.push([\n 'onPermissionGranted',\n () => {\n if (!safeLocalStorage('get', STORAGE_KEY_SUBSCRIBE) && !isGeneralSubscribeRef.current) {\n getSdkApi()?.subscribe()\n safeLocalStorage('set', STORAGE_KEY_SUBSCRIBE, 'subscribe')\n }\n },\n ])\n\n // \u5224\u65AD\u662F\u5426\u9700\u8981\u5C55\u793A\u81EA\u5B9A\u4E49\u5F15\u5BFC\u5F39\u7A97\n // \u5EF6\u8FDF 2 \u79D2\uFF0C\u7B49\u5F85 onPermissionGranted / onPermissionDenied \u5F02\u6B65\u56DE\u8C03\n let permissionAlreadyHandled = false\n sdk.push([\n 'onPermissionGranted',\n () => {\n permissionAlreadyHandled = true\n },\n ])\n sdk.push([\n 'onPermissionDenied',\n () => {\n permissionAlreadyHandled = true\n },\n ])\n\n setTimeout(() => {\n if (permissionAlreadyHandled) return\n\n // \u68C0\u67E5\u51B7\u5374\u671F\n const dismissedAt = safeLocalStorage('get', STORAGE_KEY_DISMISSED)\n if (dismissedAt) {\n const elapsed = Date.now() - parseInt(dismissedAt, 10)\n if (elapsed < dismissCooldownDays * 24 * 60 * 60 * 1000) return\n }\n\n setShouldShowPopup(true)\n }, 2000)\n },\n ])\n\n // \u8BA2\u9605\u6210\u529F\u540E\u66F4\u65B0\u72B6\u6001\u5E76\u6267\u884C login\n sdk.push([\n 'onSubscribe',\n () => {\n setIsSubscribed(true)\n safeLocalStorage('set', STORAGE_KEY_SUBSCRIBE, 'subscribe')\n if (contactValue) {\n performLogin(contactValue)\n }\n },\n ])\n\n sdk.push([\n 'onUnsubscribe',\n () => {\n setIsSubscribed(false)\n },\n ])\n }, [sdkLoaded, contactValue, dismissCooldownDays, performLogin])\n\n // \u2500\u2500 \u76D1\u542C contactValue \u53D8\u5316\uFF0C\u81EA\u52A8 login / logout \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\n useEffect(() => {\n if (!isReady) return\n\n if (contactValue) {\n if (!safeLocalStorage('get', STORAGE_KEY_LOGIN)) {\n performLogin(contactValue)\n }\n } else {\n if (safeLocalStorage('get', STORAGE_KEY_LOGIN)) {\n performLogout()\n }\n }\n }, [isReady, contactValue, performLogin, performLogout])\n\n // \u2500\u2500 \u5BF9\u5916\u66B4\u9732\u7684 API \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\n\n const subscribe = useCallback(() => {\n setShouldShowPopup(false)\n isGeneralSubscribeRef.current = true\n const api = getSdkApi()\n if (!api) {\n const sdk = window.WebEmarsysSdk as ((api: EmarsysSdkApi) => void)[]\n sdk.push(sdkApi => {\n sdkApi.subscribe()\n })\n return\n }\n api.subscribe()\n }, [])\n\n const unsubscribe = useCallback(() => {\n getSdkApi()?.unsubscribe()\n }, [])\n\n const dismissPopup = useCallback(() => {\n setShouldShowPopup(false)\n safeLocalStorage('set', STORAGE_KEY_DISMISSED, String(Date.now()))\n }, [])\n\n return {\n subscribe,\n unsubscribe,\n shouldShowPopup,\n dismissPopup,\n isSubscribed,\n isReady,\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["useEmarsysWebPush_exports", "__export", "useEmarsysWebPush", "__toCommonJS", "import_react", "STORAGE_KEY_SUBSCRIBE", "STORAGE_KEY_LOGIN", "STORAGE_KEY_DISMISSED", "isIOS", "isStandaloneWebApp", "safeLocalStorage", "action", "key", "value", "getSdkApi", "sdk", "applicationCode", "applicationServerPublicKey", "serviceWorkerUrl", "defaultNotificationTitle", "defaultNotificationIcon", "fieldId", "contactValue", "enableLogging", "dismissCooldownDays", "sdkLoaded", "isReady", "setIsReady", "isSubscribed", "setIsSubscribed", "shouldShowPopup", "setShouldShowPopup", "hasPerformedLogin", "isGeneralSubscribeRef", "swPath", "performLogin", "api", "subscribed", "result", "performLogout", "permissionAlreadyHandled", "dismissedAt", "subscribe", "sdkApi", "unsubscribe", "dismissPopup"]
7
+ }
@@ -15,7 +15,7 @@ export interface JumpOptions {
15
15
  /** 是否考虑 a11y @default false */
16
16
  a11y?: boolean;
17
17
  }
18
- export type HeroBannerSemanticName = 'root' | 'title' | 'subtitle' | 'buttonGroup' | 'primaryButton' | 'secondaryButton' | 'captionGroup';
18
+ export type HeroBannerSemanticName = 'root' | 'title' | 'subtitle' | 'buttonGroup' | 'primaryButton' | 'secondaryButton' | 'tertiaryButton' | 'captionGroup';
19
19
  declare const _default: React.ForwardRefExoticComponent<Omit<HeroBannerProps & {
20
20
  classNames?: Partial<Record<HeroBannerSemanticName, string>>;
21
21
  /**
@@ -1,2 +1,2 @@
1
- "use client";import{Fragment as De,jsx as e,jsxs as m}from"react/jsx-runtime";import ee,{useImperativeHandle as ye,useRef as y,useState as ve,useEffect as ke}from"react";import w from"gsap";import{ScrollTrigger as $}from"gsap/dist/ScrollTrigger";import te from"jump.js";import{useMediaQuery as ae}from"react-responsive";import{useInView as we}from"react-intersection-observer";import $e from"../../helpers/ScrollLoadVideo.js";import{Button as P,Heading as Be,Picture as I,Text as S,Countdown as Ne}from"../../components/index.js";import{cn as s}from"../../helpers/index.js";import{cva as B}from"class-variance-authority";import{withLayout as Ve}from"../../shared/Styles.js";import{useExposure as He}from"../../hooks/useExposure.js";import{trackUrlRef as M}from"../../shared/trackUrlRef.js";import{getLocalizedPath as Te}from"../../helpers/utils.js";import{useAiuiContext as ze}from"../AiuiProvider/index.js";import{sizeMap as Ce}from"../../components/button.js";import{VideoModal as Le}from"../VideoModal/index.js";import Pe from"./HeroBannerCarousel.js";const u="image",c="hero_banner",Ie=B("hero-banner-content lg-desktop:gap-[32px] absolute top-24 z-10 flex w-full flex-col gap-[24px]",{variants:{align:{left:"tablet:px-[32px] laptop:top-1/2 laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] laptop:-translate-y-1/2 left-0 px-[16px]",center:"tablet:top-[84px] laptop:top-[76px] desktop:top-[176px] lg-desktop:top-[192px] left-1/2 top-[84px] -translate-x-1/2 translate-y-0 items-center text-center"}},defaultVariants:{align:"left"}}),Se=B("hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]",{variants:{align:{left:"laptop:text-left",center:"text-center"}},defaultVariants:{align:"left"}}),Me=B("hero-banner-button-group lg-desktop:gap-3 flex items-center gap-2",{variants:{align:{left:"laptop:justify-start",center:"justify-center"}},defaultVariants:{align:"left"}}),Re=B("hero-banner-icon-group flex items-center gap-2",{variants:{align:{left:"justify-start",center:"justify-center"}},defaultVariants:{align:"left"}}),Ee=({size:l="base"})=>{const{width:v,height:p}=Ce[l];return e("svg",{width:v,height:p,viewBox:"0 0 20 20",fill:"currentcolor",xmlns:"http://www.w3.org/2000/svg",children:e("path",{d:"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z",fill:"currentcolor"})})},re=ee.forwardRef(({data:l,className:v,classNames:p={},onSecondaryClick:R,onPrimaryClick:E,jumpOptions:oe={},...D},j)=>{const{locale:A}=ze(),_={...{duration:500,offset:0},...oe},N=a=>!a||!A?a:Te(a,A),{label:O,title:n,subtitle:r,endDate:U,endDate_tz:ne,dateFormat:le,pcImage:f,padImage:G,mobileImage:k,pcVideo:se,padVideo:ie,mobileVideo:J,isShowVideo:pe,isVideoLoop:ue=!0,primaryButton:o,secondaryButton:t,theme:ce="light",size:V="default",titleSize:H,caption:q=[],blockLink:F,iconArray:W,align:g="left",enableParallax:Y=!0}=l,T=Array.isArray(q)?q:[],me=Array.isArray(W)?W:void 0,de=ae({query:"(max-width: 768px)"}),fe=ae({query:"(max-width: 1024px)"}),[Q,Z]=ve(!1),{ref:ge,inView:K}=we(),z=y(null),C=y(null),L=y(null),b=y(null),d=y(null),be=n?.trim()||r?.trim()||f?.alt?.trim()||void 0,xe=n!==void 0?n?.trim()||r?.trim()||f?.alt?.trim()||void 0:r&&r.trim()||"",he=r&&r.trim()||"";return He(d,{componentType:u,componentName:c,componentTitle:xe,componentDescription:he}),ye(j,()=>d.current),ke(()=>{if(l.items&&l.items.length>0||!Y)return;w.registerPlugin($);function a(){if(!b.current)return;const i=d.current?.clientHeight||100;window.innerHeight<=i?z.current=$.create({trigger:d.current,start:"top bottom",end:"bottom top",scrub:!0,onUpdate:x=>{const h=x.progress*40-20;w.set(b.current,{yPercent:h})}}):(L.current=$.create({trigger:d.current,start:"top bottom",end:"bottom bottom",scrub:!0,onUpdate:x=>{const h=x.progress*20-20;w.set(b.current,{yPercent:h})}}),C.current=$.create({trigger:d.current,start:"top top",end:"bottom top",scrub:!0,onUpdate:x=>{const h=x.progress*20;w.set(b.current,{yPercent:h})}}))}return K&&a(),()=>{z.current&&z.current.kill(),L.current&&L.current.kill(),C.current&&C.current.kill()}},[K,l.items,Y]),l.items&&l.items.length>0?e(Pe,{data:l,className:v,classNames:p,onPrimaryClick:E,onSecondaryClick:R,ref:j,...D}):e("div",{...D,ref:ge,"data-ui-component-id":"HeroBanner",children:m("div",{ref:d,className:s(ce==="dark"?"aiui-dark":"","text-info-primary relative w-full overflow-hidden",{"lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520] tablet:aspect-[768/660] aspect-[390/660]":V==="default","lg-desktop:aspect-[1920/800] desktop:aspect-[1440/640] laptop:aspect-[1024/480] tablet:aspect-[768/560] aspect-[390/560]":V==="sm"},v),children:[F&&e("a",{className:"absolute inset-0 z-10",href:M(N(F),`${u}_${c}`),"data-headless-type-name":`${u}#${c}`,"data-headless-title-desc-button":`${n}#${r}`,tabIndex:-1,"aria-hidden":"true","aria-label":be}),e("div",{ref:b,className:s("absolute left-0 top-0 size-full"),children:pe?m(De,{children:[e("div",{"data-video-poster":"true",className:"laptop:w-full absolute inset-0 h-full transition-opacity duration-500",children:e(I,{className:"absolute inset-0 size-full",imgClassName:"size-full object-cover",loading:"eager",fetchPriority:"high",alt:f?.alt||"",source:`${f?.url||""} , ${G?.url??(k?.url||"")} 1024, ${k?.url||""} 767`})}),e($e,{poster:void 0,src:de?J?.url:fe?ie?.url||J?.url:se?.url,className:"laptop:w-full absolute inset-0 h-full",videoClassName:"h-full object-cover",muted:!0,loop:ue,playsInline:!0,onPlaying:a=>{a.currentTarget.closest('[data-ui-component-id="HeroBanner"]')?.querySelector('[data-video-poster="true"]')?.classList.add("opacity-0")}})]}):e(I,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",fetchPriority:"high",alt:f?.alt||"",source:`${f?.url||""} , ${G?.url??(k?.url||"")} 1024, ${k?.url||""} 767`})}),m("div",{className:Ie({align:g}),children:[m("div",{className:Se({align:g}),children:[O&&e(S,{size:2,as:"p",className:s("hero-banner-label font-heading lg-desktop:text-[18px] desktop:text-base text-sm"),html:O}),n&&e(Be,{as:H==="4"?"h1":"h2",html:n,className:s("hero-banner-title",p.title),size:H?Number(H||"5"):V==="sm"?4:5}),r&&e(S,{as:"p",size:2,className:s("hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm",p.subtitle),html:r}),U&&e("div",{className:"mt-3",children:e(Ne,{endDate:U,endDate_tz:ne,dateFormat:le,variant:"spacious",align:g})})]}),m("div",{className:s(Me({align:g}),p.buttonGroup),children:[t?.isShowPlayVideoButton&&t?.playVideoButtonText?m(P,{onClick:()=>Z(!0),size:"lg",variant:"secondary",className:"hero-banner-play-video-button","data-headless-type-name":`${u}#${c}`,"data-headless-title-desc-button":`${n}#${r}#${t?.playVideoButtonText}`,children:[t?.playVideoButtonText," ",e(Ee,{size:"lg"})]}):t?.text?m(P,{"aria-label":n??r,size:"lg",variant:"secondary",className:s("hero-banner-secondary-button",p.secondaryButton),as:t?.isCustomSecondaryButton?"button":"a",href:M(N(t?.link),`${u}_${c}`),target:t?.target,rel:t?.target==="_blank"?t?.rel??"noopener noreferrer":t?.rel,onClick:a=>{if(t.link?.startsWith("#")){a.preventDefault();const i=document.querySelector(t.link);i&&te(i,_)}t?.isCustomSecondaryButton&&R?.(l,a,t?.customSecondaryEventId)},"data-headless-type-name":`${u}#${c}`,"data-headless-title-desc-button":`${n}#${r}#${t?.text}`,children:[t?.text,e("span",{className:"sr-only",children:n??r})]}):null,o&&o.text&&e(P,{"aria-label":n??r,size:"lg",variant:"primary",className:s("hero-banner-primary-button",p.primaryButton),as:o?.isCustomPrimaryButton?"button":"a",href:M(N(o.link),`${u}_${c}`),target:o?.target,rel:o?.target==="_blank"?o?.rel??"noopener noreferrer":o?.rel,onClick:a=>{if(o.link?.startsWith("#")){a.preventDefault();const i=document.querySelector(o.link);i&&te(i,_)}o?.isCustomPrimaryButton&&E?.(l,a,o?.customPrimaryEventId)},"data-headless-type-name":`${u}#${c}`,"data-headless-title-desc-button":`${n}#${r}#${o?.text}`,children:o.text})]}),e("div",{className:Re({align:g}),children:me?.map(a=>e("div",{className:"h-12",children:e(I,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",alt:a?.pcImage?.alt||"",source:a?.pcImage?.url})},a?.pcImage?.url||a?.pcImage?.alt))})]}),T.length>0&&e("div",{className:s("hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]",p.captionGroup),children:T.map((a,i)=>m(ee.Fragment,{children:[e(S,{size:2,className:s("hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]"),html:a.title}),i<T.length-1&&e("div",{className:s("bg-info-primary w-px")})]},a.title))}),Q&&e(Le,{visible:Q,videoUrl:t?.isYoutubeVideo?void 0:t?.videoUrl?.url,youTubeId:t?.isYoutubeVideo?t?.youtubeId:void 0,onCloseModal:()=>Z(!1)})]})})});re.displayName="HeroBanner";var nt=Ve(re);export{nt as default};
1
+ "use client";import{Fragment as _e,jsx as e,jsxs as d}from"react/jsx-runtime";import re,{useImperativeHandle as ke,useRef as v,useState as we,useEffect as $e}from"react";import B from"gsap";import{ScrollTrigger as N}from"gsap/dist/ScrollTrigger";import M from"jump.js";import{useMediaQuery as oe}from"react-responsive";import{useInView as Be}from"react-intersection-observer";import Ne from"../../helpers/ScrollLoadVideo.js";import{Button as T,Heading as Te,Picture as R,Text as D,Countdown as Ve}from"../../components/index.js";import{cn as p}from"../../helpers/index.js";import{cva as V}from"class-variance-authority";import{withLayout as He}from"../../shared/Styles.js";import{useExposure as ze}from"../../hooks/useExposure.js";import{trackUrlRef as H}from"../../shared/trackUrlRef.js";import{getLocalizedPath as Ce}from"../../helpers/utils.js";import{useAiuiContext as Le}from"../AiuiProvider/index.js";import{sizeMap as Ie}from"../../components/button.js";import{VideoModal as Pe}from"../VideoModal/index.js";import Se from"./HeroBannerCarousel.js";const c="image",m="hero_banner",Ee=V("hero-banner-content lg-desktop:gap-[32px] absolute top-24 z-10 flex w-full flex-col gap-[24px]",{variants:{align:{left:"tablet:px-[32px] laptop:top-1/2 laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] laptop:-translate-y-1/2 left-0 px-[16px]",center:"tablet:top-[84px] laptop:top-[76px] desktop:top-[176px] lg-desktop:top-[192px] left-1/2 top-[84px] -translate-x-1/2 translate-y-0 items-center text-center"}},defaultVariants:{align:"left"}}),Me=V("hero-banner-wrap-text lg-desktop:max-w-[824px] desktop:max-w-[648px] laptop:max-w-[440px] tablet:max-w-[704px] max-w-[358px]",{variants:{align:{left:"laptop:text-left",center:"text-center"}},defaultVariants:{align:"left"}}),Re=V("hero-banner-button-group lg-desktop:gap-x-3 flex flex-wrap items-center gap-x-2 gap-y-3",{variants:{align:{left:"laptop:justify-start",center:"justify-center"}},defaultVariants:{align:"left"}}),De=V("hero-banner-icon-group flex items-center gap-2",{variants:{align:{left:"justify-start",center:"justify-center"}},defaultVariants:{align:"left"}}),je=({size:i="base"})=>{const{width:k,height:u}=Ie[i];return e("svg",{width:k,height:u,viewBox:"0 0 20 20",fill:"currentcolor",xmlns:"http://www.w3.org/2000/svg",children:e("path",{d:"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z",fill:"currentcolor"})})},ne=re.forwardRef(({data:i,className:k,classNames:u={},onSecondaryClick:j,onPrimaryClick:_,onTertiaryClick:A,jumpOptions:le={},...O},U)=>{const{locale:q}=Le(),z={...{duration:500,offset:0},...le},w=t=>!t||!q?t:Ce(t,q),{label:G,title:o,subtitle:r,endDate:J,endDate_tz:se,dateFormat:ie,pcImage:g,padImage:F,mobileImage:$,pcVideo:pe,padVideo:ue,mobileVideo:W,isShowVideo:ce,isVideoLoop:me=!0,primaryButton:n,secondaryButton:a,tertiaryButton:l,theme:de="light",size:C="default",titleSize:L,caption:Y=[],blockLink:Q,iconArray:Z,align:b="left",enableParallax:K=!0}=i,I=Array.isArray(Y)?Y:[],fe=Array.isArray(Z)?Z:void 0,ge=oe({query:"(max-width: 768px)"}),be=oe({query:"(max-width: 1024px)"}),[X,ee]=we(!1),{ref:xe,inView:te}=Be(),P=v(null),S=v(null),E=v(null),x=v(null),f=v(null),ye=o?.trim()||r?.trim()||g?.alt?.trim()||void 0,he=o!==void 0?o?.trim()||r?.trim()||g?.alt?.trim()||void 0:r&&r.trim()||"",ve=r&&r.trim()||"";return ze(f,{componentType:c,componentName:m,componentTitle:he,componentDescription:ve}),ke(U,()=>f.current),$e(()=>{if(i.items&&i.items.length>0||!K)return;B.registerPlugin(N);function t(){if(!x.current)return;const s=f.current?.clientHeight||100;window.innerHeight<=s?P.current=N.create({trigger:f.current,start:"top bottom",end:"bottom top",scrub:!0,onUpdate:y=>{const h=y.progress*40-20;B.set(x.current,{yPercent:h})}}):(E.current=N.create({trigger:f.current,start:"top bottom",end:"bottom bottom",scrub:!0,onUpdate:y=>{const h=y.progress*20-20;B.set(x.current,{yPercent:h})}}),S.current=N.create({trigger:f.current,start:"top top",end:"bottom top",scrub:!0,onUpdate:y=>{const h=y.progress*20;B.set(x.current,{yPercent:h})}}))}return te&&t(),()=>{P.current&&P.current.kill(),E.current&&E.current.kill(),S.current&&S.current.kill()}},[te,i.items,K]),i.items&&i.items.length>0?e(Se,{data:i,className:k,classNames:u,onPrimaryClick:_,onSecondaryClick:j,onTertiaryClick:A,ref:U,...O}):e("div",{...O,ref:xe,"data-ui-component-id":"HeroBanner",children:d("div",{ref:f,className:p(de==="dark"?"aiui-dark":"","text-info-primary relative w-full overflow-hidden",{"lg-desktop:aspect-[1920/930] desktop:aspect-[1440/700] laptop:aspect-[1024/520] tablet:aspect-[768/660] aspect-[390/660]":C==="default","lg-desktop:aspect-[1920/800] desktop:aspect-[1440/640] laptop:aspect-[1024/480] tablet:aspect-[768/560] aspect-[390/560]":C==="sm"},k),children:[Q&&e("a",{className:"absolute inset-0 z-10",href:H(w(Q),`${c}_${m}`),"data-headless-type-name":`${c}#${m}`,"data-headless-title-desc-button":`${o}#${r}`,tabIndex:-1,"aria-hidden":"true","aria-label":ye}),e("div",{ref:x,className:p("absolute left-0 top-0 size-full"),children:ce?d(_e,{children:[e("div",{"data-video-poster":"true",className:"laptop:w-full absolute inset-0 h-full transition-opacity duration-500",children:e(R,{className:"absolute inset-0 size-full",imgClassName:"size-full object-cover",loading:"eager",fetchPriority:"high",alt:g?.alt||"",source:`${g?.url||""} , ${F?.url??($?.url||"")} 1024, ${$?.url||""} 767`})}),e(Ne,{poster:void 0,src:ge?W?.url:be?ue?.url||W?.url:pe?.url,className:"laptop:w-full absolute inset-0 h-full",videoClassName:"h-full object-cover",muted:!0,loop:me,playsInline:!0,onPlaying:t=>{t.currentTarget.closest('[data-ui-component-id="HeroBanner"]')?.querySelector('[data-video-poster="true"]')?.classList.add("opacity-0")}})]}):e(R,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",fetchPriority:"high",alt:g?.alt||"",source:`${g?.url||""} , ${F?.url??($?.url||"")} 1024, ${$?.url||""} 767`})}),d("div",{className:Ee({align:b}),children:[d("div",{className:Me({align:b}),children:[G&&e(D,{size:2,as:"p",className:p("hero-banner-label font-heading lg-desktop:text-[18px] desktop:text-base text-sm"),html:G}),o&&e(Te,{as:L==="4"?"h1":"h2",html:o,className:p("hero-banner-title",u.title),size:L?Number(L||"5"):C==="sm"?4:5}),r&&e(D,{as:"p",size:2,className:p("hero-banner-subtitle font-heading lg-desktop:text-[18px] desktop:text-base laptop:mt-2 lg-desktop:mt-4 mt-1 text-sm",u.subtitle),html:r}),J&&e("div",{className:"mt-3",children:e(Ve,{endDate:J,endDate_tz:se,dateFormat:ie,variant:"spacious",align:b})})]}),d("div",{className:p(Re({align:b}),u.buttonGroup),children:[d("div",{className:"lg-desktop:gap-3 flex items-center gap-2",children:[a?.isShowPlayVideoButton&&a?.playVideoButtonText?d(T,{onClick:()=>ee(!0),size:"lg",variant:"secondary",className:"hero-banner-play-video-button","data-headless-type-name":`${c}#${m}`,"data-headless-title-desc-button":`${o}#${r}#${a?.playVideoButtonText}`,children:[a?.playVideoButtonText," ",e(je,{size:"lg"})]}):a?.text?d(T,{"aria-label":o??r,size:"lg",variant:"secondary",className:p("hero-banner-secondary-button",u.secondaryButton),as:a?.isCustomSecondaryButton?"button":"a",href:H(w(a?.link),`${c}_${m}`),target:a?.target,rel:a?.target==="_blank"?a?.rel??"noopener noreferrer":a?.rel,onClick:t=>{if(a.link?.startsWith("#")){t.preventDefault();const s=document.querySelector(a.link);s&&M(s,z)}a?.isCustomSecondaryButton&&j?.(i,t,a?.customSecondaryEventId)},"data-headless-type-name":`${c}#${m}`,"data-headless-title-desc-button":`${o}#${r}#${a?.text}`,children:[a?.text,e("span",{className:"sr-only",children:o??r})]}):null,n&&n.text&&e(T,{"aria-label":o??r,size:"lg",variant:"primary",className:p("hero-banner-primary-button",u.primaryButton),as:n?.isCustomPrimaryButton?"button":"a",href:H(w(n.link),`${c}_${m}`),target:n?.target,rel:n?.target==="_blank"?n?.rel??"noopener noreferrer":n?.rel,onClick:t=>{if(n.link?.startsWith("#")){t.preventDefault();const s=document.querySelector(n.link);s&&M(s,z)}n?.isCustomPrimaryButton&&_?.(i,t,n?.customPrimaryEventId)},"data-headless-type-name":`${c}#${m}`,"data-headless-title-desc-button":`${o}#${r}#${n?.text}`,children:n.text})]}),l&&l.text&&d(T,{"aria-label":o??r,size:"lg",variant:"link",className:p("hero-banner-tertiary-button w-auto p-0",u.tertiaryButton),as:l?.isCustomTertiaryButton?"button":"a",href:H(w(l.link),`${c}_${m}`),target:l?.target,rel:l?.target==="_blank"?l?.rel??"noopener noreferrer":l?.rel,onClick:t=>{if(l.link?.startsWith("#")){t.preventDefault();const s=document.querySelector(l.link);s&&M(s,z)}l?.isCustomTertiaryButton&&A?.(i,t,l?.customTertiaryEventId)},"data-headless-type-name":`${c}#${m}`,"data-headless-title-desc-button":`${o}#${r}#${l?.text}`,children:[l.text,e("span",{className:"sr-only",children:o??r})]})]}),e("div",{className:De({align:b}),children:fe?.map(t=>e("div",{className:"h-12",children:e(R,{className:"laptop:w-full h-full",imgClassName:"h-full object-cover",loading:"eager",alt:t?.pcImage?.alt||"",source:t?.pcImage?.url})},t?.pcImage?.url||t?.pcImage?.alt))})]}),I.length>0&&e("div",{className:p("hero-banner-caption-group laptop:gap-3 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] desktop:pb-[24px] absolute bottom-0 z-10 flex items-stretch gap-2 px-[16px] pb-[16px]",u.captionGroup),children:I.map((t,s)=>d(re.Fragment,{children:[e(D,{size:2,className:p("hero-banner-product-text tablet:w-[108px] loptop:w-[150px] desktop:w-[156px] lg-desktop:w-[180px] laptop:text-[14px] flex-1 text-[12px]"),html:t.title}),s<I.length-1&&e("div",{className:p("bg-info-primary w-px")})]},t.title))}),X&&e(Pe,{visible:X,videoUrl:a?.isYoutubeVideo?void 0:a?.videoUrl?.url,youTubeId:a?.isYoutubeVideo?a?.youtubeId:void 0,onCloseModal:()=>ee(!1)})]})})});ne.displayName="HeroBanner";var st=He(ne);export{st as default};
2
2
  //# sourceMappingURL=HeroBanner.js.map