@anker-in/headless-ui 1.0.26-alpha.1762934846441 → 1.0.26-alpha.1762942609078

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 (33) hide show
  1. package/dist/cjs/biz-components/Listing/components/PaidShipping/index.js +1 -1
  2. package/dist/cjs/biz-components/Listing/components/PaidShipping/index.js.map +2 -2
  3. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +2 -2
  4. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +2 -2
  5. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
  6. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
  7. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.js +1 -1
  8. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +2 -2
  9. package/dist/cjs/biz-components/Listing/components/PurchaseBar/ScrollSpyNav/index.js +1 -1
  10. package/dist/cjs/biz-components/Listing/components/PurchaseBar/ScrollSpyNav/index.js.map +3 -3
  11. package/dist/cjs/biz-components/Listing/hooks/useBenefits.js +1 -1
  12. package/dist/cjs/biz-components/Listing/hooks/useBenefits.js.map +3 -3
  13. package/dist/cjs/biz-components/Listing/hooks/useDiscountEnable.js +1 -1
  14. package/dist/cjs/biz-components/Listing/hooks/useDiscountEnable.js.map +1 -1
  15. package/dist/cjs/biz-components/Title/index.js +1 -1
  16. package/dist/cjs/biz-components/Title/index.js.map +3 -3
  17. package/dist/esm/biz-components/Listing/components/PaidShipping/index.js +1 -1
  18. package/dist/esm/biz-components/Listing/components/PaidShipping/index.js.map +2 -2
  19. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +2 -2
  20. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +2 -2
  21. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
  22. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
  23. package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.js +1 -1
  24. package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +2 -2
  25. package/dist/esm/biz-components/Listing/components/PurchaseBar/ScrollSpyNav/index.js +1 -1
  26. package/dist/esm/biz-components/Listing/components/PurchaseBar/ScrollSpyNav/index.js.map +3 -3
  27. package/dist/esm/biz-components/Listing/hooks/useBenefits.js +1 -1
  28. package/dist/esm/biz-components/Listing/hooks/useBenefits.js.map +3 -3
  29. package/dist/esm/biz-components/Listing/hooks/useDiscountEnable.js +1 -1
  30. package/dist/esm/biz-components/Listing/hooks/useDiscountEnable.js.map +1 -1
  31. package/dist/esm/biz-components/Title/index.js +1 -1
  32. package/dist/esm/biz-components/Title/index.js.map +2 -2
  33. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{useBizProductContext as b}from"../BizProductProvider";import{checkItemAvailableForProduct as B}from"../utils/helper";import{useDiscountEnable as h}from"./useDiscountEnable";import{useAiuiContext as C}from"../../AiuiProvider/index.js";import"react";const M=({variant:e})=>{const{coupon:l,product:u,bundle:t,freeGift:s,memberFunctionResult:i,creditsRedemptionAmount:f,discount:D,profile:r,savingDetail:I}=b(),{trackingData:o}=C(),m=Math.max(i?.withCouponMemberTotalSave??0,i?.withoutCouponMaxMemberTotalSave??0),a=h({profile:r,variant:e,memberFunctionResult:i,coupon:l}),p=!!(o?.paidShipping&&e.requiresShipping&&!e?.metafields?.global?.presell&&!e?.metafields?.global?.HideShipping),c=o?.freeGift,d=c?.excludeProducts?.map(n=>typeof n=="object"&&"sku"in n?n.sku:n)??[],g=o?.levelDiscount&&B({product:u,variant:e,item:o?.levelDiscount});return{commonCoupon:{enable:a.showCommonCoupon&&!!l,config:l??{}},freeGift:{enable:!!s&&!!s?.giftList?.length,config:s},bundle:{enable:!!t&&!!t?.bundleList?.length&&Math.max(...t?.bundleList?.map(n=>n.savings??0))>0,config:t},memberDiscount:{enable:a.showMemberDiscount,config:{amount:m,description:i?.labels?.[0]}},creditsRedemption:{enable:!!f&&f>0,config:{amount:f,label:o?.creditsRedemptionLabel}},paidShipping:{enable:p,config:{}},fullGift:{enable:!!(c&&!d.includes(e.sku)),config:c??{}},levelDiscount:{enable:!!g,config:o?.levelDiscount??{}}}};export{M as useBenefits};
1
+ import{useBizProductContext as b}from"../BizProductProvider";import{checkItemAvailableForProduct as B}from"../utils/helper";import{useDiscountEnable as h}from"./useDiscountEnable";import{useAiuiContext as C}from"../../AiuiProvider/index.js";import"react";const S=({variant:e})=>{const{coupon:l,product:a,bundle:t,freeGift:s,memberFunctionResult:i,creditsRedemptionAmount:f,profile:r}=b(),{trackingData:o}=C(),m=Math.max(i?.withCouponMemberTotalSave??0,i?.withoutCouponMaxMemberTotalSave??0),u=h({profile:r,variant:e,memberFunctionResult:i,coupon:l}),p=!!(o?.paidShipping&&e.requiresShipping&&!e?.metafields?.global?.presell&&!e?.metafields?.global?.HideShipping),c=o?.freeGift,d=c?.excludeProducts?.map(n=>typeof n=="object"&&"sku"in n?n.sku:n)??[],g=o?.levelDiscount&&B({product:a,variant:e,item:o?.levelDiscount});return{commonCoupon:{enable:u.showCommonCoupon&&!!l,config:l??{}},freeGift:{enable:!!s&&!!s?.giftList?.length,config:s},bundle:{enable:!!t&&!!t?.bundleList?.length&&Math.max(...t?.bundleList?.map(n=>n.savings??0))>0,config:t},memberDiscount:{enable:u.showMemberDiscount,config:{amount:m,description:i?.labels?.[0]}},creditsRedemption:{enable:!!f&&f>0,config:{amount:f,label:o?.creditsRedemptionLabel}},paidShipping:{enable:p,config:{}},fullGift:{enable:!!(c&&!d.includes(e.sku)),config:c??{}},levelDiscount:{enable:!!g,config:o?.levelDiscount??{}}}};export{S as useBenefits};
2
2
  //# sourceMappingURL=useBenefits.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/biz-components/Listing/hooks/useBenefits.ts"],
4
- "sourcesContent": ["import { useBizProductContext } from '../BizProductProvider'\nimport type { ProductVariant, FreeGift, Bundle } from '../types/product'\nimport { checkItemAvailableForProduct } from '../utils/helper'\nimport { useDiscountEnable } from './useDiscountEnable'\n\nimport { useAiuiContext } from '../../AiuiProvider/index.js'\nimport { useMemo } from 'react'\n\ninterface BenefitsParams {\n variant: ProductVariant\n}\n\ninterface BenefitItemConfig<T extends Record<string, any> = Record<string, any>> {\n enable: boolean\n config?: T // \u539F\u59CB\u914D\u7F6E\n}\n\ninterface BenefitsResult {\n /**\n * \u901A\u7528\u4F18\u60E0\u5238\n */\n commonCoupon?: BenefitItemConfig\n /**\n * \u4E70\u8D60\n */\n freeGift: BenefitItemConfig<FreeGift>\n /**\n * \u6346\u7ED1\u6298\u6263\n */\n bundle: BenefitItemConfig<Bundle>\n /**\n * \u4F1A\u5458\u4EF7\n */\n memberDiscount: BenefitItemConfig\n /**\n * \u79EF\u5206\u62B5\u73B0\n */\n creditsRedemption: BenefitItemConfig\n /**\n * \u9AD8\u6807\u7269\u6D41\n */\n paidShipping: BenefitItemConfig\n\n /**\n * \u6EE1\u8D60\n */\n fullGift: BenefitItemConfig\n\n /**\n * \u6EE1\u51CF\u6298\u6263\n */\n levelDiscount: BenefitItemConfig\n}\n\n/**\n * \u5546\u54C1\u6743\u76CA\n * \u83B7\u53D6\u5F53\u524Dsku \u6240\u6709\u7684\u6743\u76CA\n * \u5305\u62EC \u901A\u7528\u4F18\u60E0\u5238\uFF0C\u4F1A\u5458\u4EF7\uFF0C\u6EE1\u51CF\uFF0C\u6346\u7ED1\u6298\u6263\uFF0C\u4E70\u8D60 \uFF0C\u6EE1\u8D60 \uFF0C\u79EF\u5206\u62B5\u73B0\n * @returns\n */\nexport const useBenefits = ({ variant }: BenefitsParams): BenefitsResult => {\n const {\n coupon,\n product,\n bundle,\n freeGift,\n memberFunctionResult,\n creditsRedemptionAmount,\n discount,\n profile,\n savingDetail,\n } = useBizProductContext()\n\n const { trackingData } = useAiuiContext()\n\n const total = Math.max(\n memberFunctionResult?.withCouponMemberTotalSave ?? 0,\n memberFunctionResult?.withoutCouponMaxMemberTotalSave ?? 0\n )\n\n const discountEnable = useDiscountEnable({ profile, variant, memberFunctionResult, coupon })\n\n // \u9AD8\u6807\u7269\u6D41\n const showPaidShipping = Boolean(\n trackingData?.paidShipping &&\n variant.requiresShipping &&\n !variant?.metafields?.global?.presell &&\n !variant?.metafields?.global?.HideShipping\n )\n\n // \u811A\u672C\u6EE1\u8D60\n const fullGift = trackingData?.freeGift\n const excludeProducts =\n fullGift?.excludeProducts?.map((item: any) => (typeof item === 'object' && 'sku' in item ? item.sku : item)) ?? []\n\n const showLevelDiscount =\n trackingData?.levelDiscount && checkItemAvailableForProduct({ product, variant, item: trackingData?.levelDiscount })\n\n return {\n commonCoupon: {\n enable: discountEnable.showCommonCoupon && Boolean(coupon),\n config: coupon ?? {},\n },\n freeGift: {\n enable: Boolean(freeGift) && !!freeGift?.giftList?.length,\n config: freeGift,\n },\n bundle: {\n enable:\n Boolean(bundle) &&\n !!bundle?.bundleList?.length &&\n Math.max(...bundle?.bundleList?.map(item => item.savings ?? 0)) > 0, // \u6709\u4F18\u60E0\u624D\u5C55\u793A\n config: bundle,\n },\n memberDiscount: {\n enable: discountEnable.showMemberDiscount,\n // enable: total > 0,\n config: {\n amount: total,\n description: memberFunctionResult?.labels?.[0],\n },\n },\n creditsRedemption: {\n enable: Boolean(creditsRedemptionAmount) && creditsRedemptionAmount! > 0,\n config: { amount: creditsRedemptionAmount, label: trackingData?.creditsRedemptionLabel },\n },\n paidShipping: {\n enable: showPaidShipping,\n config: {},\n },\n fullGift: {\n enable: Boolean(fullGift && !excludeProducts.includes(variant.sku)),\n config: fullGift ?? {},\n },\n levelDiscount: {\n enable: Boolean(showLevelDiscount),\n config: trackingData?.levelDiscount ?? {},\n },\n }\n}\n"],
5
- "mappings": "AAAA,OAAS,wBAAAA,MAA4B,wBAErC,OAAS,gCAAAC,MAAoC,kBAC7C,OAAS,qBAAAC,MAAyB,sBAElC,OAAS,kBAAAC,MAAsB,8BAC/B,MAAwB,QAsDjB,MAAMC,EAAc,CAAC,CAAE,QAAAC,CAAQ,IAAsC,CAC1E,KAAM,CACJ,OAAAC,EACA,QAAAC,EACA,OAAAC,EACA,SAAAC,EACA,qBAAAC,EACA,wBAAAC,EACA,SAAAC,EACA,QAAAC,EACA,aAAAC,CACF,EAAId,EAAqB,EAEnB,CAAE,aAAAe,CAAa,EAAIZ,EAAe,EAElCa,EAAQ,KAAK,IACjBN,GAAsB,2BAA6B,EACnDA,GAAsB,iCAAmC,CAC3D,EAEMO,EAAiBf,EAAkB,CAAE,QAAAW,EAAS,QAAAR,EAAS,qBAAAK,EAAsB,OAAAJ,CAAO,CAAC,EAGrFY,EAAmB,GACvBH,GAAc,cACZV,EAAQ,kBACR,CAACA,GAAS,YAAY,QAAQ,SAC9B,CAACA,GAAS,YAAY,QAAQ,cAI5Bc,EAAWJ,GAAc,SACzBK,EACJD,GAAU,iBAAiB,IAAKE,GAAe,OAAOA,GAAS,UAAY,QAASA,EAAOA,EAAK,IAAMA,CAAK,GAAK,CAAC,EAE7GC,EACJP,GAAc,eAAiBd,EAA6B,CAAE,QAAAM,EAAS,QAAAF,EAAS,KAAMU,GAAc,aAAc,CAAC,EAErH,MAAO,CACL,aAAc,CACZ,OAAQE,EAAe,kBAAoB,EAAQX,EACnD,OAAQA,GAAU,CAAC,CACrB,EACA,SAAU,CACR,OAAQ,EAAQG,GAAa,CAAC,CAACA,GAAU,UAAU,OACnD,OAAQA,CACV,EACA,OAAQ,CACN,OACE,EAAQD,GACR,CAAC,CAACA,GAAQ,YAAY,QACtB,KAAK,IAAI,GAAGA,GAAQ,YAAY,IAAIa,GAAQA,EAAK,SAAW,CAAC,CAAC,EAAI,EACpE,OAAQb,CACV,EACA,eAAgB,CACd,OAAQS,EAAe,mBAEvB,OAAQ,CACN,OAAQD,EACR,YAAaN,GAAsB,SAAS,CAAC,CAC/C,CACF,EACA,kBAAmB,CACjB,OAAQ,EAAQC,GAA4BA,EAA2B,EACvE,OAAQ,CAAE,OAAQA,EAAyB,MAAOI,GAAc,sBAAuB,CACzF,EACA,aAAc,CACZ,OAAQG,EACR,OAAQ,CAAC,CACX,EACA,SAAU,CACR,OAAQ,GAAQC,GAAY,CAACC,EAAgB,SAASf,EAAQ,GAAG,GACjE,OAAQc,GAAY,CAAC,CACvB,EACA,cAAe,CACb,OAAQ,EAAQG,EAChB,OAAQP,GAAc,eAAiB,CAAC,CAC1C,CACF,CACF",
6
- "names": ["useBizProductContext", "checkItemAvailableForProduct", "useDiscountEnable", "useAiuiContext", "useBenefits", "variant", "coupon", "product", "bundle", "freeGift", "memberFunctionResult", "creditsRedemptionAmount", "discount", "profile", "savingDetail", "trackingData", "total", "discountEnable", "showPaidShipping", "fullGift", "excludeProducts", "item", "showLevelDiscount"]
4
+ "sourcesContent": ["import { useBizProductContext } from '../BizProductProvider'\nimport type { ProductVariant, FreeGift, Bundle } from '../types/product'\nimport { checkItemAvailableForProduct } from '../utils/helper'\nimport { useDiscountEnable } from './useDiscountEnable'\n\nimport { useAiuiContext } from '../../AiuiProvider/index.js'\nimport { useMemo } from 'react'\n\ninterface BenefitsParams {\n variant: ProductVariant\n}\n\ninterface BenefitItemConfig<T extends Record<string, any> = Record<string, any>> {\n enable: boolean\n config?: T // \u539F\u59CB\u914D\u7F6E\n}\n\ninterface BenefitsResult {\n /**\n * \u901A\u7528\u4F18\u60E0\u5238\n */\n commonCoupon?: BenefitItemConfig\n /**\n * \u4E70\u8D60\n */\n freeGift: BenefitItemConfig<FreeGift>\n /**\n * \u6346\u7ED1\u6298\u6263\n */\n bundle: BenefitItemConfig<Bundle>\n /**\n * \u4F1A\u5458\u4EF7\n */\n memberDiscount: BenefitItemConfig\n /**\n * \u79EF\u5206\u62B5\u73B0\n */\n creditsRedemption: BenefitItemConfig\n /**\n * \u9AD8\u6807\u7269\u6D41\n */\n paidShipping: BenefitItemConfig\n\n /**\n * \u6EE1\u8D60\n */\n fullGift: BenefitItemConfig\n\n /**\n * \u6EE1\u51CF\u6298\u6263\n */\n levelDiscount: BenefitItemConfig\n}\n\n/**\n * \u5546\u54C1\u6743\u76CA\n * \u83B7\u53D6\u5F53\u524Dsku \u6240\u6709\u7684\u6743\u76CA\n * \u5305\u62EC \u901A\u7528\u4F18\u60E0\u5238\uFF0C\u4F1A\u5458\u4EF7\uFF0C\u6EE1\u51CF\uFF0C\u6346\u7ED1\u6298\u6263\uFF0C\u4E70\u8D60 \uFF0C\u6EE1\u8D60 \uFF0C\u79EF\u5206\u62B5\u73B0\n * @returns\n */\nexport const useBenefits = ({ variant }: BenefitsParams): BenefitsResult => {\n const {\n coupon,\n product,\n bundle,\n freeGift,\n memberFunctionResult,\n creditsRedemptionAmount,\n profile,\n } = useBizProductContext()\n\n const { trackingData } = useAiuiContext()\n\n const total = Math.max(\n memberFunctionResult?.withCouponMemberTotalSave ?? 0,\n memberFunctionResult?.withoutCouponMaxMemberTotalSave ?? 0\n )\n\n const discountEnable = useDiscountEnable({ profile, variant, memberFunctionResult, coupon })\n\n // \u9AD8\u6807\u7269\u6D41\n const showPaidShipping = Boolean(\n trackingData?.paidShipping &&\n variant.requiresShipping &&\n !variant?.metafields?.global?.presell &&\n !variant?.metafields?.global?.HideShipping\n )\n\n // \u811A\u672C\u6EE1\u8D60\n const fullGift = trackingData?.freeGift\n const excludeProducts =\n fullGift?.excludeProducts?.map((item: any) => (typeof item === 'object' && 'sku' in item ? item.sku : item)) ?? []\n\n const showLevelDiscount =\n trackingData?.levelDiscount && checkItemAvailableForProduct({ product, variant, item: trackingData?.levelDiscount })\n\n return {\n commonCoupon: {\n enable: discountEnable.showCommonCoupon && Boolean(coupon),\n config: coupon ?? {},\n },\n freeGift: {\n enable: Boolean(freeGift) && !!freeGift?.giftList?.length,\n config: freeGift,\n },\n bundle: {\n enable:\n Boolean(bundle) &&\n !!bundle?.bundleList?.length &&\n Math.max(...bundle?.bundleList?.map(item => item.savings ?? 0)) > 0, // \u6709\u4F18\u60E0\u624D\u5C55\u793A\n config: bundle,\n },\n memberDiscount: {\n enable: discountEnable.showMemberDiscount,\n // enable: total > 0,\n config: {\n amount: total,\n description: memberFunctionResult?.labels?.[0],\n },\n },\n creditsRedemption: {\n enable: Boolean(creditsRedemptionAmount) && creditsRedemptionAmount! > 0,\n config: { amount: creditsRedemptionAmount, label: trackingData?.creditsRedemptionLabel },\n },\n paidShipping: {\n enable: showPaidShipping,\n config: {},\n },\n fullGift: {\n enable: Boolean(fullGift && !excludeProducts.includes(variant.sku)),\n config: fullGift ?? {},\n },\n levelDiscount: {\n enable: Boolean(showLevelDiscount),\n config: trackingData?.levelDiscount ?? {},\n },\n }\n}\n"],
5
+ "mappings": "AAAA,OAAS,wBAAAA,MAA4B,wBAErC,OAAS,gCAAAC,MAAoC,kBAC7C,OAAS,qBAAAC,MAAyB,sBAElC,OAAS,kBAAAC,MAAsB,8BAC/B,MAAwB,QAsDjB,MAAMC,EAAc,CAAC,CAAE,QAAAC,CAAQ,IAAsC,CAC1E,KAAM,CACJ,OAAAC,EACA,QAAAC,EACA,OAAAC,EACA,SAAAC,EACA,qBAAAC,EACA,wBAAAC,EACA,QAAAC,CACF,EAAIZ,EAAqB,EAEnB,CAAE,aAAAa,CAAa,EAAIV,EAAe,EAElCW,EAAQ,KAAK,IACjBJ,GAAsB,2BAA6B,EACnDA,GAAsB,iCAAmC,CAC3D,EAEMK,EAAiBb,EAAkB,CAAE,QAAAU,EAAS,QAAAP,EAAS,qBAAAK,EAAsB,OAAAJ,CAAO,CAAC,EAGrFU,EAAmB,GACvBH,GAAc,cACZR,EAAQ,kBACR,CAACA,GAAS,YAAY,QAAQ,SAC9B,CAACA,GAAS,YAAY,QAAQ,cAI5BY,EAAWJ,GAAc,SACzBK,EACJD,GAAU,iBAAiB,IAAKE,GAAe,OAAOA,GAAS,UAAY,QAASA,EAAOA,EAAK,IAAMA,CAAK,GAAK,CAAC,EAE7GC,EACJP,GAAc,eAAiBZ,EAA6B,CAAE,QAAAM,EAAS,QAAAF,EAAS,KAAMQ,GAAc,aAAc,CAAC,EAErH,MAAO,CACL,aAAc,CACZ,OAAQE,EAAe,kBAAoB,EAAQT,EACnD,OAAQA,GAAU,CAAC,CACrB,EACA,SAAU,CACR,OAAQ,EAAQG,GAAa,CAAC,CAACA,GAAU,UAAU,OACnD,OAAQA,CACV,EACA,OAAQ,CACN,OACE,EAAQD,GACR,CAAC,CAACA,GAAQ,YAAY,QACtB,KAAK,IAAI,GAAGA,GAAQ,YAAY,IAAIW,GAAQA,EAAK,SAAW,CAAC,CAAC,EAAI,EACpE,OAAQX,CACV,EACA,eAAgB,CACd,OAAQO,EAAe,mBAEvB,OAAQ,CACN,OAAQD,EACR,YAAaJ,GAAsB,SAAS,CAAC,CAC/C,CACF,EACA,kBAAmB,CACjB,OAAQ,EAAQC,GAA4BA,EAA2B,EACvE,OAAQ,CAAE,OAAQA,EAAyB,MAAOE,GAAc,sBAAuB,CACzF,EACA,aAAc,CACZ,OAAQG,EACR,OAAQ,CAAC,CACX,EACA,SAAU,CACR,OAAQ,GAAQC,GAAY,CAACC,EAAgB,SAASb,EAAQ,GAAG,GACjE,OAAQY,GAAY,CAAC,CACvB,EACA,cAAe,CACb,OAAQ,EAAQG,EAChB,OAAQP,GAAc,eAAiB,CAAC,CAC1C,CACF,CACF",
6
+ "names": ["useBizProductContext", "checkItemAvailableForProduct", "useDiscountEnable", "useAiuiContext", "useBenefits", "variant", "coupon", "product", "bundle", "freeGift", "memberFunctionResult", "creditsRedemptionAmount", "profile", "trackingData", "total", "discountEnable", "showPaidShipping", "fullGift", "excludeProducts", "item", "showLevelDiscount"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import l from"decimal.js";const m=({profile:u,variant:s,memberFunctionResult:t,coupon:r})=>{let e=!1,o=!1;const a=!!u?.email,n=r?new l(s?.price?.amount).minus(r?.variant_price4wscode||0).toNumber():0;if(t?.withoutCouponMaxMemberTotalSave){const i=t?.withoutCouponMaxMemberTotalSave||0;a?i>n?(e=!0,o=!1):(e=!1,o=!0):i>n?(e=!0,o=!0):(e=!1,o=!0)}else t?.withCouponMemberTotalSave&&(e=!0,o=!0);return{showMemberDiscount:e,showCommonCoupon:o}};export{m as useDiscountEnable};
1
+ import l from"decimal.js";const m=({profile:u,variant:s,memberFunctionResult:t,coupon:r})=>{let e=!1,o=!0;const n=!!u?.email,a=r?new l(s?.price?.amount).minus(r?.variant_price4wscode||0).toNumber():0;if(t?.withoutCouponMaxMemberTotalSave){const i=t?.withoutCouponMaxMemberTotalSave||0;n?i>a?(e=!0,o=!1):(e=!1,o=!0):i>a?(e=!0,o=!0):(e=!1,o=!0)}else t?.withCouponMemberTotalSave&&(e=!0,o=!0);return{showMemberDiscount:e,showCommonCoupon:o}};export{m as useDiscountEnable};
2
2
  //# sourceMappingURL=useDiscountEnable.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/biz-components/Listing/hooks/useDiscountEnable.ts"],
4
- "sourcesContent": ["import type { SavingDetail, FunctionMemberPriceResult, UserProfile } from '../BizProductProvider'\nimport type { DiscountData } from '../types'\nimport type { VariantCoupon, ProductVariant } from '../types/product'\nimport Decimal from 'decimal.js'\ninterface DiscountEnableResult {\n showMemberDiscount: boolean\n showCommonCoupon: boolean\n}\n\ninterface DiscountEnableParams {\n profile?: UserProfile\n variant: ProductVariant\n memberFunctionResult?: FunctionMemberPriceResult\n coupon?: VariantCoupon\n}\n\n// withCouponMemberTotalSave \u4E0D\u4E3A0\u65F6\uFF0C\u4F1A\u5458\u4EF7\u53EF\u53E0\u52A0\n// withoutCouponMaxMemberTotalSave \u4E0D\u4E3A0\u65F6\uFF0C\u4F1A\u5458\u4EF7\u4E0D\u53EF\u53E0\u52A0\nexport const useDiscountEnable = ({\n profile,\n variant,\n memberFunctionResult,\n coupon,\n}: DiscountEnableParams): DiscountEnableResult => {\n let showMemberDiscount = false // \u662F\u5426\u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\n let showCommonCoupon = false // \u662F\u5426\u5C55\u793Acode\u6298\u6263\n const isLoggedIn = Boolean(profile?.email) // \u662F\u5426\u767B\u5F55\n const couponSaving = coupon ? new Decimal(variant?.price?.amount).minus(coupon?.variant_price4wscode || 0).toNumber() : 0 // code\u6298\u6263\n\n // \u5F53\u4F1A\u5458\u4EF7\u914D\u7F6E\u4E86\u4E0D\u53EF\u53E0\u52A0\u4EA7\u54C1\u6298\u6263\n // \u7528\u6237\u5DF2\u767B\u5F55\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D>\u300Ccode\u300D\n // \u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\n // \u4F1A\u5458\u4EF7\u6298\u6263\u9ED8\u8BA4\u52FE\u9009\n // code\u6298\u6263\u9690\u85CF\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D<=\u300Ccode\u300D\n // \u5C55\u793Acode\u6298\u6263\uFF0C\u6839\u636E\u6298\u6263\u524D\u7F00\u5224\u5B9A\u662F\u5426\u9ED8\u8BA4\u52FE\u9009\n // \u4F1A\u5458\u4EF7\u6298\u6263\u9690\u85CF\n // \u7528\u6237\u672A\u767B\u5F55\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D>\u300Ccode\u300D\n // \u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\u548Ccode\u6298\u6263\n // code\u6298\u6263\u6839\u636E\u6298\u6263\u524D\u7F00\u5224\u65AD\u662F\u5426\u9ED8\u8BA4\u52FE\u9009\n // \u4F1A\u5458\u4EF7\u6298\u6263\u4E0D\u9ED8\u8BA4\u52FE\u9009\uFF0C\u70B9\u51FB\u52FE\u9009\u8DF3\u51FA\u8BA2\u6CE8\u4E00\u4F53\u5F39\u7A97\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D<=\u300Ccode\u300D\n // \u5C55\u793Acode\u6298\u6263\uFF0C\u4F1A\u5458\u4EF7\u6298\u6263\u9690\u85CF\n\n // \u5F53\u4F1A\u5458\u4EF7\u914D\u7F6E\u4E86\u53EF\u53E0\u52A0\u4EA7\u54C1\u6298\u6263\n // \u7528\u6237\u5DF2\u767B\u5F55\n // \u5C55\u793A\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u548C\u300Ccode\u300D\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u9ED8\u8BA4\u52FE\u9009\n // \u300Ccode\u300D\u6298\u6263\u6839\u636E\u524D\u7F00\u5224\u65AD\u662F\u5426\u52FE\u9009\n // \u7528\u6237\u672A\u767B\u5F55\n // \u5C55\u793A\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u548C\u300Ccode\u300D\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u4E0D\u9ED8\u8BA4\u52FE\u9009\uFF0C\u70B9\u51FB\u52FE\u9009\u8DF3\u51FA\u8BA2\u6CE8\u4E00\u4F53\u5F39\u7A97\n // \u300Ccode\u300D\u6298\u6263\u6839\u636E\u524D\u7F00\u5224\u65AD\u662F\u5426\u52FE\u9009\n\n // \u4F1A\u5458\u4EF7\u4E0D\u53EF\u53E0\u52A0\u4EA7\u54C1\u6298\u6263\n if (memberFunctionResult?.withoutCouponMaxMemberTotalSave) {\n const memberSaving = memberFunctionResult?.withoutCouponMaxMemberTotalSave || 0\n if (isLoggedIn) {\n // \u7528\u6237\u5DF2\u767B\u5F55\n if (memberSaving > couponSaving) {\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D>\u300Ccode\u300D\uFF1A\u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\uFF0Ccode\u6298\u6263\u9690\u85CF\n showMemberDiscount = true\n showCommonCoupon = false\n } else {\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D<=\u300Ccode\u300D\uFF1A\u5C55\u793Acode\u6298\u6263\uFF0C\u4F1A\u5458\u4EF7\u6298\u6263\u9690\u85CF\n showMemberDiscount = false\n showCommonCoupon = true\n }\n } else {\n // \u7528\u6237\u672A\u767B\u5F55\n if (memberSaving > couponSaving) {\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D>\u300Ccode\u300D\uFF1A\u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\uFF0C\u5C55\u793Acode\u6298\u6263\n showMemberDiscount = true\n showCommonCoupon = true\n } else {\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D<=\u300Ccode\u300D\uFF1A\u5C55\u793Acode\u6298\u6263\uFF0C\u4F1A\u5458\u4EF7\u6298\u6263\u9690\u85CF\n showMemberDiscount = false\n showCommonCoupon = true\n }\n }\n }\n // \u4F1A\u5458\u4EF7\u53EF\u53E0\u52A0\u4EA7\u54C1\u6298\u6263\n else if (memberFunctionResult?.withCouponMemberTotalSave) {\n if (isLoggedIn) {\n // \u7528\u6237\u5DF2\u767B\u5F55\uFF1A\u5C55\u793A\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u548C\u300Ccode\u300D\uFF0C\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u9ED8\u8BA4\u52FE\u9009\uFF0C\u5C55\u793Acode\u6298\u6263\n showMemberDiscount = true\n showCommonCoupon = true\n } else {\n // \u7528\u6237\u672A\u767B\u5F55\uFF1A\u5C55\u793A\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u548C\u300Ccode\u300D\n showMemberDiscount = true\n showCommonCoupon = true\n }\n }\n\n return { showMemberDiscount, showCommonCoupon }\n}\n"],
4
+ "sourcesContent": ["import type { SavingDetail, FunctionMemberPriceResult, UserProfile } from '../BizProductProvider'\nimport type { DiscountData } from '../types'\nimport type { VariantCoupon, ProductVariant } from '../types/product'\nimport Decimal from 'decimal.js'\ninterface DiscountEnableResult {\n showMemberDiscount: boolean\n showCommonCoupon: boolean\n}\n\ninterface DiscountEnableParams {\n profile?: UserProfile\n variant: ProductVariant\n memberFunctionResult?: FunctionMemberPriceResult\n coupon?: VariantCoupon\n}\n\n// withCouponMemberTotalSave \u4E0D\u4E3A0\u65F6\uFF0C\u4F1A\u5458\u4EF7\u53EF\u53E0\u52A0\n// withoutCouponMaxMemberTotalSave \u4E0D\u4E3A0\u65F6\uFF0C\u4F1A\u5458\u4EF7\u4E0D\u53EF\u53E0\u52A0\nexport const useDiscountEnable = ({\n profile,\n variant,\n memberFunctionResult,\n coupon,\n}: DiscountEnableParams): DiscountEnableResult => {\n let showMemberDiscount = false // \u662F\u5426\u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\n let showCommonCoupon = true // \u662F\u5426\u5C55\u793Acode\u6298\u6263\n const isLoggedIn = Boolean(profile?.email) // \u662F\u5426\u767B\u5F55\n const couponSaving = coupon ? new Decimal(variant?.price?.amount).minus(coupon?.variant_price4wscode || 0).toNumber() : 0 // code\u6298\u6263\n\n // \u5F53\u4F1A\u5458\u4EF7\u914D\u7F6E\u4E86\u4E0D\u53EF\u53E0\u52A0\u4EA7\u54C1\u6298\u6263\n // \u7528\u6237\u5DF2\u767B\u5F55\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D>\u300Ccode\u300D\n // \u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\n // \u4F1A\u5458\u4EF7\u6298\u6263\u9ED8\u8BA4\u52FE\u9009\n // code\u6298\u6263\u9690\u85CF\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D<=\u300Ccode\u300D\n // \u5C55\u793Acode\u6298\u6263\uFF0C\u6839\u636E\u6298\u6263\u524D\u7F00\u5224\u5B9A\u662F\u5426\u9ED8\u8BA4\u52FE\u9009\n // \u4F1A\u5458\u4EF7\u6298\u6263\u9690\u85CF\n // \u7528\u6237\u672A\u767B\u5F55\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D>\u300Ccode\u300D\n // \u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\u548Ccode\u6298\u6263\n // code\u6298\u6263\u6839\u636E\u6298\u6263\u524D\u7F00\u5224\u65AD\u662F\u5426\u9ED8\u8BA4\u52FE\u9009\n // \u4F1A\u5458\u4EF7\u6298\u6263\u4E0D\u9ED8\u8BA4\u52FE\u9009\uFF0C\u70B9\u51FB\u52FE\u9009\u8DF3\u51FA\u8BA2\u6CE8\u4E00\u4F53\u5F39\u7A97\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D<=\u300Ccode\u300D\n // \u5C55\u793Acode\u6298\u6263\uFF0C\u4F1A\u5458\u4EF7\u6298\u6263\u9690\u85CF\n\n // \u5F53\u4F1A\u5458\u4EF7\u914D\u7F6E\u4E86\u53EF\u53E0\u52A0\u4EA7\u54C1\u6298\u6263\n // \u7528\u6237\u5DF2\u767B\u5F55\n // \u5C55\u793A\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u548C\u300Ccode\u300D\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u9ED8\u8BA4\u52FE\u9009\n // \u300Ccode\u300D\u6298\u6263\u6839\u636E\u524D\u7F00\u5224\u65AD\u662F\u5426\u52FE\u9009\n // \u7528\u6237\u672A\u767B\u5F55\n // \u5C55\u793A\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u548C\u300Ccode\u300D\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u4E0D\u9ED8\u8BA4\u52FE\u9009\uFF0C\u70B9\u51FB\u52FE\u9009\u8DF3\u51FA\u8BA2\u6CE8\u4E00\u4F53\u5F39\u7A97\n // \u300Ccode\u300D\u6298\u6263\u6839\u636E\u524D\u7F00\u5224\u65AD\u662F\u5426\u52FE\u9009\n\n // \u4F1A\u5458\u4EF7\u4E0D\u53EF\u53E0\u52A0\u4EA7\u54C1\u6298\u6263\n if (memberFunctionResult?.withoutCouponMaxMemberTotalSave) {\n const memberSaving = memberFunctionResult?.withoutCouponMaxMemberTotalSave || 0\n if (isLoggedIn) {\n // \u7528\u6237\u5DF2\u767B\u5F55\n if (memberSaving > couponSaving) {\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D>\u300Ccode\u300D\uFF1A\u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\uFF0Ccode\u6298\u6263\u9690\u85CF\n showMemberDiscount = true\n showCommonCoupon = false\n } else {\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D<=\u300Ccode\u300D\uFF1A\u5C55\u793Acode\u6298\u6263\uFF0C\u4F1A\u5458\u4EF7\u6298\u6263\u9690\u85CF\n showMemberDiscount = false\n showCommonCoupon = true\n }\n } else {\n // \u7528\u6237\u672A\u767B\u5F55\n if (memberSaving > couponSaving) {\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D>\u300Ccode\u300D\uFF1A\u5C55\u793A\u4F1A\u5458\u4EF7\u6298\u6263\uFF0C\u5C55\u793Acode\u6298\u6263\n showMemberDiscount = true\n showCommonCoupon = true\n } else {\n // \u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D<=\u300Ccode\u300D\uFF1A\u5C55\u793Acode\u6298\u6263\uFF0C\u4F1A\u5458\u4EF7\u6298\u6263\u9690\u85CF\n showMemberDiscount = false\n showCommonCoupon = true\n }\n }\n }\n // \u4F1A\u5458\u4EF7\u53EF\u53E0\u52A0\u4EA7\u54C1\u6298\u6263\n else if (memberFunctionResult?.withCouponMemberTotalSave) {\n if (isLoggedIn) {\n // \u7528\u6237\u5DF2\u767B\u5F55\uFF1A\u5C55\u793A\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u548C\u300Ccode\u300D\uFF0C\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u9ED8\u8BA4\u52FE\u9009\uFF0C\u5C55\u793Acode\u6298\u6263\n showMemberDiscount = true\n showCommonCoupon = true\n } else {\n // \u7528\u6237\u672A\u767B\u5F55\uFF1A\u5C55\u793A\u300C\u4F1A\u5458\u4EF7\u6298\u6263\u300D\u548C\u300Ccode\u300D\n showMemberDiscount = true\n showCommonCoupon = true\n }\n }\n\n return { showMemberDiscount, showCommonCoupon }\n}\n"],
5
5
  "mappings": "AAGA,OAAOA,MAAa,aAeb,MAAMC,EAAoB,CAAC,CAChC,QAAAC,EACA,QAAAC,EACA,qBAAAC,EACA,OAAAC,CACF,IAAkD,CAChD,IAAIC,EAAqB,GACrBC,EAAmB,GACvB,MAAMC,EAAa,EAAQN,GAAS,MAC9BO,EAAeJ,EAAS,IAAIL,EAAQG,GAAS,OAAO,MAAM,EAAE,MAAME,GAAQ,sBAAwB,CAAC,EAAE,SAAS,EAAI,EA8BxH,GAAID,GAAsB,gCAAiC,CACzD,MAAMM,EAAeN,GAAsB,iCAAmC,EAC1EI,EAEEE,EAAeD,GAEjBH,EAAqB,GACrBC,EAAmB,KAGnBD,EAAqB,GACrBC,EAAmB,IAIjBG,EAAeD,GAEjBH,EAAqB,GACrBC,EAAmB,KAGnBD,EAAqB,GACrBC,EAAmB,GAGzB,MAESH,GAAsB,4BAG3BE,EAAqB,GACrBC,EAAmB,IAQvB,MAAO,CAAE,mBAAAD,EAAoB,iBAAAC,CAAiB,CAChD",
6
6
  "names": ["Decimal", "useDiscountEnable", "profile", "variant", "memberFunctionResult", "coupon", "showMemberDiscount", "showCommonCoupon", "isLoggedIn", "couponSaving", "memberSaving"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as o,jsxs as L}from"react/jsx-runtime";import O,{useEffect as _,useRef as i,useImperativeHandle as q}from"react";import{gsap as f}from"gsap";import{SplitText as v}from"gsap/dist/SplitText";import{ScrollTrigger as T}from"gsap/dist/ScrollTrigger";import{cn as k}from"../../helpers/utils.js";import{Heading as A}from"../../components/index.js";import{withLayout as G}from"../../shared/Styles.js";import"../../hooks/useExposure.js";import{trackUrlRef as J}from"../../shared/trackUrlRef.js";import{useInView as K}from"react-intersection-observer";const b="link",y="title",R=O.forwardRef(({data:E,className:H,as:M="h2",weight:N="bold"},$)=>{const{title:s,caption:l,theme:p,extensions:n,align:a="left"}=E,d=i(null),e=i(null),t=i(null),r=i(null),{ref:D,inView:g}=K();return q($,()=>d.current),_(()=>{f.registerPlugin(v,T);function P(){if(!e.current)return;const S=e.current?.clientHeight||80;t.current&&t.current.revert(),r.current&&r.current.kill(),t.current=new v(e.current,{type:"words",wordsClass:"word"});const c=t.current.words;f.set(c,{opacity:0}),r.current=T.create({trigger:e.current,start:"bottom bottom-=4%",end:`bottom+=${S*1.5+60}px bottom-=4%`,scrub:!0,invalidateOnRefresh:!0,onUpdate:z=>{const I=z.progress,h=c.length||1,V=.5,m=1/h,w=m*(1-V),x=(h-1)*w+m,B=Math.min(1,x>0?I/x:0);c.forEach((U,j)=>{const C=j*w,F=m;let u=(B-C)/F;u=Math.max(0,Math.min(1,u)),f.set(U,{opacity:u})})}})}return g&&P(),()=>{t.current&&t.current.revert(),r.current&&r.current.kill()}},[g]),(s||l)&&L("div",{id:n?.id,className:"titleBottom mb-6 flex items-end justify-between overflow-hidden title-box",ref:d,children:[o("div",{ref:D,className:k("space-y-4 flex-1",H,{"aiui-dark":p==="dark","text-center":a==="center","text-right":a==="right","text-left":a==="left"}),children:o(A,{ref:e,as:M,size:4,html:l||s,weight:N})}),n?.textLink&&L("a",{className:k({"aiui-dark":p==="dark"},"flex items-center text-base font-[700] leading-[1.4] text-[#777] transition-all duration-[0.4s] hover:text-[#1D1D1F]"),href:J(n?.link,`${b}_${y}`),"data-headless-type-name":`${b}#${y}`,"data-headless-title-desc-button":`${s}#${l}`,children:[n?.textLink,o("svg",{width:"24",height:"24",className:"mb-[3px]",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",children:o("path",{className:"transition-all duration-[0.4s]",d:"M10.5 8L14.5 12L10.5 16",stroke:"#777","stroke-width":"1.5","stroke-linecap":"round"})})]})]})});R.displayName="Title";var st=G(R);export{st as default};
1
+ "use client";import{jsx as e,jsxs as L}from"react/jsx-runtime";import O,{useEffect as _,useRef as o,useImperativeHandle as q}from"react";import{gsap as f}from"gsap";import{SplitText as x}from"gsap/dist/SplitText";import{ScrollTrigger as T}from"gsap/dist/ScrollTrigger";import{cn as k}from"../../helpers/utils.js";import{Heading as A}from"../../components/index.js";import{withLayout as G}from"../../shared/Styles.js";import{trackUrlRef as J}from"../../shared/trackUrlRef.js";import{useInView as K}from"react-intersection-observer";const b="link",y="title",R=O.forwardRef(({data:N,className:H,as:M="h2",weight:E="bold"},$)=>{const{title:s,caption:l,theme:p,extensions:i,align:a="left"}=N,u=o(null),r=o(null),t=o(null),n=o(null),{ref:D,inView:g}=K();return q($,()=>u.current),_(()=>{f.registerPlugin(x,T);function z(){if(!r.current)return;const P=r.current?.clientHeight||80;t.current&&t.current.revert(),n.current&&n.current.kill(),t.current=new x(r.current,{type:"words",wordsClass:"word"});const c=t.current.words;f.set(c,{opacity:0}),n.current=T.create({trigger:r.current,start:"bottom bottom-=4%",end:`bottom+=${P*1.5+60}px bottom-=4%`,scrub:!0,invalidateOnRefresh:!0,onUpdate:S=>{const I=S.progress,h=c.length||1,V=.5,m=1/h,w=m*(1-V),v=(h-1)*w+m,B=Math.min(1,v>0?I/v:0);c.forEach((U,j)=>{const C=j*w,F=m;let d=(B-C)/F;d=Math.max(0,Math.min(1,d)),f.set(U,{opacity:d})})}})}return g&&z(),()=>{t.current&&t.current.revert(),n.current&&n.current.kill()}},[g]),(s||l)&&L("div",{id:i?.id,className:"titleBottom mb-6 flex gap-2 items-end justify-between overflow-hidden title-box",ref:u,children:[e("div",{ref:D,className:k("space-y-4 flex-1",H,{"aiui-dark":p==="dark","text-center":a==="center","text-right":a==="right","text-left":a==="left"}),children:e(A,{ref:r,as:M,size:4,html:l||s,weight:E})}),i?.textLink&&L("a",{className:k({"aiui-dark":p==="dark"},"flex items-center text-base font-[700] leading-[1.4] text-[#777] overflow-hidden transition-all duration-[0.4s] hover:text-[#1D1D1F]"),href:J(i?.link,`${b}_${y}`),"data-headless-type-name":`${b}#${y}`,"data-headless-title-desc-button":`${s}#${l}`,children:[e("div",{className:"flex-1 truncate whitespace-nowrap",children:i?.textLink}),e("div",{className:"size-6",children:e("svg",{width:"24",height:"24",className:"mb-[3px]",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",children:e("path",{className:"transition-all duration-[0.4s]",d:"M10.5 8L14.5 12L10.5 16",stroke:"#777","stroke-width":"1.5","stroke-linecap":"round"})})})]})]})});R.displayName="Title";var it=G(R);export{it as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Title/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useEffect, useRef, useImperativeHandle } from 'react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { TitleProps } from './types.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { useInView } from 'react-intersection-observer'\n\nconst componentType = 'link'\nconst componentName = 'title'\n\nconst Title = React.forwardRef<HTMLDivElement, TitleProps>(({ data, className, as = 'h2', weight = 'bold' }, ref) => {\n const { title, caption, theme, extensions, align = 'left' } = data\n const innerRef = useRef<HTMLDivElement>(null)\n const titleRef = useRef<HTMLHeadingElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const { ref: inViewRef, inView } = useInView()\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n useEffect(() => {\n gsap.registerPlugin(SplitText, ScrollTrigger)\n function gsapResize() {\n if (!titleRef.current) return\n const height = titleRef.current?.clientHeight || 80\n if (splitTextInstance.current) {\n splitTextInstance.current.revert()\n }\n if (scrollTriggerRef.current) {\n scrollTriggerRef.current.kill()\n }\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5 + 60}px bottom-=4%`,\n scrub: true,\n invalidateOnRefresh: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length || 1\n const overlap = 0.5\n const interval = 1 / total\n const step = interval * (1 - overlap)\n const lastEnd = (total - 1) * step + interval\n const normalizedProgress = Math.min(1, lastEnd > 0 ? progress / lastEnd : 0)\n words.forEach((word: any, i: number) => {\n const start = i * step\n const width = interval\n let opacity = (normalizedProgress - start) / width\n opacity = Math.max(0, Math.min(1, opacity))\n gsap.set(word, { opacity })\n })\n },\n })\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n // ScrollTrigger.getAll().forEach((t: { kill: () => any }) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n (title || caption) && (\n <div\n id={extensions?.id}\n className=\"titleBottom mb-6 flex items-end justify-between overflow-hidden title-box\"\n ref={innerRef}\n >\n <div\n ref={inViewRef}\n className={cn('space-y-4 flex-1', className, {\n 'aiui-dark': theme === 'dark',\n 'text-center': align === 'center',\n 'text-right': align === 'right',\n 'text-left': align === 'left',\n })}\n >\n <Heading ref={titleRef} as={as} size={4} html={caption || title} weight={weight} />\n </div>\n {extensions?.textLink && (\n <a\n className={cn(\n { 'aiui-dark': theme === 'dark' },\n 'flex items-center text-base font-[700] leading-[1.4] text-[#777] transition-all duration-[0.4s] hover:text-[#1D1D1F]'\n )}\n href={trackUrlRef(extensions?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${caption}`}\n >\n {extensions?.textLink}\n <svg\n width=\"24\"\n height=\"24\"\n className=\"mb-[3px]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n className=\"transition-all duration-[0.4s]\"\n d=\"M10.5 8L14.5 12L10.5 16\"\n stroke=\"#777\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n ></path>\n </svg>\n </a>\n )}\n </div>\n )\n )\n})\n\nTitle.displayName = 'Title'\n\nexport default withLayout(Title)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\nimport React, { useEffect, useRef, useImperativeHandle } from 'react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { TitleProps } from './types.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { useInView } from 'react-intersection-observer'\n\nconst componentType = 'link'\nconst componentName = 'title'\n\nconst Title = React.forwardRef<HTMLDivElement, TitleProps>(({ data, className, as = 'h2', weight = 'bold' }, ref) => {\n const { title, caption, theme, extensions, align = 'left' } = data\n const innerRef = useRef<HTMLDivElement>(null)\n const titleRef = useRef<HTMLHeadingElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const { ref: inViewRef, inView } = useInView()\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n useEffect(() => {\n gsap.registerPlugin(SplitText, ScrollTrigger)\n function gsapResize() {\n if (!titleRef.current) return\n const height = titleRef.current?.clientHeight || 80\n if (splitTextInstance.current) {\n splitTextInstance.current.revert()\n }\n if (scrollTriggerRef.current) {\n scrollTriggerRef.current.kill()\n }\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5 + 60}px bottom-=4%`,\n scrub: true,\n invalidateOnRefresh: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length || 1\n const overlap = 0.5\n const interval = 1 / total\n const step = interval * (1 - overlap)\n const lastEnd = (total - 1) * step + interval\n const normalizedProgress = Math.min(1, lastEnd > 0 ? progress / lastEnd : 0)\n words.forEach((word: any, i: number) => {\n const start = i * step\n const width = interval\n let opacity = (normalizedProgress - start) / width\n opacity = Math.max(0, Math.min(1, opacity))\n gsap.set(word, { opacity })\n })\n },\n })\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n // ScrollTrigger.getAll().forEach((t: { kill: () => any }) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n (title || caption) && (\n <div\n id={extensions?.id}\n className=\"titleBottom mb-6 flex gap-2 items-end justify-between overflow-hidden title-box\"\n ref={innerRef}\n >\n <div\n ref={inViewRef}\n className={cn('space-y-4 flex-1', className, {\n 'aiui-dark': theme === 'dark',\n 'text-center': align === 'center',\n 'text-right': align === 'right',\n 'text-left': align === 'left',\n })}\n >\n <Heading ref={titleRef} as={as} size={4} html={caption || title} weight={weight} />\n </div>\n {extensions?.textLink && (\n <a\n className={cn(\n { 'aiui-dark': theme === 'dark' },\n 'flex items-center text-base font-[700] leading-[1.4] text-[#777] overflow-hidden transition-all duration-[0.4s] hover:text-[#1D1D1F]'\n )}\n href={trackUrlRef(extensions?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${caption}`}\n >\n <div className=\"flex-1 truncate whitespace-nowrap\">{extensions?.textLink}</div>\n <div className=\"size-6\">\n <svg\n width=\"24\"\n height=\"24\"\n className=\"mb-[3px]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n className=\"transition-all duration-[0.4s]\"\n d=\"M10.5 8L14.5 12L10.5 16\"\n stroke=\"#777\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n ></path>\n </svg>\n </div>\n </a>\n )}\n </div>\n )\n )\n})\n\nTitle.displayName = 'Title'\n\nexport default withLayout(Title)\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "React", "useEffect", "useRef", "useImperativeHandle", "gsap", "SplitText", "ScrollTrigger", "cn", "Heading", "withLayout", "trackUrlRef", "useInView", "componentType", "componentName", "Title", "data", "className", "as", "weight", "ref", "title", "caption", "theme", "extensions", "align", "innerRef", "titleRef", "splitTextInstance", "scrollTriggerRef", "inViewRef", "inView", "gsapResize", "height", "words", "self", "progress", "total", "overlap", "interval", "step", "lastEnd", "normalizedProgress", "word", "i", "start", "width", "opacity", "Title_default"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/headless-ui",
3
- "version": "1.0.26-alpha.1762934846441",
3
+ "version": "1.0.26-alpha.1762942609078",
4
4
  "type": "commonjs",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/cjs/index.d.ts",