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.
- package/LICENSE +21 -21
- package/README.md +111 -111
- package/dist/index.cjs +372 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +0 -1
- package/dist/index.js +371 -28
- package/dist/index.js.map +1 -1
- package/dist/index.min.cjs +3 -3
- package/dist/index.min.cjs.map +1 -1
- package/dist/index.min.js +3 -3
- package/dist/index.min.js.map +1 -1
- package/dist/pb-ui.js +372 -28
- package/dist/pb-ui.js.map +1 -1
- package/dist/pb-ui.min.js +3 -3
- package/dist/pb-ui.min.js.map +1 -1
- package/es/core/components/DiyPortalPreview/PictureGroup.d.ts +13 -0
- package/es/core/components/DiyPortalPreview/PictureGroup.js +11 -0
- package/es/core/components/DiyPortalPreview/VideoWidget.d.ts +15 -0
- package/es/core/components/DiyPortalPreview/VideoWidget.js +236 -0
- package/es/core/components/DiyPortalPreview/index.d.ts +4 -0
- package/es/core/components/DiyPortalPreview/index.js +110 -0
- package/es/index.d.ts +1 -0
- package/es/index.js +1 -0
- package/es/materials/sxp/popup/CommodityDetail/index.js +10 -10
- package/es/materials/sxp/popup/CommodityDetailDiroNew/index.js +10 -10
- package/lib/core/components/DiyPortalPreview/PictureGroup.d.ts +13 -0
- package/lib/core/components/DiyPortalPreview/PictureGroup.js +14 -0
- package/lib/core/components/DiyPortalPreview/VideoWidget.d.ts +15 -0
- package/lib/core/components/DiyPortalPreview/VideoWidget.js +239 -0
- package/lib/core/components/DiyPortalPreview/index.d.ts +4 -0
- package/lib/core/components/DiyPortalPreview/index.js +113 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/lib/materials/sxp/popup/CommodityDetail/index.js +10 -10
- package/lib/materials/sxp/popup/CommodityDetailDiroNew/index.js +10 -10
- 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$
|
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 && ((
|
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
|
-
} }, (
|
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
|
-
!((
|
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: (
|
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 && ((
|
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
|
-
} }, (
|
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
|
-
!((
|
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: (
|
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 }, (
|
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 }, (
|
8890
|
-
(!product || (product === null || product === void 0 ? void 0 : product.link)) && (React.createElement("button", { onClick: handleLink, className: 'pb-commondityDiroNew-btn', style: buttonStyle }, (
|
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$
|
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$
|
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$
|
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$
|
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$
|
13461
|
+
exports.core = index$2;
|
13118
13462
|
exports.default = Pagebuilder;
|
13119
13463
|
exports.defaultSetting = defaultSetting;
|
13120
13464
|
exports.materials = _materials_;
|