pb-sxp-ui 1.0.32 → 1.0.34

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 (36) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +111 -111
  3. package/dist/index.cjs +372 -28
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.css +0 -1
  6. package/dist/index.js +371 -28
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.min.cjs +3 -3
  9. package/dist/index.min.cjs.map +1 -1
  10. package/dist/index.min.js +3 -3
  11. package/dist/index.min.js.map +1 -1
  12. package/dist/pb-ui.js +372 -28
  13. package/dist/pb-ui.js.map +1 -1
  14. package/dist/pb-ui.min.js +3 -3
  15. package/dist/pb-ui.min.js.map +1 -1
  16. package/es/core/components/DiyPortalPreview/PictureGroup.d.ts +13 -0
  17. package/es/core/components/DiyPortalPreview/PictureGroup.js +11 -0
  18. package/es/core/components/DiyPortalPreview/VideoWidget.d.ts +15 -0
  19. package/es/core/components/DiyPortalPreview/VideoWidget.js +236 -0
  20. package/es/core/components/DiyPortalPreview/index.d.ts +4 -0
  21. package/es/core/components/DiyPortalPreview/index.js +110 -0
  22. package/es/index.d.ts +1 -0
  23. package/es/index.js +1 -0
  24. package/es/materials/sxp/popup/CommodityDetail/index.js +10 -10
  25. package/es/materials/sxp/popup/CommodityDetailDiroNew/index.js +10 -10
  26. package/lib/core/components/DiyPortalPreview/PictureGroup.d.ts +13 -0
  27. package/lib/core/components/DiyPortalPreview/PictureGroup.js +14 -0
  28. package/lib/core/components/DiyPortalPreview/VideoWidget.d.ts +15 -0
  29. package/lib/core/components/DiyPortalPreview/VideoWidget.js +239 -0
  30. package/lib/core/components/DiyPortalPreview/index.d.ts +4 -0
  31. package/lib/core/components/DiyPortalPreview/index.js +113 -0
  32. package/lib/index.d.ts +1 -0
  33. package/lib/index.js +3 -1
  34. package/lib/materials/sxp/popup/CommodityDetail/index.js +10 -10
  35. package/lib/materials/sxp/popup/CommodityDetailDiroNew/index.js +10 -10
  36. package/package.json +115 -115
package/dist/index.cjs CHANGED
@@ -865,7 +865,7 @@ const EditorCore = React.forwardRef(({ children, resolver, isSsr, schema, enable
865
865
  React.createElement(DataSourceProvider$1, { isSsr: isSsr, enable: enableDataSource }, children)));
866
866
  });
867
867
 
868
- var index$1 = /*#__PURE__*/Object.freeze({
868
+ var index$2 = /*#__PURE__*/Object.freeze({
869
869
  __proto__: null,
870
870
  EditorCore: EditorCore
871
871
  });
@@ -8340,7 +8340,7 @@ const FormatImage = React.forwardRef((props, ref) => {
8340
8340
  var FormatImage$1 = React.memo(FormatImage);
8341
8341
 
8342
8342
  const CommodityDetail$1 = (_a) => {
8343
- var _b, _c, _d, _e, _f, _g, _h, _j;
8343
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k;
8344
8344
  var { content, style, bgImg, onClick, schema, isDefault, bottom_image, tipText, isPost, viewTime, rec, swiper, commodityStyles, buttonStyle, index } = _a, props = __rest(_a, ["content", "style", "bgImg", "onClick", "schema", "isDefault", "bottom_image", "tipText", "isPost", "viewTime", "rec", "swiper", "commodityStyles", "buttonStyle", "index"]);
8345
8345
  const { sxpParameter } = useSxpDataSource();
8346
8346
  const { popupDetailData, bffEventReport, isPreview, waterFallData } = useSxpDataSource();
@@ -8381,7 +8381,7 @@ const CommodityDetail$1 = (_a) => {
8381
8381
  return '$7,000';
8382
8382
  }
8383
8383
  }, [product === null || product === void 0 ? void 0 : product.price, product === null || product === void 0 ? void 0 : product.currency]);
8384
- const width = isPreview ? 375 : window.innerWidth;
8384
+ const width = isPreview ? 375 : (_f = style === null || style === void 0 ? void 0 : style.width) !== null && _f !== void 0 ? _f : window.innerWidth;
8385
8385
  const renderContent = ({ isPost }) => {
8386
8386
  var _a, _b, _c;
8387
8387
  return (React.createElement("div", null,
@@ -8389,10 +8389,10 @@ const CommodityDetail$1 = (_a) => {
8389
8389
  React.createElement("div", { className: 'pb-commondity-content-title', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.title, hidden: !!product && !(product === null || product === void 0 ? void 0 : product.title) }, (_b = product === null || product === void 0 ? void 0 : product.title) !== null && _b !== void 0 ? _b : 'Pendant in Yellow Gold with Diamonds, Medium'),
8390
8390
  React.createElement("div", { className: 'pb-commondity-content-price', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.price, hidden: !!product && !(product === null || product === void 0 ? void 0 : product.price) }, priceText),
8391
8391
  React.createElement("div", { hidden: !!product && (!(product === null || product === void 0 ? void 0 : product.info) || (product === null || product === void 0 ? void 0 : product.info) === '') },
8392
- React.createElement(ExpandableText$1, { foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, onClick: () => setShowModal(true), isPost: isPost, text: (_c = product === null || product === void 0 ? void 0 : product.info) !== null && _c !== void 0 ? _c : `The design inspiration of Tiffany Lock series comes from the power of connection and inclusiveness, and the
8393
- bold and avant-garde visual design interprets the emotional bond connecting my heart. The Tiffany Lock
8394
- collection is unisex and is inspired by the padlock pattern found in the Tiffany Antique Collection. This
8395
- necklace features a stylish and eye-catching oval clasp chain decorated with a lock pattern. Crafted from
8392
+ React.createElement(ExpandableText$1, { foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, onClick: () => setShowModal(true), isPost: isPost, text: (_c = product === null || product === void 0 ? void 0 : product.info) !== null && _c !== void 0 ? _c : `The design inspiration of Tiffany Lock series comes from the power of connection and inclusiveness, and the
8393
+ bold and avant-garde visual design interprets the emotional bond connecting my heart. The Tiffany Lock
8394
+ collection is unisex and is inspired by the padlock pattern found in the Tiffany Antique Collection. This
8395
+ necklace features a stylish and eye-catching oval clasp chain decorated with a lock pattern. Crafted from
8396
8396
  18-karat gold, this necklace is embellished with hand-set diamonds.`, maxStr: 79, className: 'pb-commondity-content-info', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.info }))));
8397
8397
  };
8398
8398
  const renderBtn = () => {
@@ -8401,7 +8401,7 @@ const CommodityDetail$1 = (_a) => {
8401
8401
  };
8402
8402
  return (React.createElement("div", { className: 'pb-commondity' },
8403
8403
  React.createElement("div", Object.assign({ className: css.css(Object.assign({}, style)) }, props),
8404
- product && ((_f = product === null || product === void 0 ? void 0 : product.homePage) === null || _f === void 0 ? void 0 : _f.length) > 0 && (React.createElement(Swiper, { height: width, modules: [Pagination, Autoplay], pagination: {
8404
+ product && ((_g = product === null || product === void 0 ? void 0 : product.homePage) === null || _g === void 0 ? void 0 : _g.length) > 0 && (React.createElement(Swiper, { height: width, modules: [Pagination, Autoplay], pagination: {
8405
8405
  clickable: true,
8406
8406
  bulletActiveClass: 'swipe-item-active-bullet',
8407
8407
  clickableClass: (swiper === null || swiper === void 0 ? void 0 : swiper.dotsAlign) === 'left'
@@ -8409,7 +8409,7 @@ const CommodityDetail$1 = (_a) => {
8409
8409
  : 'commondityDetail-swiper-clickable-center'
8410
8410
  }, loop: true, autoplay: {
8411
8411
  delay: (swiper === null || swiper === void 0 ? void 0 : swiper.delay) * 1000
8412
- } }, (_g = product === null || product === void 0 ? void 0 : product.homePage) === null || _g === void 0 ? void 0 : _g.map((src) => {
8412
+ } }, (_h = product === null || product === void 0 ? void 0 : product.homePage) === null || _h === void 0 ? void 0 : _h.map((src) => {
8413
8413
  return (React.createElement(SwiperSlide, { key: src },
8414
8414
  React.createElement("div", { style: {
8415
8415
  overflow: 'hidden',
@@ -8418,7 +8418,7 @@ const CommodityDetail$1 = (_a) => {
8418
8418
  } },
8419
8419
  React.createElement(FormatImage$1, { style: { height: '100%', width: '100%', objectFit: 'cover', display: 'block' }, src: src }))));
8420
8420
  }))),
8421
- !((_h = product === null || product === void 0 ? void 0 : product.homePage) === null || _h === void 0 ? void 0 : _h.length) && (React.createElement("div", { className: css.css({
8421
+ !((_j = product === null || product === void 0 ? void 0 : product.homePage) === null || _j === void 0 ? void 0 : _j.length) && (React.createElement("div", { className: css.css({
8422
8422
  position: 'relative',
8423
8423
  height: 0,
8424
8424
  width: '100%',
@@ -8431,7 +8431,7 @@ const CommodityDetail$1 = (_a) => {
8431
8431
  top: 0,
8432
8432
  objectFit: 'cover',
8433
8433
  width: '100%'
8434
- }), src: (_j = sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.bottom_image) !== null && _j !== void 0 ? _j : bottom_image, alt: '' }))),
8434
+ }), src: (_k = sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.bottom_image) !== null && _k !== void 0 ? _k : bottom_image, alt: '' }))),
8435
8435
  React.createElement("div", { className: 'pb-commondity-content' }, renderContent({ isPost }))),
8436
8436
  renderBtn(),
8437
8437
  React.createElement(Modal$1, { visible: showModal, onClose: () => setShowModal(false) },
@@ -8791,7 +8791,7 @@ var settingRender$2 = [
8791
8791
  ];
8792
8792
 
8793
8793
  const CommodityDetailDiroNew$1 = (_a) => {
8794
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
8794
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
8795
8795
  var { style, isDefault, rec, viewTime, isPost, bottom_image, tipText, swiper, commodityStyles, buttonStyle, index } = _a, props = __rest(_a, ["style", "isDefault", "rec", "viewTime", "isPost", "bottom_image", "tipText", "swiper", "commodityStyles", "buttonStyle", "index"]);
8796
8796
  React.useState(true);
8797
8797
  const { sxpParameter } = useSxpDataSource();
@@ -8839,16 +8839,16 @@ const CommodityDetailDiroNew$1 = (_a) => {
8839
8839
  return '£102,300.00';
8840
8840
  }
8841
8841
  }, [product === null || product === void 0 ? void 0 : product.price, product === null || product === void 0 ? void 0 : product.currency]);
8842
- const width = isPreview ? 375 : window.innerWidth;
8842
+ const width = isPreview ? 375 : (_f = style === null || style === void 0 ? void 0 : style.width) !== null && _f !== void 0 ? _f : window.innerWidth;
8843
8843
  const productInfoText = ({ isPost }) => {
8844
8844
  return (React.createElement("div", { hidden: !!product && (!(product === null || product === void 0 ? void 0 : product.info) || (product === null || product === void 0 ? void 0 : product.info) === '') },
8845
8845
  React.createElement(ExpandableText$1, { isPost: isPost, onClick: () => setShowModal(true), className: 'pb-commondityDiroNew-info', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.info, foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, text: (product === null || product === void 0 ? void 0 : product.info) ||
8846
- `Unveiled at the Spring-Summer 2023 fashion show, the Dior Toujours bag is distinguished by a casual and practical design. Crafted in black calfskin with Macrocannage topstitching, it showcases a spacious interior compartment with a matching pouch to organize essentials. Its leather strap closure keeps items secure while the D of the CD Lock closure twists to adjust the sides and enhance the bag's silhouette. The leather handles can be adjusted using the small notches in order to be able to carry the large bag by hand or wear it over the shoulder. CD Lock and strap closures D.I.O.R. charms Removable interior pouch Adjustable leather handles Dust bag included
8846
+ `Unveiled at the Spring-Summer 2023 fashion show, the Dior Toujours bag is distinguished by a casual and practical design. Crafted in black calfskin with Macrocannage topstitching, it showcases a spacious interior compartment with a matching pouch to organize essentials. Its leather strap closure keeps items secure while the D of the CD Lock closure twists to adjust the sides and enhance the bag's silhouette. The leather handles can be adjusted using the small notches in order to be able to carry the large bag by hand or wear it over the shoulder. CD Lock and strap closures D.I.O.R. charms Removable interior pouch Adjustable leather handles Dust bag included
8847
8847
  Made in Italy` })));
8848
8848
  };
8849
8849
  return (React.createElement("div", { className: 'pb-commondityDiroNew' },
8850
8850
  React.createElement("div", Object.assign({ ref: scrollRef, className: css.css(Object.assign({}, style)) }, props),
8851
- product && ((_f = product === null || product === void 0 ? void 0 : product.homePage) === null || _f === void 0 ? void 0 : _f.length) > 0 && (React.createElement(Swiper, { height: width, modules: [Pagination, Autoplay], pagination: {
8851
+ product && ((_g = product === null || product === void 0 ? void 0 : product.homePage) === null || _g === void 0 ? void 0 : _g.length) > 0 && (React.createElement(Swiper, { height: width, modules: [Pagination, Autoplay], pagination: {
8852
8852
  clickable: true,
8853
8853
  bulletActiveClass: 'commondityDiroNew-swipe-item-active-bullet',
8854
8854
  clickableClass: (swiper === null || swiper === void 0 ? void 0 : swiper.dotsAlign) === 'left'
@@ -8856,7 +8856,7 @@ Made in Italy` })));
8856
8856
  : 'commondityDiroNew-swiper-clickable-center'
8857
8857
  }, loop: true, autoplay: {
8858
8858
  delay: (swiper === null || swiper === void 0 ? void 0 : swiper.delay) * 1000
8859
- } }, (_g = product === null || product === void 0 ? void 0 : product.homePage) === null || _g === void 0 ? void 0 : _g.map((src) => {
8859
+ } }, (_h = product === null || product === void 0 ? void 0 : product.homePage) === null || _h === void 0 ? void 0 : _h.map((src) => {
8860
8860
  return (React.createElement(SwiperSlide, { key: src },
8861
8861
  React.createElement("div", { style: {
8862
8862
  overflow: 'hidden',
@@ -8865,7 +8865,7 @@ Made in Italy` })));
8865
8865
  } },
8866
8866
  React.createElement(FormatImage$1, { style: { height: '100%', width: '100%', objectFit: 'cover', display: 'block' }, src: src }))));
8867
8867
  }))),
8868
- !((_h = product === null || product === void 0 ? void 0 : product.homePage) === null || _h === void 0 ? void 0 : _h.length) && (React.createElement("div", { className: css.css({
8868
+ !((_j = product === null || product === void 0 ? void 0 : product.homePage) === null || _j === void 0 ? void 0 : _j.length) && (React.createElement("div", { className: css.css({
8869
8869
  position: 'relative',
8870
8870
  height: 0,
8871
8871
  width: '100%',
@@ -8878,16 +8878,16 @@ Made in Italy` })));
8878
8878
  top: 0,
8879
8879
  objectFit: 'cover',
8880
8880
  width: '100%'
8881
- }), src: (_j = sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.bottom_image) !== null && _j !== void 0 ? _j : bottom_image, alt: '' }))),
8881
+ }), src: (_k = sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.bottom_image) !== null && _k !== void 0 ? _k : bottom_image, alt: '' }))),
8882
8882
  React.createElement("div", { className: 'pb-commondityDiroNew-content' },
8883
8883
  React.createElement("div", { className: 'pb-commondityDiroNew-content-top' },
8884
8884
  React.createElement("div", { className: 'pb-commondityDiroNew-content-top-left' },
8885
- React.createElement("div", { className: 'pb-commondityDiroNew-content-top-left-title', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.title }, (_k = product === null || product === void 0 ? void 0 : product.title) !== null && _k !== void 0 ? _k : 'Large Dior Toujours Bag'),
8885
+ React.createElement("div", { className: 'pb-commondityDiroNew-content-top-left-title', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.title }, (_l = product === null || product === void 0 ? void 0 : product.title) !== null && _l !== void 0 ? _l : 'Large Dior Toujours Bag'),
8886
8886
  React.createElement("div", { className: 'pb-commondityDiroNew-content-collection', hidden: !!product && (!(product === null || product === void 0 ? void 0 : product.collection) || (product === null || product === void 0 ? void 0 : product.collection) === ''), style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.collection }, (product === null || product === void 0 ? void 0 : product.collection) || 'Black Macrocannage Calfskin')),
8887
8887
  React.createElement("div", { className: 'pb-commondityDiroNew-content-top-right' },
8888
8888
  React.createElement("div", { className: 'pb-commondityDiroNew-content-top-right-price', hidden: !!product && !(product === null || product === void 0 ? void 0 : product.price), style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.price }, priceText),
8889
- React.createElement("div", { className: 'pb-commondityDiroNew-content-top-right-price', hidden: !!product && !(product === null || product === void 0 ? void 0 : product.taxInfo), style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.taxInfo }, (_l = product === null || product === void 0 ? void 0 : product.taxInfo) !== null && _l !== void 0 ? _l : '税费'))),
8890
- (!product || (product === null || product === void 0 ? void 0 : product.link)) && (React.createElement("button", { onClick: handleLink, className: 'pb-commondityDiroNew-btn', style: buttonStyle }, (_m = cta === null || cta === void 0 ? void 0 : cta.enTitle) !== null && _m !== void 0 ? _m : 'Shop now')),
8889
+ React.createElement("div", { className: 'pb-commondityDiroNew-content-top-right-price', hidden: !!product && !(product === null || product === void 0 ? void 0 : product.taxInfo), style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.taxInfo }, (_m = product === null || product === void 0 ? void 0 : product.taxInfo) !== null && _m !== void 0 ? _m : '税费'))),
8890
+ (!product || (product === null || product === void 0 ? void 0 : product.link)) && (React.createElement("button", { onClick: handleLink, className: 'pb-commondityDiroNew-btn', style: buttonStyle }, (_o = cta === null || cta === void 0 ? void 0 : cta.enTitle) !== null && _o !== void 0 ? _o : 'Shop now')),
8891
8891
  productInfoText({ isPost }))),
8892
8892
  React.createElement(Modal$1, { visible: showModal, onClose: () => setShowModal(false) }, productInfoText({ isPost: false }))));
8893
8893
  };
@@ -11991,7 +11991,7 @@ var SXP_EVENT_TYPE;
11991
11991
  SXP_EVENT_TYPE["PAGE_DID_HIDE"] = "pageDidHide";
11992
11992
  })(SXP_EVENT_TYPE || (SXP_EVENT_TYPE = {}));
11993
11993
 
11994
- const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostConfig }) => {
11994
+ const VideoWidget$2 = ({ rec, index, height, data, muted, activeIndex, videoPostConfig }) => {
11995
11995
  const [isPauseVideo, setIsPauseVideo] = React.useState(false);
11996
11996
  const videoRef = React.useRef(null);
11997
11997
  const { bffEventReport, sxpParameter, waterFallData, openHashtag } = useSxpDataSource();
@@ -12259,7 +12259,7 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostCo
12259
12259
  renderPoster,
12260
12260
  React.createElement("img", { hidden: !isPauseVideo, className: 'clc-pb-video-pause', src: PAUSE_ICON })))));
12261
12261
  };
12262
- var VideoWidget$1 = React.memo(VideoWidget);
12262
+ var VideoWidget$3 = React.memo(VideoWidget$2);
12263
12263
 
12264
12264
  /*
12265
12265
  * @Author: binruan@chatlabs.com
@@ -12358,7 +12358,7 @@ const Picture = (props) => {
12358
12358
  * @LastEditTime: 2024-04-18 19:56:22
12359
12359
  * @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\PictureGroup\index.tsx
12360
12360
  */
12361
- const PictureGroup = ({ imgUrls, width, height, rec, index, onReportViewImageEnd, onViewImageStartEvent, imgUrlsPostConfig }) => {
12361
+ const PictureGroup$2 = ({ imgUrls, width, height, rec, index, onReportViewImageEnd, onViewImageStartEvent, imgUrlsPostConfig }) => {
12362
12362
  var _a;
12363
12363
  const ref = React.useRef();
12364
12364
  const { isActive } = useSwiperSlide();
@@ -12387,7 +12387,7 @@ const PictureGroup = ({ imgUrls, width, height, rec, index, onReportViewImageEnd
12387
12387
  React.createElement(Picture, { src: url, height: height, imgUrlsPostConfig: imgUrlsPostConfig })));
12388
12388
  })));
12389
12389
  };
12390
- var PictureGroup$1 = React.memo(PictureGroup);
12390
+ var PictureGroup$3 = React.memo(PictureGroup$2);
12391
12391
 
12392
12392
  /*
12393
12393
  * @Author: binruan@chatlabs.com
@@ -12727,10 +12727,10 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
12727
12727
  const renderContent = React.useCallback((rec, index) => {
12728
12728
  var _a, _b, _c, _d;
12729
12729
  if ((_a = rec.video) === null || _a === void 0 ? void 0 : _a.url) {
12730
- return (React.createElement(VideoWidget$1, { rec: rec, index: index, muted: isMuted, data: data, height: height, activeIndex: activeIndex, videoPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.videoPost }));
12730
+ return (React.createElement(VideoWidget$3, { rec: rec, index: index, muted: isMuted, data: data, height: height, activeIndex: activeIndex, videoPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.videoPost }));
12731
12731
  }
12732
12732
  if ((_b = rec.video) === null || _b === void 0 ? void 0 : _b.imgUrls) {
12733
- return (React.createElement(PictureGroup$1, { key: rec.video.itemId, imgUrls: rec.video.imgUrls, width: containerWidth, height: height, rec: rec, index: index, onReportViewImageEnd: handleReportViewImageEnd, onViewImageStartEvent: handleViewImageStartEvent, imgUrlsPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.imgUrlsPost }));
12733
+ return (React.createElement(PictureGroup$3, { key: rec.video.itemId, imgUrls: rec.video.imgUrls, width: containerWidth, height: height, rec: rec, index: index, onReportViewImageEnd: handleReportViewImageEnd, onViewImageStartEvent: handleViewImageStartEvent, imgUrlsPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.imgUrlsPost }));
12734
12734
  }
12735
12735
  if (rec.product && Array.isArray(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) && ((_c = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) === null || _c === void 0 ? void 0 : _c.length) > 0) {
12736
12736
  return (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) === null || _d === void 0 ? void 0 : _d.map((value, idx) => {
@@ -12969,6 +12969,349 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
12969
12969
  React.createElement(WaterFall$1, Object.assign({}, (_g = (_f = (_e = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.hashTag) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.item) === null || _g === void 0 ? void 0 : _g.props))));
12970
12970
  };
12971
12971
 
12972
+ const PictureGroup = ({ imgUrls, width, height, imgUrlsPostConfig, rec, index }) => {
12973
+ return (React.createElement(Swiper, { defaultValue: 0, direction: 'horizontal', modules: [Pagination, Autoplay], pagination: { clickable: true, bulletActiveClass: 'swipe-item-active-bullet' }, height: height, style: { width }, loop: true, autoplay: false }, imgUrls === null || imgUrls === void 0 ? void 0 : imgUrls.map((url) => {
12974
+ return (React.createElement(SwiperSlide, { key: url },
12975
+ React.createElement(Picture, { src: url, height: height, imgUrlsPostConfig: imgUrlsPostConfig })));
12976
+ })));
12977
+ };
12978
+ var PictureGroup$1 = React.memo(PictureGroup);
12979
+
12980
+ const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostConfig, width }) => {
12981
+ const [isPauseVideo, setIsPauseVideo] = React.useState(false);
12982
+ const videoRef = React.useRef(null);
12983
+ const { bffEventReport, sxpParameter, waterFallData, openHashtag } = useSxpDataSource();
12984
+ const videoStartTime = React.useRef(0);
12985
+ const [isLoadFinish, setIsLoadFinish] = React.useState(false);
12986
+ const [isFirstPlay, setIsFirstPlay] = React.useState(true);
12987
+ const canvasRef = React.useRef(null);
12988
+ const [firstFrameSrc, setFirstFrameSrc] = React.useState('');
12989
+ React.useEffect(() => {
12990
+ if (!videoRef.current)
12991
+ return;
12992
+ videoRef.current.muted = muted;
12993
+ }, [muted]);
12994
+ const handleVideoStart = React.useCallback(() => {
12995
+ var _a;
12996
+ (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.play();
12997
+ }, []);
12998
+ const PAUSE_ICON = useIconLink('/pb_static/06f28a2025c74c1cb49be6767316d827.png');
12999
+ const handlePlaying = React.useCallback(() => {
13000
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
13001
+ setIsPauseVideo(false);
13002
+ const item = data[index];
13003
+ if (item && ((_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.duration)) {
13004
+ videoStartTime.current = ((_b = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _b === void 0 ? void 0 : _b.currentTime) || 0;
13005
+ const videoDuration = ((_d = (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.duration) !== null && _d !== void 0 ? _d : 0).toFixed(2);
13006
+ const videoCurrentTime = ((_f = (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.currentTime) !== null && _f !== void 0 ? _f : 0).toFixed(2);
13007
+ const playType = isFirstPlay ? '0' : '1';
13008
+ bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
13009
+ eventInfo: {
13010
+ eventSubject: 'playVideo',
13011
+ eventDescription: 'User played the video',
13012
+ contentId: (_h = (_g = item.video) === null || _g === void 0 ? void 0 : _g.itemId) !== null && _h !== void 0 ? _h : '',
13013
+ contentName: (_k = (_j = item.video) === null || _j === void 0 ? void 0 : _j.title) !== null && _k !== void 0 ? _k : '',
13014
+ playType,
13015
+ startTime: videoCurrentTime,
13016
+ videoDuration,
13017
+ contentTags: JSON.stringify((_m = (_l = item.video) === null || _l === void 0 ? void 0 : _l.tags) !== null && _m !== void 0 ? _m : []),
13018
+ position: index + '',
13019
+ contentFormat: 'video',
13020
+ traceInfo: (_o = item.video) === null || _o === void 0 ? void 0 : _o.traceInfo
13021
+ }
13022
+ });
13023
+ setIsFirstPlay(false);
13024
+ }
13025
+ }, [bffEventReport, data, index, isFirstPlay]);
13026
+ const handleLoadedMetadata = React.useCallback(() => {
13027
+ setIsLoadFinish(true);
13028
+ }, []);
13029
+ const handleClickVideo = React.useCallback((type) => () => {
13030
+ var _a, _b, _c, _d, _e;
13031
+ if (!isLoadFinish)
13032
+ return;
13033
+ const isPause = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.paused;
13034
+ switch (type) {
13035
+ case 'start':
13036
+ if (!isPause)
13037
+ return;
13038
+ (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.play();
13039
+ setIsPauseVideo(false);
13040
+ break;
13041
+ case 'pause':
13042
+ if (isPause)
13043
+ return;
13044
+ (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.pause();
13045
+ setIsPauseVideo(true);
13046
+ break;
13047
+ default:
13048
+ if (isPause) {
13049
+ (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.play();
13050
+ }
13051
+ else {
13052
+ (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.pause();
13053
+ }
13054
+ setIsPauseVideo(!isPause);
13055
+ break;
13056
+ }
13057
+ }, [isLoadFinish]);
13058
+ const onPause = React.useCallback(() => {
13059
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
13060
+ const item = data[index];
13061
+ const videoDuration = ((_b = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.duration) !== null && _b !== void 0 ? _b : 0).toFixed(2);
13062
+ const videoCurrentTime = ((_d = (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.currentTime) !== null && _d !== void 0 ? _d : 0).toFixed(2);
13063
+ if ((_e = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _e === void 0 ? void 0 : _e.duration) {
13064
+ const playDuration = (((_f = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _f === void 0 ? void 0 : _f.currentTime) - videoStartTime.current).toFixed(2);
13065
+ bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
13066
+ eventInfo: {
13067
+ eventSubject: 'playOverVideo',
13068
+ eventDescription: 'User finished playing the video',
13069
+ contentId: (_h = (_g = item.video) === null || _g === void 0 ? void 0 : _g.itemId) !== null && _h !== void 0 ? _h : '',
13070
+ contentName: (_k = (_j = item.video) === null || _j === void 0 ? void 0 : _j.title) !== null && _k !== void 0 ? _k : '',
13071
+ endTime: videoCurrentTime,
13072
+ videoDuration,
13073
+ playDuration,
13074
+ contentTags: JSON.stringify((_m = (_l = item.video) === null || _l === void 0 ? void 0 : _l.tags) !== null && _m !== void 0 ? _m : []),
13075
+ position: index + '',
13076
+ contentFormat: 'video',
13077
+ traceInfo: (_o = item.video) === null || _o === void 0 ? void 0 : _o.traceInfo
13078
+ }
13079
+ });
13080
+ }
13081
+ }, [data, index, bffEventReport]);
13082
+ const blur = React.useMemo(() => {
13083
+ return (videoPostConfig === null || videoPostConfig === void 0 ? void 0 : videoPostConfig.mode) === '2';
13084
+ }, [videoPostConfig]);
13085
+ const translateY = React.useMemo(() => {
13086
+ var _a;
13087
+ return (videoPostConfig === null || videoPostConfig === void 0 ? void 0 : videoPostConfig.mode) === '2'
13088
+ ? `translateY(-${50 + ((_a = videoPostConfig === null || videoPostConfig === void 0 ? void 0 : videoPostConfig.offsetTop) !== null && _a !== void 0 ? _a : 0)}%) translate3d(0px, 0px, 0px)`
13089
+ : 'translateY(-50%)';
13090
+ }, [videoPostConfig]);
13091
+ const blurBgSrc = React.useMemo(() => {
13092
+ var _a;
13093
+ return ((_a = rec === null || rec === void 0 ? void 0 : rec.video) === null || _a === void 0 ? void 0 : _a.cover) || firstFrameSrc;
13094
+ }, [firstFrameSrc, rec]);
13095
+ const handLoadeddata = React.useCallback(() => {
13096
+ if (!canvasRef || !videoRef || !videoRef.current || !canvasRef.current)
13097
+ return;
13098
+ const video = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current;
13099
+ const canvas = canvasRef === null || canvasRef === void 0 ? void 0 : canvasRef.current;
13100
+ const ctx = canvas.getContext('2d');
13101
+ const targetWidth = window === null || window === void 0 ? void 0 : window.innerWidth;
13102
+ const targetHeight = window === null || window === void 0 ? void 0 : window.innerHeight;
13103
+ canvas.height = targetHeight;
13104
+ canvas.width = targetWidth;
13105
+ ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
13106
+ setFirstFrameSrc(canvas.toDataURL());
13107
+ }, []);
13108
+ React.useEffect(() => {
13109
+ var _a, _b, _c, _d;
13110
+ if (!videoRef.current)
13111
+ return;
13112
+ setIsPauseVideo(false);
13113
+ if (!videoRef.current.src) {
13114
+ const videoSrc = rec.video.url;
13115
+ if (videoSrc.includes('.m3u8')) {
13116
+ if (Hls.isSupported()) {
13117
+ const hls = new Hls();
13118
+ hls.loadSource(videoSrc);
13119
+ hls.attachMedia(videoRef.current);
13120
+ }
13121
+ else if (videoRef.current.canPlayType('application/vnd.apple.mpegurl')) {
13122
+ videoRef.current.src = videoSrc;
13123
+ }
13124
+ else {
13125
+ videoRef.current.src = videoSrc;
13126
+ }
13127
+ }
13128
+ else {
13129
+ videoRef.current.src = videoSrc;
13130
+ }
13131
+ videoRef.current.setAttribute('x5-playsinline', 'true');
13132
+ videoRef.current.setAttribute('webkit-playsinline', 'true');
13133
+ }
13134
+ (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('loadedmetadata', handleLoadedMetadata);
13135
+ (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('canplay', handleLoadedMetadata);
13136
+ (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.addEventListener('playing', handlePlaying);
13137
+ (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.addEventListener('loadeddata', handLoadeddata);
13138
+ return () => {
13139
+ var _a, _b, _c, _d;
13140
+ (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('loadedmetadata', handleLoadedMetadata);
13141
+ (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.removeEventListener('canplay', handleLoadedMetadata);
13142
+ (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.removeEventListener('playing', handlePlaying);
13143
+ (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.removeEventListener('loadeddata', handLoadeddata);
13144
+ };
13145
+ }, [handleLoadedMetadata, handlePlaying, rec.video, handLoadeddata]);
13146
+ const renderPoster = React.useMemo(() => {
13147
+ if (!(sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image) || isLoadFinish) {
13148
+ return null;
13149
+ }
13150
+ return (React.createElement("img", { style: { position: 'absolute', left: 0, top: 0, width: '100%', height: '100%', objectFit: 'cover' }, src: sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image }));
13151
+ }, [isLoadFinish, sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image]);
13152
+ React.useEffect(() => {
13153
+ const handleBeforeUnload = () => {
13154
+ var _a, _b;
13155
+ if (activeIndex === index && ((_a = rec === null || rec === void 0 ? void 0 : rec.video) === null || _a === void 0 ? void 0 : _a.url) && ((_b = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _b === void 0 ? void 0 : _b.src) && !isPauseVideo) {
13156
+ handleClickVideo('pause')();
13157
+ }
13158
+ };
13159
+ window.addEventListener('beforeunload', handleBeforeUnload);
13160
+ return () => {
13161
+ window.removeEventListener('beforeunload', handleBeforeUnload);
13162
+ };
13163
+ }, [activeIndex, index, rec, videoRef, handleClickVideo, isPauseVideo]);
13164
+ const blurStyle = React.useMemo(() => {
13165
+ return blur
13166
+ ? {
13167
+ filter: 'blur(10px)',
13168
+ transform: 'translate3d(0px, 0px, 0px) scale(1.2)'
13169
+ }
13170
+ : {};
13171
+ }, [blur]);
13172
+ if (!rec.video) {
13173
+ return null;
13174
+ }
13175
+ return (React.createElement(React.Fragment, null, blur ? (React.createElement("div", { className: 'video-container', key: rec.video.itemId, onClick: handleClickVideo(), style: {
13176
+ position: 'relative',
13177
+ width,
13178
+ height,
13179
+ overflow: 'hidden'
13180
+ } },
13181
+ React.createElement(FormatImage$1, { src: blurBgSrc, style: Object.assign({ height,
13182
+ width, objectFit: 'cover' }, blurStyle) }),
13183
+ React.createElement("canvas", { ref: canvasRef, style: { display: 'none' } }),
13184
+ React.createElement("div", { style: {
13185
+ position: 'absolute',
13186
+ width,
13187
+ height,
13188
+ top: '50%',
13189
+ transform: translateY,
13190
+ left: 0,
13191
+ right: 0
13192
+ } },
13193
+ React.createElement("div", { style: { position: 'relative', width, height: '100%' } },
13194
+ React.createElement("video", { id: `pb-video-${index}`, className: 'clc-pb-video', ref: videoRef, crossOrigin: 'anonymous', muted: true, controls: false, playsInline: true, preload: 'auto', onPause: onPause, onEnded: handleVideoStart, style: {
13195
+ width: '100%',
13196
+ height,
13197
+ objectFit: 'contain'
13198
+ } }),
13199
+ React.createElement("img", { hidden: !isPauseVideo, className: 'clc-pb-video-pause', src: PAUSE_ICON }))),
13200
+ renderPoster)) : (React.createElement("div", { className: 'video-container', key: rec.video.itemId, onClick: handleClickVideo(), style: {
13201
+ position: 'relative',
13202
+ width,
13203
+ height,
13204
+ overflow: 'hidden'
13205
+ } },
13206
+ React.createElement("video", { id: `pb-video-${index}`, className: 'clc-pb-video', ref: videoRef, crossOrigin: 'anonymous', muted: true, controls: false, playsInline: true, preload: 'auto', onPause: onPause, onEnded: handleVideoStart }),
13207
+ renderPoster,
13208
+ React.createElement("img", { hidden: !isPauseVideo, className: 'clc-pb-video-pause', src: PAUSE_ICON })))));
13209
+ };
13210
+ var VideoWidget$1 = React.memo(VideoWidget);
13211
+
13212
+ const RESOLVER$1 = {};
13213
+ Object.values(_materials_).forEach((v) => {
13214
+ RESOLVER$1[v.extend.type] = v;
13215
+ });
13216
+ const DiyPortalPreview = ({ data, globalConfig, tipText, nudge, tempMap, descStyle, hashTagStyle }) => {
13217
+ const containerWidth = 375;
13218
+ const containerHeight = 664;
13219
+ const height = React.useMemo(() => {
13220
+ return (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.logoUrl) && (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowLogo) ? containerHeight - 45 : containerHeight;
13221
+ }, [globalConfig, containerHeight]);
13222
+ const renderContent = (rec, index) => {
13223
+ var _a, _b, _c, _d;
13224
+ if ((_a = rec.video) === null || _a === void 0 ? void 0 : _a.url) {
13225
+ return (React.createElement(VideoWidget$1, { rec: rec, index: index, muted: true, width: containerWidth, data: data !== null && data !== void 0 ? data : [], height: height, activeIndex: index, videoPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.videoPost }));
13226
+ }
13227
+ if ((_b = rec.video) === null || _b === void 0 ? void 0 : _b.imgUrls) {
13228
+ return (React.createElement(PictureGroup$1, { key: rec.video.itemId, imgUrls: rec.video.imgUrls, width: containerWidth, height: height, rec: rec, index: index, imgUrlsPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.imgUrlsPost }));
13229
+ }
13230
+ if (rec.product) {
13231
+ if (rec.product && Array.isArray(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) && ((_c = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) === null || _c === void 0 ? void 0 : _c.length) > 0) {
13232
+ return (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) === null || _d === void 0 ? void 0 : _d.map((value, idx) => {
13233
+ var _a, _b, _c, _d, _e, _f, _g, _h;
13234
+ const t = RESOLVER$1[(_a = value === null || value === void 0 ? void 0 : value.item) === null || _a === void 0 ? void 0 : _a.type];
13235
+ const Component = withBindDataSource(t);
13236
+ const defaulSetting = (_b = t === null || t === void 0 ? void 0 : t.extend) === null || _b === void 0 ? void 0 : _b.defaulSetting;
13237
+ return (React.createElement(Component, Object.assign({ key: `${index}${idx}`, textStyle: Object.assign(Object.assign({}, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.textStyle), (_c = value === null || value === void 0 ? void 0 : value.item) === null || _c === void 0 ? void 0 : _c.textStyle), bindDatas: (_e = (_d = value === null || value === void 0 ? void 0 : value.item) === null || _d === void 0 ? void 0 : _d.bindDatas) !== null && _e !== void 0 ? _e : [] }, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.props, (_f = value === null || value === void 0 ? void 0 : value.item) === null || _f === void 0 ? void 0 : _f.props, { event: ((_g = value === null || value === void 0 ? void 0 : value.item) === null || _g === void 0 ? void 0 : _g.event) || {},
13238
+ // schema={schema}
13239
+ id: value === null || value === void 0 ? void 0 : value.id,
13240
+ // viewTime={viewTime.current}
13241
+ rec: rec, isPost: true, tipText: tipText, style: Object.assign(Object.assign(Object.assign({}, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.style), (_h = value === null || value === void 0 ? void 0 : value.item) === null || _h === void 0 ? void 0 : _h.style), { width: containerWidth, height, overflow: 'auto' }), index: index })));
13242
+ });
13243
+ }
13244
+ }
13245
+ };
13246
+ const renderLogo = React.useMemo(() => {
13247
+ if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.logoUrl) && (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowLogo)) {
13248
+ return (React.createElement("div", { className: 'clc-sxp-logo-banner', style: { backgroundColor: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.color } },
13249
+ React.createElement("img", { src: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.logoUrl, alt: 'logo' })));
13250
+ }
13251
+ return null;
13252
+ }, [globalConfig]);
13253
+ const renderBottom = (rec, index) => {
13254
+ var _a, _b, _c, _d, _e, _f, _g;
13255
+ if (rec.video) {
13256
+ return (React.createElement(React.Fragment, null,
13257
+ ((_a = rec.video) === null || _a === void 0 ? void 0 : _a.title) && React.createElement("div", { className: 'clc-sxp-bottom-shadow' }),
13258
+ React.createElement("div", { className: 'clc-sxp-bottom' },
13259
+ React.createElement(Nudge, { nudge: nudge }),
13260
+ React.createElement("div", { className: 'clc-sxp-bottom-card' },
13261
+ React.createElement(RenderCard$1, { rec: rec, index: index, tempMap: tempMap, resolver: RESOLVER$1 })),
13262
+ React.createElement("div", null,
13263
+ React.createElement(ExpandableText$1, { className: 'clc-sxp-bottom-text', isPost: true, foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, text: (_c = (_b = rec.video) === null || _b === void 0 ? void 0 : _b.title) !== null && _c !== void 0 ? _c : '', style: Object.assign(Object.assign({}, descStyle), { textShadow: (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isOpenTextShadow) ? '2px 2px 4px rgba(0, 0, 0, 0.5)' : 'none' }) })),
13264
+ React.createElement(Hashtag$1, { index: index, tags: (_e = (_d = rec === null || rec === void 0 ? void 0 : rec.video) === null || _d === void 0 ? void 0 : _d.hashTags) !== null && _e !== void 0 ? _e : [], itemId: (_f = rec === null || rec === void 0 ? void 0 : rec.video) === null || _f === void 0 ? void 0 : _f.itemId, itemType: ((_g = rec.video) === null || _g === void 0 ? void 0 : _g.itemId) ? 'VIDEO' : null, rec: rec, hashTagStyle: hashTagStyle }))));
13265
+ }
13266
+ return null;
13267
+ };
13268
+ const renderLikeButton = (rec, index) => {
13269
+ var _a, _b;
13270
+ if (!(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowLike))
13271
+ return;
13272
+ let top = (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconY) !== null && _a !== void 0 ? _a : 400;
13273
+ if (top < 40) {
13274
+ top += 40;
13275
+ }
13276
+ if (rec.video) {
13277
+ return (React.createElement(LikeButton$1, { key: rec.position, activeIcon: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIcon, unActicveIcon: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.unlikeIcon, position: index, active: rec.isCollected, recData: rec, className: 'clc-sxp-like-button', style: {
13278
+ top,
13279
+ right: (_b = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconX) !== null && _b !== void 0 ? _b : 0
13280
+ } }));
13281
+ }
13282
+ return null;
13283
+ };
13284
+ const mutedIcon = useIconLink('/pb_static/5beaaa5ce7f3477b99db3838619cc471.png');
13285
+ const unmutedIcon = useIconLink('/pb_static/fea8668a8a894e4aa3a86bcc775e895e.png');
13286
+ const renderView = (rec, index) => {
13287
+ var _a, _b, _c, _d;
13288
+ return (React.createElement("div", { style: { position: 'relative' } },
13289
+ renderLogo,
13290
+ React.createElement(ToggleButton$1, { style: {
13291
+ position: 'absolute',
13292
+ right: (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconX) !== null && _a !== void 0 ? _a : 0,
13293
+ visibility: ((_c = (_b = data === null || data === void 0 ? void 0 : data[index]) === null || _b === void 0 ? void 0 : _b.video) === null || _c === void 0 ? void 0 : _c.url) ? 'visible' : 'hidden',
13294
+ bottom: (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconY) !== null && _d !== void 0 ? _d : 23,
13295
+ zIndex: 999
13296
+ }, defaultValue: true, activeIcon: (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.unMuteIcon) ? globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.unMuteIcon : mutedIcon, unactiveIcon: (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIcon) ? globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIcon : unmutedIcon }),
13297
+ renderContent(rec, index),
13298
+ renderBottom(rec, index),
13299
+ renderLikeButton(rec, index)));
13300
+ };
13301
+ return (React.createElement("div", { style: {
13302
+ width: '100%',
13303
+ height: containerHeight,
13304
+ display: 'flex',
13305
+ boxSizing: 'border-box',
13306
+ gap: 16,
13307
+ pointerEvents: 'none',
13308
+ userSelect: 'none'
13309
+ } }, data === null || data === void 0 ? void 0 : data.map((rec, index) => {
13310
+ return renderView(rec, index);
13311
+ })));
13312
+ };
13313
+ var index$1 = React.memo(DiyPortalPreview);
13314
+
12972
13315
  /*
12973
13316
  * @Author: binruan@chatlabs.com
12974
13317
  * @Date: 2023-10-31 10:56:01
@@ -13109,12 +13452,13 @@ function useEditorDataProvider() {
13109
13452
  * @FilePath: \pb-sxp-ui\src\index.ts
13110
13453
  */
13111
13454
 
13455
+ exports.DiyPortalPreview = index$1;
13112
13456
  exports.EditorDataProvider = EditorDataProvider;
13113
13457
  exports.Modal = Modal$1;
13114
13458
  exports.SxpDataSourceProvider = SxpDataSourceProvider$1;
13115
13459
  exports.SxpPageCore = index;
13116
13460
  exports.SxpPageRender = SxpPageRender;
13117
- exports.core = index$1;
13461
+ exports.core = index$2;
13118
13462
  exports.default = Pagebuilder;
13119
13463
  exports.defaultSetting = defaultSetting;
13120
13464
  exports.materials = _materials_;