pb-sxp-ui 1.2.7 → 1.2.8

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 (39) hide show
  1. package/dist/index.cjs +70 -74
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +70 -74
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.min.cjs +3 -3
  6. package/dist/index.min.cjs.map +1 -1
  7. package/dist/index.min.js +3 -3
  8. package/dist/index.min.js.map +1 -1
  9. package/dist/pb-ui.js +70 -74
  10. package/dist/pb-ui.js.map +1 -1
  11. package/dist/pb-ui.min.js +3 -3
  12. package/dist/pb-ui.min.js.map +1 -1
  13. package/es/core/components/SxpPageRender/FormatImage.d.ts +1 -0
  14. package/es/core/components/SxpPageRender/FormatImage.js +17 -3
  15. package/es/core/components/SxpPageRender/VideoWidget/index.js +2 -2
  16. package/es/core/components/SxpPageRender/index.js +7 -1
  17. package/es/core/context/SxpDataSourceProvider.js +2 -2
  18. package/es/materials/sxp/cta/AniLink/index.js +1 -1
  19. package/es/materials/sxp/cta/AniLink/interactionRender.d.ts +0 -3
  20. package/es/materials/sxp/cta/AniLink/interactionRender.js +1 -2
  21. package/es/materials/sxp/cta/AniLink/material.js +9 -1
  22. package/es/materials/sxp/cta/AniLinkPopup/index.js +2 -2
  23. package/es/materials/sxp/cta/AniLinkPopup/interactionRender.d.ts +0 -10
  24. package/es/materials/sxp/cta/AniLinkPopup/interactionRender.js +1 -7
  25. package/es/materials/sxp/cta/AniLinkPopup/material.js +17 -10
  26. package/lib/core/components/SxpPageRender/FormatImage.d.ts +1 -0
  27. package/lib/core/components/SxpPageRender/FormatImage.js +17 -3
  28. package/lib/core/components/SxpPageRender/VideoWidget/index.js +2 -2
  29. package/lib/core/components/SxpPageRender/index.js +7 -1
  30. package/lib/core/context/SxpDataSourceProvider.js +2 -2
  31. package/lib/materials/sxp/cta/AniLink/index.js +1 -1
  32. package/lib/materials/sxp/cta/AniLink/interactionRender.d.ts +0 -3
  33. package/lib/materials/sxp/cta/AniLink/interactionRender.js +1 -2
  34. package/lib/materials/sxp/cta/AniLink/material.js +9 -1
  35. package/lib/materials/sxp/cta/AniLinkPopup/index.js +2 -2
  36. package/lib/materials/sxp/cta/AniLinkPopup/interactionRender.d.ts +0 -10
  37. package/lib/materials/sxp/cta/AniLinkPopup/interactionRender.js +1 -7
  38. package/lib/materials/sxp/cta/AniLinkPopup/material.js +17 -10
  39. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -651,8 +651,8 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
651
651
  'itemFilter.itemType': waterFallData === null || waterFallData === void 0 ? void 0 : waterFallData.itemType,
652
652
  themeTag: themeTag.current
653
653
  });
654
- setRtcList(getFilterRecList(data));
655
- setCacheRtcList(getFilterRecList(data));
654
+ setRtcList(rtcList.concat(getFilterRecList(data)));
655
+ setCacheRtcList(cacheRtcList.concat(getFilterRecList(data)));
656
656
  }), [getRecommendVideos, rtcList, waterFallData, cacheRtcList]);
657
657
  const bffEventReport = useCallback(({ userInfo, eventInfo }) => {
658
658
  // 关闭 BFF 事件上报
@@ -8790,16 +8790,8 @@ const ExpandableText = ({ text, maxStr = 108, style, className, onClick, foldTex
8790
8790
  };
8791
8791
  var ExpandableText$1 = memo(ExpandableText);
8792
8792
 
8793
- /*
8794
- * @Author: binruan@chatlabs.com
8795
- * @Date: 2024-03-20 10:27:31
8796
- * @LastEditors: binruan@chatlabs.com
8797
- * @LastEditTime: 2024-07-31 17:54:50
8798
- * @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\FormatImage.tsx
8799
- *
8800
- */
8801
8793
  const FormatImage = forwardRef((props, ref) => {
8802
- const { src, onLoad, style, className, loading } = props;
8794
+ const { src, onLoad, style, className, loading, alt = 'image' } = props;
8803
8795
  const [imgSrc, setImgSrc] = useState();
8804
8796
  const imgRef = useRef(null);
8805
8797
  useImperativeHandle(ref, () => ({
@@ -8810,29 +8802,19 @@ const FormatImage = forwardRef((props, ref) => {
8810
8802
  useEffect(() => {
8811
8803
  setImgSrc(src);
8812
8804
  }, [src]);
8813
- // useEffect(() => {
8814
- // let observer: any = null;
8815
- // const { current } = imgRef;
8816
- // if (current) {
8817
- // observer = new IntersectionObserver(
8818
- // (entries) => {
8819
- // entries.forEach((entry) => {
8820
- // if (entry.isIntersecting) {
8821
- // setImgSrc(src);
8822
- // observer.unobserve(current);
8823
- // }
8824
- // });
8825
- // },
8826
- // { threshold: 0.1 } // 触发阈值,可根据需要调整
8827
- // );
8828
- // observer.observe(current);
8829
- // }
8830
- // return () => {
8831
- // if (observer && current) {
8832
- // observer.unobserve(current);
8833
- // }
8834
- // };
8835
- // }, [src]);
8805
+ useEffect(() => {
8806
+ const onShow = () => {
8807
+ var _a, _b;
8808
+ if (src && ((_b = (_a = imgRef === null || imgRef === void 0 ? void 0 : imgRef.current) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.display) === 'none') {
8809
+ imgRef.current.src = '';
8810
+ imgRef.current.src = src;
8811
+ }
8812
+ };
8813
+ SXP_EVENT_BUS.on(SXP_EVENT_TYPE.PAGE_DID_SHOW, onShow);
8814
+ return () => {
8815
+ SXP_EVENT_BUS.off(SXP_EVENT_TYPE.PAGE_DID_SHOW, onShow);
8816
+ };
8817
+ }, [src]);
8836
8818
  return (React.createElement(React.Fragment, null, (imgSrc === null || imgSrc === void 0 ? void 0 : imgSrc.includes('.avif')) ? (React.createElement("picture", null,
8837
8819
  React.createElement("source", { type: 'image/avif', srcSet: imgSrc }),
8838
8820
  React.createElement("source", { type: 'image/webp', srcSet: `${imgSrc}?imageMogr2/format/webp` }),
@@ -8841,11 +8823,11 @@ const FormatImage = forwardRef((props, ref) => {
8841
8823
  if (imgRef.current)
8842
8824
  imgRef.current.style.display = 'block';
8843
8825
  onLoad === null || onLoad === void 0 ? void 0 : onLoad(e.target);
8844
- }, alt: 'image' }))) : (React.createElement("img", { ref: imgRef, className: className, src: imgSrc, style: Object.assign(Object.assign({}, style), { display: 'none' }), loading: loading, onLoad: (e) => {
8826
+ }, alt: alt }))) : (React.createElement("img", { ref: imgRef, className: className, src: imgSrc, style: Object.assign(Object.assign({}, style), { display: 'none' }), loading: loading, onLoad: (e) => {
8845
8827
  if (imgRef.current)
8846
8828
  imgRef.current.style.display = 'block';
8847
8829
  onLoad === null || onLoad === void 0 ? void 0 : onLoad(e.target);
8848
- }, alt: 'image' }))));
8830
+ }, alt: alt }))));
8849
8831
  });
8850
8832
  var FormatImage$1 = memo(FormatImage);
8851
8833
 
@@ -14058,7 +14040,7 @@ const AniLink$1 = (_a) => {
14058
14040
  onClick === null || onClick === void 0 ? void 0 : onClick();
14059
14041
  }
14060
14042
  };
14061
- const title = (cta === null || cta === void 0 ? void 0 : cta.enTitle) || '查看详情 >';
14043
+ const title = (cta === null || cta === void 0 ? void 0 : cta.enTitle) || '查看详情';
14062
14044
  const aniTimStyle = useMemo(() => {
14063
14045
  var _a, _b;
14064
14046
  const ani = event === null || event === void 0 ? void 0 : event.animation;
@@ -14105,7 +14087,7 @@ var AniLinkComponent = memo(AniLink$1);
14105
14087
  * @Author: binruan@chatlabs.com
14106
14088
  * @Date: 2024-07-05 14:08:41
14107
14089
  * @LastEditors: binruan@chatlabs.com
14108
- * @LastEditTime: 2024-07-09 14:34:49
14090
+ * @LastEditTime: 2024-08-02 16:22:39
14109
14091
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLink\interactionRender.tsx
14110
14092
  *
14111
14093
  */
@@ -14133,11 +14115,10 @@ var interactionRender$1 = [
14133
14115
  label: '动画',
14134
14116
  options: [
14135
14117
  {
14136
- label: '由左向右/中间扩散',
14118
+ label: '默认',
14137
14119
  value: 1
14138
14120
  }
14139
14121
  ],
14140
- initialValue: 1,
14141
14122
  fieldProps: {
14142
14123
  style: {
14143
14124
  width: '100%'
@@ -14164,7 +14145,7 @@ var interactionRender$1 = [
14164
14145
  * @Author: binruan@chatlabs.com
14165
14146
  * @Date: 2023-07-28 18:29:57
14166
14147
  * @LastEditors: binruan@chatlabs.com
14167
- * @LastEditTime: 2024-07-05 19:27:54
14148
+ * @LastEditTime: 2024-08-02 17:03:34
14168
14149
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLink\material.tsx
14169
14150
  *
14170
14151
  */
@@ -14184,7 +14165,15 @@ const AniLink = createMaterial(AniLinkComponent, {
14184
14165
  ctaTitle: {
14185
14166
  fontSize: 15,
14186
14167
  color: '#fff',
14187
- textAlign: 'left'
14168
+ textAlign: 'center'
14169
+ }
14170
+ },
14171
+ event: {
14172
+ animation: {
14173
+ backgroundColor: '#F40082',
14174
+ name: 1,
14175
+ delay: 1000,
14176
+ duration: 2000
14188
14177
  }
14189
14178
  }
14190
14179
  },
@@ -14491,7 +14480,7 @@ const AniLinkPopup$1 = (_a) => {
14491
14480
  onClick === null || onClick === void 0 ? void 0 : onClick();
14492
14481
  }
14493
14482
  };
14494
- const title = (cta === null || cta === void 0 ? void 0 : cta.enTitle) || '查看详情 >';
14483
+ const title = (cta === null || cta === void 0 ? void 0 : cta.enTitle) || '查看详情';
14495
14484
  const aniTimStyle = useMemo(() => {
14496
14485
  const ani = event === null || event === void 0 ? void 0 : event.animation;
14497
14486
  if (ani) {
@@ -14523,7 +14512,7 @@ const AniLinkPopup$1 = (_a) => {
14523
14512
  React.createElement("div", { onClick: onClose, className: styles['modal-icon-wrapper'], style: { padding: (_s = style === null || style === void 0 ? void 0 : style['padding']) !== null && _s !== void 0 ? _s : 0 } },
14524
14513
  React.createElement("img", { src: (_t = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.popupCloseIcon) !== null && _t !== void 0 ? _t : closeIcon, alt: 'close', className: styles['modal-icon-wrapper-img'] })),
14525
14514
  React.createElement(Img$1, { src: src, rec: recData, item: (_y = (_w = (_v = (_u = recData === null || recData === void 0 ? void 0 : recData.video) === null || _u === void 0 ? void 0 : _u.bindProducts) === null || _v === void 0 ? void 0 : _v[0]) !== null && _w !== void 0 ? _w : (_x = recData === null || recData === void 0 ? void 0 : recData.video) === null || _x === void 0 ? void 0 : _x.bindProduct) !== null && _y !== void 0 ? _y : recData === null || recData === void 0 ? void 0 : recData.video, index: index, translateY: translateY, imgStyle: ctaTempStyles === null || ctaTempStyles === void 0 ? void 0 : ctaTempStyles.img }),
14526
- (!recData || (product === null || product === void 0 ? void 0 : product.title)) && (React.createElement("div", { className: styles['two-line-ellipsis'], style: ctaTempStyles === null || ctaTempStyles === void 0 ? void 0 : ctaTempStyles.title, dangerouslySetInnerHTML: {
14515
+ (!recData || (product === null || product === void 0 ? void 0 : product.title)) && (React.createElement("div", { className: styles['one-line-ellipsis'], style: ctaTempStyles === null || ctaTempStyles === void 0 ? void 0 : ctaTempStyles.title, dangerouslySetInnerHTML: {
14527
14516
  __html: setFontForText((_z = product === null || product === void 0 ? void 0 : product.title) !== null && _z !== void 0 ? _z : 'Product Name', ctaTempStyles === null || ctaTempStyles === void 0 ? void 0 : ctaTempStyles.title)
14528
14517
  } })),
14529
14518
  React.createElement("div", { className: styles['one-line-ellipsis'], style: Object.assign(Object.assign({}, ctaTempStyles === null || ctaTempStyles === void 0 ? void 0 : ctaTempStyles.ctaTitle), { lineHeight: ((_0 = ctaTempStyles === null || ctaTempStyles === void 0 ? void 0 : ctaTempStyles.ctaTitle) === null || _0 === void 0 ? void 0 : _0.height) + 'px' }), dangerouslySetInnerHTML: {
@@ -14532,14 +14521,6 @@ const AniLinkPopup$1 = (_a) => {
14532
14521
  };
14533
14522
  var AniLinkPopupComponent = memo(AniLinkPopup$1);
14534
14523
 
14535
- /*
14536
- * @Author: binruan@chatlabs.com
14537
- * @Date: 2024-07-04 15:28:39
14538
- * @LastEditors: binruan@chatlabs.com
14539
- * @LastEditTime: 2024-07-05 17:46:42
14540
- * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLinkPopup\interactionRender.tsx
14541
- *
14542
- */
14543
14524
  var interactionRender = [
14544
14525
  {
14545
14526
  title: '点击事件',
@@ -14553,22 +14534,16 @@ var interactionRender = [
14553
14534
  {
14554
14535
  title: '动画效果',
14555
14536
  child: [
14556
- {
14557
- type: 'Color',
14558
- name: ['animation', 'backgroundColor'],
14559
- label: '动画颜色'
14560
- },
14561
14537
  {
14562
14538
  type: 'Select',
14563
14539
  name: ['animation', 'name'],
14564
14540
  label: '动画',
14565
14541
  options: [
14566
14542
  {
14567
- label: '由左向右/中间扩散',
14543
+ label: '默认',
14568
14544
  value: 1
14569
14545
  }
14570
14546
  ],
14571
- initialValue: 1,
14572
14547
  fieldProps: {
14573
14548
  style: {
14574
14549
  width: '100%'
@@ -14591,11 +14566,19 @@ var interactionRender = [
14591
14566
  }
14592
14567
  ];
14593
14568
 
14569
+ /*
14570
+ * @Author: binruan@chatlabs.com
14571
+ * @Date: 2024-07-24 14:58:40
14572
+ * @LastEditors: binruan@chatlabs.com
14573
+ * @LastEditTime: 2024-08-02 17:09:37
14574
+ * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLinkPopup\material.tsx
14575
+ *
14576
+ */
14594
14577
  /*
14595
14578
  * @Author: binruan@chatlabs.com
14596
14579
  * @Date: 2023-07-28 18:29:57
14597
14580
  * @LastEditors: binruan@chatlabs.com
14598
- * @LastEditTime: 2024-07-08 14:36:05
14581
+ * @LastEditTime: 2024-08-02 17:09:14
14599
14582
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLinkPopup\material.tsx
14600
14583
  *
14601
14584
  */
@@ -14614,32 +14597,39 @@ const AniLinkPopup = createMaterial(AniLinkPopupComponent, {
14614
14597
  ctaTempStyles: {
14615
14598
  img: {
14616
14599
  borderRadius: 3,
14617
- width: 76,
14618
- height: 76,
14619
- marginBottom: 10
14600
+ width: 108,
14601
+ height: 108,
14602
+ marginBottom: 0
14620
14603
  },
14621
14604
  title: {
14622
- fontSize: 12,
14605
+ fontSize: 14,
14623
14606
  color: '#000',
14624
14607
  textAlign: 'left'
14625
14608
  },
14626
14609
  ctaTitle: {
14627
- fontSize: 10,
14610
+ width: 108,
14611
+ height: 22,
14612
+ fontSize: 12,
14628
14613
  color: '#fff',
14629
14614
  textAlign: 'center',
14630
- width: 76,
14631
- height: 20,
14632
14615
  backgroundColor: 'rgba(0,0,0,1)'
14633
14616
  }
14617
+ },
14618
+ event: {
14619
+ animation: {
14620
+ name: 1,
14621
+ delay: 1000,
14622
+ duration: 2000
14623
+ }
14634
14624
  }
14635
14625
  },
14636
14626
  style: {
14637
- width: 90,
14638
- height: 160,
14627
+ width: 120,
14628
+ height: 185,
14639
14629
  borderRadius: 3,
14640
14630
  backgroundColor: 'rgba(255,255,255,1)',
14641
14631
  padding: 7,
14642
- margin: 10
14632
+ margin: 15
14643
14633
  }
14644
14634
  },
14645
14635
  w: 100,
@@ -15113,7 +15103,7 @@ const VideoWidget$2 = ({ rec, index, height, data, muted, activeIndex, videoPost
15113
15103
  } },
15114
15104
  React.createElement("div", { style: { position: 'relative', width: '100%', height: '100%' } },
15115
15105
  React.createElement("div", { className: 'n-full-screen', ref: videoEleRef, id: videoId, style: { width: '100%', height: '100%' } }),
15116
- React.createElement("img", { hidden: !isPauseVideo, className: 'clc-pb-video-pause', alt: 'pause', src: videoPlayIcon !== null && videoPlayIcon !== void 0 ? videoPlayIcon : PAUSE_ICON }))),
15106
+ isPauseVideo && (React.createElement(FormatImage$1, { className: 'clc-pb-video-pause', src: videoPlayIcon !== null && videoPlayIcon !== void 0 ? videoPlayIcon : PAUSE_ICON, alt: 'pause' })))),
15117
15107
  renderPoster,
15118
15108
  renderLoading)) : (React.createElement("div", { className: 'video-container', key: rec === null || rec === void 0 ? void 0 : rec.video.itemId, style: {
15119
15109
  position: 'relative',
@@ -15124,7 +15114,7 @@ const VideoWidget$2 = ({ rec, index, height, data, muted, activeIndex, videoPost
15124
15114
  React.createElement("div", { className: 'n-full-screen', ref: videoEleRef, id: videoId, style: { width: '100%', height: '100%' } }),
15125
15115
  renderPoster,
15126
15116
  renderLoading,
15127
- React.createElement("img", { hidden: !isPauseVideo, className: 'clc-pb-video-pause', src: videoPlayIcon !== null && videoPlayIcon !== void 0 ? videoPlayIcon : PAUSE_ICON, alt: 'pause' })))));
15117
+ isPauseVideo && React.createElement(FormatImage$1, { className: 'clc-pb-video-pause', src: videoPlayIcon !== null && videoPlayIcon !== void 0 ? videoPlayIcon : PAUSE_ICON, alt: 'pause' })))));
15128
15118
  };
15129
15119
  var VideoWidget$3 = memo(VideoWidget$2);
15130
15120
 
@@ -15522,7 +15512,7 @@ var Tagbar$1 = memo(Tagbar);
15522
15512
  * @Author: binruan@chatlabs.com
15523
15513
  * @Date: 2024-01-15 19:03:09
15524
15514
  * @LastEditors: binruan@chatlabs.com
15525
- * @LastEditTime: 2024-08-01 17:42:09
15515
+ * @LastEditTime: 2024-08-02 10:50:56
15526
15516
  * @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\index.tsx
15527
15517
  *
15528
15518
  */
@@ -15535,6 +15525,8 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
15535
15525
  const viewTime = useRef();
15536
15526
  const [isLoadMore, setIsLoadMore] = useState(false);
15537
15527
  const [isShowMore, setIsShowMore] = useState(false);
15528
+ const [isReload, setIsReload] = useState(false);
15529
+ const skipLinkRef = useRef(false);
15538
15530
  const { loadVideos, bffEventReport, loading, setPopupDetailData, ctaEvent, swiperRef, waterFallData, setOpenHashtag, appDomain, openHashtag, loadingImage, isFromHashtag, popupDetailData, bffFbReport, curTime, h5EnterLink, isShowConsent, selectTag, isPreview } = useSxpDataSource();
15539
15531
  const { backMainFeed } = useEventReport();
15540
15532
  const { productView } = useEventReport();
@@ -15628,6 +15620,9 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
15628
15620
  });
15629
15621
  }
15630
15622
  else if (document.visibilityState === 'visible') {
15623
+ if (skipLinkRef.current === true) {
15624
+ setIsReload(true);
15625
+ }
15631
15626
  // 页面可见时触发,注意页面初始化时不会触发
15632
15627
  handleH5EnterLink();
15633
15628
  if (repCond) {
@@ -15817,6 +15812,7 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
15817
15812
  }
15818
15813
  });
15819
15814
  setSlideSkipState();
15815
+ skipLinkRef.current = true;
15820
15816
  window.location.href = window.getJointUtmLink(link);
15821
15817
  }
15822
15818
  }
@@ -15933,7 +15929,7 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
15933
15929
  renderBottom(rec, index),
15934
15930
  renderLikeButton(rec, index)))))));
15935
15931
  });
15936
- }, [containerWidth, data, height, loading, renderBottom, renderContent, visList, loadingImage]);
15932
+ }, [containerWidth, data, height, loading, renderBottom, renderContent, visList, loadingImage, isReload]);
15937
15933
  const mutedIcon = useIconLink('/pb_static/5beaaa5ce7f3477b99db3838619cc471.png');
15938
15934
  const unmutedIcon = useIconLink('/pb_static/fea8668a8a894e4aa3a86bcc775e895e.png');
15939
15935
  return (React.createElement("div", { id: 'sxp-render', className: 'clc-sxp-container' },