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.css
CHANGED
package/dist/index.js
CHANGED
@@ -842,7 +842,7 @@ const EditorCore = forwardRef(({ children, resolver, isSsr, schema, enableDataSo
|
|
842
842
|
React.createElement(DataSourceProvider$1, { isSsr: isSsr, enable: enableDataSource }, children)));
|
843
843
|
});
|
844
844
|
|
845
|
-
var index$
|
845
|
+
var index$2 = /*#__PURE__*/Object.freeze({
|
846
846
|
__proto__: null,
|
847
847
|
EditorCore: EditorCore
|
848
848
|
});
|
@@ -8317,7 +8317,7 @@ const FormatImage = forwardRef((props, ref) => {
|
|
8317
8317
|
var FormatImage$1 = memo(FormatImage);
|
8318
8318
|
|
8319
8319
|
const CommodityDetail$1 = (_a) => {
|
8320
|
-
var _b, _c, _d, _e, _f, _g, _h, _j;
|
8320
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
8321
8321
|
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"]);
|
8322
8322
|
const { sxpParameter } = useSxpDataSource();
|
8323
8323
|
const { popupDetailData, bffEventReport, isPreview, waterFallData } = useSxpDataSource();
|
@@ -8358,7 +8358,7 @@ const CommodityDetail$1 = (_a) => {
|
|
8358
8358
|
return '$7,000';
|
8359
8359
|
}
|
8360
8360
|
}, [product === null || product === void 0 ? void 0 : product.price, product === null || product === void 0 ? void 0 : product.currency]);
|
8361
|
-
const width = isPreview ? 375 : window.innerWidth;
|
8361
|
+
const width = isPreview ? 375 : (_f = style === null || style === void 0 ? void 0 : style.width) !== null && _f !== void 0 ? _f : window.innerWidth;
|
8362
8362
|
const renderContent = ({ isPost }) => {
|
8363
8363
|
var _a, _b, _c;
|
8364
8364
|
return (React.createElement("div", null,
|
@@ -8366,10 +8366,10 @@ const CommodityDetail$1 = (_a) => {
|
|
8366
8366
|
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'),
|
8367
8367
|
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),
|
8368
8368
|
React.createElement("div", { hidden: !!product && (!(product === null || product === void 0 ? void 0 : product.info) || (product === null || product === void 0 ? void 0 : product.info) === '') },
|
8369
|
-
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
|
8370
|
-
bold and avant-garde visual design interprets the emotional bond connecting my heart. The Tiffany Lock
|
8371
|
-
collection is unisex and is inspired by the padlock pattern found in the Tiffany Antique Collection. This
|
8372
|
-
necklace features a stylish and eye-catching oval clasp chain decorated with a lock pattern. Crafted from
|
8369
|
+
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
|
8370
|
+
bold and avant-garde visual design interprets the emotional bond connecting my heart. The Tiffany Lock
|
8371
|
+
collection is unisex and is inspired by the padlock pattern found in the Tiffany Antique Collection. This
|
8372
|
+
necklace features a stylish and eye-catching oval clasp chain decorated with a lock pattern. Crafted from
|
8373
8373
|
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 }))));
|
8374
8374
|
};
|
8375
8375
|
const renderBtn = () => {
|
@@ -8378,7 +8378,7 @@ const CommodityDetail$1 = (_a) => {
|
|
8378
8378
|
};
|
8379
8379
|
return (React.createElement("div", { className: 'pb-commondity' },
|
8380
8380
|
React.createElement("div", Object.assign({ className: css(Object.assign({}, style)) }, props),
|
8381
|
-
product && ((
|
8381
|
+
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: {
|
8382
8382
|
clickable: true,
|
8383
8383
|
bulletActiveClass: 'swipe-item-active-bullet',
|
8384
8384
|
clickableClass: (swiper === null || swiper === void 0 ? void 0 : swiper.dotsAlign) === 'left'
|
@@ -8386,7 +8386,7 @@ const CommodityDetail$1 = (_a) => {
|
|
8386
8386
|
: 'commondityDetail-swiper-clickable-center'
|
8387
8387
|
}, loop: true, autoplay: {
|
8388
8388
|
delay: (swiper === null || swiper === void 0 ? void 0 : swiper.delay) * 1000
|
8389
|
-
} }, (
|
8389
|
+
} }, (_h = product === null || product === void 0 ? void 0 : product.homePage) === null || _h === void 0 ? void 0 : _h.map((src) => {
|
8390
8390
|
return (React.createElement(SwiperSlide, { key: src },
|
8391
8391
|
React.createElement("div", { style: {
|
8392
8392
|
overflow: 'hidden',
|
@@ -8395,7 +8395,7 @@ const CommodityDetail$1 = (_a) => {
|
|
8395
8395
|
} },
|
8396
8396
|
React.createElement(FormatImage$1, { style: { height: '100%', width: '100%', objectFit: 'cover', display: 'block' }, src: src }))));
|
8397
8397
|
}))),
|
8398
|
-
!((
|
8398
|
+
!((_j = product === null || product === void 0 ? void 0 : product.homePage) === null || _j === void 0 ? void 0 : _j.length) && (React.createElement("div", { className: css({
|
8399
8399
|
position: 'relative',
|
8400
8400
|
height: 0,
|
8401
8401
|
width: '100%',
|
@@ -8408,7 +8408,7 @@ const CommodityDetail$1 = (_a) => {
|
|
8408
8408
|
top: 0,
|
8409
8409
|
objectFit: 'cover',
|
8410
8410
|
width: '100%'
|
8411
|
-
}), src: (
|
8411
|
+
}), src: (_k = sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.bottom_image) !== null && _k !== void 0 ? _k : bottom_image, alt: '' }))),
|
8412
8412
|
React.createElement("div", { className: 'pb-commondity-content' }, renderContent({ isPost }))),
|
8413
8413
|
renderBtn(),
|
8414
8414
|
React.createElement(Modal$1, { visible: showModal, onClose: () => setShowModal(false) },
|
@@ -8768,7 +8768,7 @@ var settingRender$2 = [
|
|
8768
8768
|
];
|
8769
8769
|
|
8770
8770
|
const CommodityDetailDiroNew$1 = (_a) => {
|
8771
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
8771
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
8772
8772
|
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"]);
|
8773
8773
|
useState(true);
|
8774
8774
|
const { sxpParameter } = useSxpDataSource();
|
@@ -8816,16 +8816,16 @@ const CommodityDetailDiroNew$1 = (_a) => {
|
|
8816
8816
|
return '£102,300.00';
|
8817
8817
|
}
|
8818
8818
|
}, [product === null || product === void 0 ? void 0 : product.price, product === null || product === void 0 ? void 0 : product.currency]);
|
8819
|
-
const width = isPreview ? 375 : window.innerWidth;
|
8819
|
+
const width = isPreview ? 375 : (_f = style === null || style === void 0 ? void 0 : style.width) !== null && _f !== void 0 ? _f : window.innerWidth;
|
8820
8820
|
const productInfoText = ({ isPost }) => {
|
8821
8821
|
return (React.createElement("div", { hidden: !!product && (!(product === null || product === void 0 ? void 0 : product.info) || (product === null || product === void 0 ? void 0 : product.info) === '') },
|
8822
8822
|
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) ||
|
8823
|
-
`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
|
8823
|
+
`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
|
8824
8824
|
Made in Italy` })));
|
8825
8825
|
};
|
8826
8826
|
return (React.createElement("div", { className: 'pb-commondityDiroNew' },
|
8827
8827
|
React.createElement("div", Object.assign({ ref: scrollRef, className: css(Object.assign({}, style)) }, props),
|
8828
|
-
product && ((
|
8828
|
+
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: {
|
8829
8829
|
clickable: true,
|
8830
8830
|
bulletActiveClass: 'commondityDiroNew-swipe-item-active-bullet',
|
8831
8831
|
clickableClass: (swiper === null || swiper === void 0 ? void 0 : swiper.dotsAlign) === 'left'
|
@@ -8833,7 +8833,7 @@ Made in Italy` })));
|
|
8833
8833
|
: 'commondityDiroNew-swiper-clickable-center'
|
8834
8834
|
}, loop: true, autoplay: {
|
8835
8835
|
delay: (swiper === null || swiper === void 0 ? void 0 : swiper.delay) * 1000
|
8836
|
-
} }, (
|
8836
|
+
} }, (_h = product === null || product === void 0 ? void 0 : product.homePage) === null || _h === void 0 ? void 0 : _h.map((src) => {
|
8837
8837
|
return (React.createElement(SwiperSlide, { key: src },
|
8838
8838
|
React.createElement("div", { style: {
|
8839
8839
|
overflow: 'hidden',
|
@@ -8842,7 +8842,7 @@ Made in Italy` })));
|
|
8842
8842
|
} },
|
8843
8843
|
React.createElement(FormatImage$1, { style: { height: '100%', width: '100%', objectFit: 'cover', display: 'block' }, src: src }))));
|
8844
8844
|
}))),
|
8845
|
-
!((
|
8845
|
+
!((_j = product === null || product === void 0 ? void 0 : product.homePage) === null || _j === void 0 ? void 0 : _j.length) && (React.createElement("div", { className: css({
|
8846
8846
|
position: 'relative',
|
8847
8847
|
height: 0,
|
8848
8848
|
width: '100%',
|
@@ -8855,16 +8855,16 @@ Made in Italy` })));
|
|
8855
8855
|
top: 0,
|
8856
8856
|
objectFit: 'cover',
|
8857
8857
|
width: '100%'
|
8858
|
-
}), src: (
|
8858
|
+
}), src: (_k = sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.bottom_image) !== null && _k !== void 0 ? _k : bottom_image, alt: '' }))),
|
8859
8859
|
React.createElement("div", { className: 'pb-commondityDiroNew-content' },
|
8860
8860
|
React.createElement("div", { className: 'pb-commondityDiroNew-content-top' },
|
8861
8861
|
React.createElement("div", { className: 'pb-commondityDiroNew-content-top-left' },
|
8862
|
-
React.createElement("div", { className: 'pb-commondityDiroNew-content-top-left-title', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.title }, (
|
8862
|
+
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'),
|
8863
8863
|
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')),
|
8864
8864
|
React.createElement("div", { className: 'pb-commondityDiroNew-content-top-right' },
|
8865
8865
|
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),
|
8866
|
-
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 }, (
|
8867
|
-
(!product || (product === null || product === void 0 ? void 0 : product.link)) && (React.createElement("button", { onClick: handleLink, className: 'pb-commondityDiroNew-btn', style: buttonStyle }, (
|
8866
|
+
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 : '税费'))),
|
8867
|
+
(!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')),
|
8868
8868
|
productInfoText({ isPost }))),
|
8869
8869
|
React.createElement(Modal$1, { visible: showModal, onClose: () => setShowModal(false) }, productInfoText({ isPost: false }))));
|
8870
8870
|
};
|
@@ -11968,7 +11968,7 @@ var SXP_EVENT_TYPE;
|
|
11968
11968
|
SXP_EVENT_TYPE["PAGE_DID_HIDE"] = "pageDidHide";
|
11969
11969
|
})(SXP_EVENT_TYPE || (SXP_EVENT_TYPE = {}));
|
11970
11970
|
|
11971
|
-
const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostConfig }) => {
|
11971
|
+
const VideoWidget$2 = ({ rec, index, height, data, muted, activeIndex, videoPostConfig }) => {
|
11972
11972
|
const [isPauseVideo, setIsPauseVideo] = useState(false);
|
11973
11973
|
const videoRef = useRef(null);
|
11974
11974
|
const { bffEventReport, sxpParameter, waterFallData, openHashtag } = useSxpDataSource();
|
@@ -12236,7 +12236,7 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostCo
|
|
12236
12236
|
renderPoster,
|
12237
12237
|
React.createElement("img", { hidden: !isPauseVideo, className: 'clc-pb-video-pause', src: PAUSE_ICON })))));
|
12238
12238
|
};
|
12239
|
-
var VideoWidget$
|
12239
|
+
var VideoWidget$3 = memo(VideoWidget$2);
|
12240
12240
|
|
12241
12241
|
/*
|
12242
12242
|
* @Author: binruan@chatlabs.com
|
@@ -12335,7 +12335,7 @@ const Picture = (props) => {
|
|
12335
12335
|
* @LastEditTime: 2024-04-18 19:56:22
|
12336
12336
|
* @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\PictureGroup\index.tsx
|
12337
12337
|
*/
|
12338
|
-
const PictureGroup = ({ imgUrls, width, height, rec, index, onReportViewImageEnd, onViewImageStartEvent, imgUrlsPostConfig }) => {
|
12338
|
+
const PictureGroup$2 = ({ imgUrls, width, height, rec, index, onReportViewImageEnd, onViewImageStartEvent, imgUrlsPostConfig }) => {
|
12339
12339
|
var _a;
|
12340
12340
|
const ref = useRef();
|
12341
12341
|
const { isActive } = useSwiperSlide();
|
@@ -12364,7 +12364,7 @@ const PictureGroup = ({ imgUrls, width, height, rec, index, onReportViewImageEnd
|
|
12364
12364
|
React.createElement(Picture, { src: url, height: height, imgUrlsPostConfig: imgUrlsPostConfig })));
|
12365
12365
|
})));
|
12366
12366
|
};
|
12367
|
-
var PictureGroup$
|
12367
|
+
var PictureGroup$3 = memo(PictureGroup$2);
|
12368
12368
|
|
12369
12369
|
/*
|
12370
12370
|
* @Author: binruan@chatlabs.com
|
@@ -12704,10 +12704,10 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
|
|
12704
12704
|
const renderContent = useCallback((rec, index) => {
|
12705
12705
|
var _a, _b, _c, _d;
|
12706
12706
|
if ((_a = rec.video) === null || _a === void 0 ? void 0 : _a.url) {
|
12707
|
-
return (React.createElement(VideoWidget$
|
12707
|
+
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 }));
|
12708
12708
|
}
|
12709
12709
|
if ((_b = rec.video) === null || _b === void 0 ? void 0 : _b.imgUrls) {
|
12710
|
-
return (React.createElement(PictureGroup$
|
12710
|
+
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 }));
|
12711
12711
|
}
|
12712
12712
|
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) {
|
12713
12713
|
return (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) === null || _d === void 0 ? void 0 : _d.map((value, idx) => {
|
@@ -12946,6 +12946,349 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
|
|
12946
12946
|
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))));
|
12947
12947
|
};
|
12948
12948
|
|
12949
|
+
const PictureGroup = ({ imgUrls, width, height, imgUrlsPostConfig, rec, index }) => {
|
12950
|
+
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) => {
|
12951
|
+
return (React.createElement(SwiperSlide, { key: url },
|
12952
|
+
React.createElement(Picture, { src: url, height: height, imgUrlsPostConfig: imgUrlsPostConfig })));
|
12953
|
+
})));
|
12954
|
+
};
|
12955
|
+
var PictureGroup$1 = memo(PictureGroup);
|
12956
|
+
|
12957
|
+
const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostConfig, width }) => {
|
12958
|
+
const [isPauseVideo, setIsPauseVideo] = useState(false);
|
12959
|
+
const videoRef = useRef(null);
|
12960
|
+
const { bffEventReport, sxpParameter, waterFallData, openHashtag } = useSxpDataSource();
|
12961
|
+
const videoStartTime = useRef(0);
|
12962
|
+
const [isLoadFinish, setIsLoadFinish] = useState(false);
|
12963
|
+
const [isFirstPlay, setIsFirstPlay] = useState(true);
|
12964
|
+
const canvasRef = useRef(null);
|
12965
|
+
const [firstFrameSrc, setFirstFrameSrc] = useState('');
|
12966
|
+
useEffect(() => {
|
12967
|
+
if (!videoRef.current)
|
12968
|
+
return;
|
12969
|
+
videoRef.current.muted = muted;
|
12970
|
+
}, [muted]);
|
12971
|
+
const handleVideoStart = useCallback(() => {
|
12972
|
+
var _a;
|
12973
|
+
(_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.play();
|
12974
|
+
}, []);
|
12975
|
+
const PAUSE_ICON = useIconLink('/pb_static/06f28a2025c74c1cb49be6767316d827.png');
|
12976
|
+
const handlePlaying = useCallback(() => {
|
12977
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
12978
|
+
setIsPauseVideo(false);
|
12979
|
+
const item = data[index];
|
12980
|
+
if (item && ((_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.duration)) {
|
12981
|
+
videoStartTime.current = ((_b = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _b === void 0 ? void 0 : _b.currentTime) || 0;
|
12982
|
+
const videoDuration = ((_d = (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.duration) !== null && _d !== void 0 ? _d : 0).toFixed(2);
|
12983
|
+
const videoCurrentTime = ((_f = (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.currentTime) !== null && _f !== void 0 ? _f : 0).toFixed(2);
|
12984
|
+
const playType = isFirstPlay ? '0' : '1';
|
12985
|
+
bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
|
12986
|
+
eventInfo: {
|
12987
|
+
eventSubject: 'playVideo',
|
12988
|
+
eventDescription: 'User played the video',
|
12989
|
+
contentId: (_h = (_g = item.video) === null || _g === void 0 ? void 0 : _g.itemId) !== null && _h !== void 0 ? _h : '',
|
12990
|
+
contentName: (_k = (_j = item.video) === null || _j === void 0 ? void 0 : _j.title) !== null && _k !== void 0 ? _k : '',
|
12991
|
+
playType,
|
12992
|
+
startTime: videoCurrentTime,
|
12993
|
+
videoDuration,
|
12994
|
+
contentTags: JSON.stringify((_m = (_l = item.video) === null || _l === void 0 ? void 0 : _l.tags) !== null && _m !== void 0 ? _m : []),
|
12995
|
+
position: index + '',
|
12996
|
+
contentFormat: 'video',
|
12997
|
+
traceInfo: (_o = item.video) === null || _o === void 0 ? void 0 : _o.traceInfo
|
12998
|
+
}
|
12999
|
+
});
|
13000
|
+
setIsFirstPlay(false);
|
13001
|
+
}
|
13002
|
+
}, [bffEventReport, data, index, isFirstPlay]);
|
13003
|
+
const handleLoadedMetadata = useCallback(() => {
|
13004
|
+
setIsLoadFinish(true);
|
13005
|
+
}, []);
|
13006
|
+
const handleClickVideo = useCallback((type) => () => {
|
13007
|
+
var _a, _b, _c, _d, _e;
|
13008
|
+
if (!isLoadFinish)
|
13009
|
+
return;
|
13010
|
+
const isPause = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.paused;
|
13011
|
+
switch (type) {
|
13012
|
+
case 'start':
|
13013
|
+
if (!isPause)
|
13014
|
+
return;
|
13015
|
+
(_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.play();
|
13016
|
+
setIsPauseVideo(false);
|
13017
|
+
break;
|
13018
|
+
case 'pause':
|
13019
|
+
if (isPause)
|
13020
|
+
return;
|
13021
|
+
(_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.pause();
|
13022
|
+
setIsPauseVideo(true);
|
13023
|
+
break;
|
13024
|
+
default:
|
13025
|
+
if (isPause) {
|
13026
|
+
(_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.play();
|
13027
|
+
}
|
13028
|
+
else {
|
13029
|
+
(_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.pause();
|
13030
|
+
}
|
13031
|
+
setIsPauseVideo(!isPause);
|
13032
|
+
break;
|
13033
|
+
}
|
13034
|
+
}, [isLoadFinish]);
|
13035
|
+
const onPause = useCallback(() => {
|
13036
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
13037
|
+
const item = data[index];
|
13038
|
+
const videoDuration = ((_b = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.duration) !== null && _b !== void 0 ? _b : 0).toFixed(2);
|
13039
|
+
const videoCurrentTime = ((_d = (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.currentTime) !== null && _d !== void 0 ? _d : 0).toFixed(2);
|
13040
|
+
if ((_e = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _e === void 0 ? void 0 : _e.duration) {
|
13041
|
+
const playDuration = (((_f = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _f === void 0 ? void 0 : _f.currentTime) - videoStartTime.current).toFixed(2);
|
13042
|
+
bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
|
13043
|
+
eventInfo: {
|
13044
|
+
eventSubject: 'playOverVideo',
|
13045
|
+
eventDescription: 'User finished playing the video',
|
13046
|
+
contentId: (_h = (_g = item.video) === null || _g === void 0 ? void 0 : _g.itemId) !== null && _h !== void 0 ? _h : '',
|
13047
|
+
contentName: (_k = (_j = item.video) === null || _j === void 0 ? void 0 : _j.title) !== null && _k !== void 0 ? _k : '',
|
13048
|
+
endTime: videoCurrentTime,
|
13049
|
+
videoDuration,
|
13050
|
+
playDuration,
|
13051
|
+
contentTags: JSON.stringify((_m = (_l = item.video) === null || _l === void 0 ? void 0 : _l.tags) !== null && _m !== void 0 ? _m : []),
|
13052
|
+
position: index + '',
|
13053
|
+
contentFormat: 'video',
|
13054
|
+
traceInfo: (_o = item.video) === null || _o === void 0 ? void 0 : _o.traceInfo
|
13055
|
+
}
|
13056
|
+
});
|
13057
|
+
}
|
13058
|
+
}, [data, index, bffEventReport]);
|
13059
|
+
const blur = useMemo(() => {
|
13060
|
+
return (videoPostConfig === null || videoPostConfig === void 0 ? void 0 : videoPostConfig.mode) === '2';
|
13061
|
+
}, [videoPostConfig]);
|
13062
|
+
const translateY = useMemo(() => {
|
13063
|
+
var _a;
|
13064
|
+
return (videoPostConfig === null || videoPostConfig === void 0 ? void 0 : videoPostConfig.mode) === '2'
|
13065
|
+
? `translateY(-${50 + ((_a = videoPostConfig === null || videoPostConfig === void 0 ? void 0 : videoPostConfig.offsetTop) !== null && _a !== void 0 ? _a : 0)}%) translate3d(0px, 0px, 0px)`
|
13066
|
+
: 'translateY(-50%)';
|
13067
|
+
}, [videoPostConfig]);
|
13068
|
+
const blurBgSrc = useMemo(() => {
|
13069
|
+
var _a;
|
13070
|
+
return ((_a = rec === null || rec === void 0 ? void 0 : rec.video) === null || _a === void 0 ? void 0 : _a.cover) || firstFrameSrc;
|
13071
|
+
}, [firstFrameSrc, rec]);
|
13072
|
+
const handLoadeddata = useCallback(() => {
|
13073
|
+
if (!canvasRef || !videoRef || !videoRef.current || !canvasRef.current)
|
13074
|
+
return;
|
13075
|
+
const video = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current;
|
13076
|
+
const canvas = canvasRef === null || canvasRef === void 0 ? void 0 : canvasRef.current;
|
13077
|
+
const ctx = canvas.getContext('2d');
|
13078
|
+
const targetWidth = window === null || window === void 0 ? void 0 : window.innerWidth;
|
13079
|
+
const targetHeight = window === null || window === void 0 ? void 0 : window.innerHeight;
|
13080
|
+
canvas.height = targetHeight;
|
13081
|
+
canvas.width = targetWidth;
|
13082
|
+
ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
|
13083
|
+
setFirstFrameSrc(canvas.toDataURL());
|
13084
|
+
}, []);
|
13085
|
+
useEffect(() => {
|
13086
|
+
var _a, _b, _c, _d;
|
13087
|
+
if (!videoRef.current)
|
13088
|
+
return;
|
13089
|
+
setIsPauseVideo(false);
|
13090
|
+
if (!videoRef.current.src) {
|
13091
|
+
const videoSrc = rec.video.url;
|
13092
|
+
if (videoSrc.includes('.m3u8')) {
|
13093
|
+
if (Hls.isSupported()) {
|
13094
|
+
const hls = new Hls();
|
13095
|
+
hls.loadSource(videoSrc);
|
13096
|
+
hls.attachMedia(videoRef.current);
|
13097
|
+
}
|
13098
|
+
else if (videoRef.current.canPlayType('application/vnd.apple.mpegurl')) {
|
13099
|
+
videoRef.current.src = videoSrc;
|
13100
|
+
}
|
13101
|
+
else {
|
13102
|
+
videoRef.current.src = videoSrc;
|
13103
|
+
}
|
13104
|
+
}
|
13105
|
+
else {
|
13106
|
+
videoRef.current.src = videoSrc;
|
13107
|
+
}
|
13108
|
+
videoRef.current.setAttribute('x5-playsinline', 'true');
|
13109
|
+
videoRef.current.setAttribute('webkit-playsinline', 'true');
|
13110
|
+
}
|
13111
|
+
(_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('loadedmetadata', handleLoadedMetadata);
|
13112
|
+
(_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('canplay', handleLoadedMetadata);
|
13113
|
+
(_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.addEventListener('playing', handlePlaying);
|
13114
|
+
(_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.addEventListener('loadeddata', handLoadeddata);
|
13115
|
+
return () => {
|
13116
|
+
var _a, _b, _c, _d;
|
13117
|
+
(_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('loadedmetadata', handleLoadedMetadata);
|
13118
|
+
(_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.removeEventListener('canplay', handleLoadedMetadata);
|
13119
|
+
(_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.removeEventListener('playing', handlePlaying);
|
13120
|
+
(_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.removeEventListener('loadeddata', handLoadeddata);
|
13121
|
+
};
|
13122
|
+
}, [handleLoadedMetadata, handlePlaying, rec.video, handLoadeddata]);
|
13123
|
+
const renderPoster = useMemo(() => {
|
13124
|
+
if (!(sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image) || isLoadFinish) {
|
13125
|
+
return null;
|
13126
|
+
}
|
13127
|
+
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 }));
|
13128
|
+
}, [isLoadFinish, sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image]);
|
13129
|
+
useEffect(() => {
|
13130
|
+
const handleBeforeUnload = () => {
|
13131
|
+
var _a, _b;
|
13132
|
+
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) {
|
13133
|
+
handleClickVideo('pause')();
|
13134
|
+
}
|
13135
|
+
};
|
13136
|
+
window.addEventListener('beforeunload', handleBeforeUnload);
|
13137
|
+
return () => {
|
13138
|
+
window.removeEventListener('beforeunload', handleBeforeUnload);
|
13139
|
+
};
|
13140
|
+
}, [activeIndex, index, rec, videoRef, handleClickVideo, isPauseVideo]);
|
13141
|
+
const blurStyle = useMemo(() => {
|
13142
|
+
return blur
|
13143
|
+
? {
|
13144
|
+
filter: 'blur(10px)',
|
13145
|
+
transform: 'translate3d(0px, 0px, 0px) scale(1.2)'
|
13146
|
+
}
|
13147
|
+
: {};
|
13148
|
+
}, [blur]);
|
13149
|
+
if (!rec.video) {
|
13150
|
+
return null;
|
13151
|
+
}
|
13152
|
+
return (React.createElement(React.Fragment, null, blur ? (React.createElement("div", { className: 'video-container', key: rec.video.itemId, onClick: handleClickVideo(), style: {
|
13153
|
+
position: 'relative',
|
13154
|
+
width,
|
13155
|
+
height,
|
13156
|
+
overflow: 'hidden'
|
13157
|
+
} },
|
13158
|
+
React.createElement(FormatImage$1, { src: blurBgSrc, style: Object.assign({ height,
|
13159
|
+
width, objectFit: 'cover' }, blurStyle) }),
|
13160
|
+
React.createElement("canvas", { ref: canvasRef, style: { display: 'none' } }),
|
13161
|
+
React.createElement("div", { style: {
|
13162
|
+
position: 'absolute',
|
13163
|
+
width,
|
13164
|
+
height,
|
13165
|
+
top: '50%',
|
13166
|
+
transform: translateY,
|
13167
|
+
left: 0,
|
13168
|
+
right: 0
|
13169
|
+
} },
|
13170
|
+
React.createElement("div", { style: { position: 'relative', width, height: '100%' } },
|
13171
|
+
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: {
|
13172
|
+
width: '100%',
|
13173
|
+
height,
|
13174
|
+
objectFit: 'contain'
|
13175
|
+
} }),
|
13176
|
+
React.createElement("img", { hidden: !isPauseVideo, className: 'clc-pb-video-pause', src: PAUSE_ICON }))),
|
13177
|
+
renderPoster)) : (React.createElement("div", { className: 'video-container', key: rec.video.itemId, onClick: handleClickVideo(), style: {
|
13178
|
+
position: 'relative',
|
13179
|
+
width,
|
13180
|
+
height,
|
13181
|
+
overflow: 'hidden'
|
13182
|
+
} },
|
13183
|
+
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 }),
|
13184
|
+
renderPoster,
|
13185
|
+
React.createElement("img", { hidden: !isPauseVideo, className: 'clc-pb-video-pause', src: PAUSE_ICON })))));
|
13186
|
+
};
|
13187
|
+
var VideoWidget$1 = memo(VideoWidget);
|
13188
|
+
|
13189
|
+
const RESOLVER$1 = {};
|
13190
|
+
Object.values(_materials_).forEach((v) => {
|
13191
|
+
RESOLVER$1[v.extend.type] = v;
|
13192
|
+
});
|
13193
|
+
const DiyPortalPreview = ({ data, globalConfig, tipText, nudge, tempMap, descStyle, hashTagStyle }) => {
|
13194
|
+
const containerWidth = 375;
|
13195
|
+
const containerHeight = 664;
|
13196
|
+
const height = useMemo(() => {
|
13197
|
+
return (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.logoUrl) && (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowLogo) ? containerHeight - 45 : containerHeight;
|
13198
|
+
}, [globalConfig, containerHeight]);
|
13199
|
+
const renderContent = (rec, index) => {
|
13200
|
+
var _a, _b, _c, _d;
|
13201
|
+
if ((_a = rec.video) === null || _a === void 0 ? void 0 : _a.url) {
|
13202
|
+
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 }));
|
13203
|
+
}
|
13204
|
+
if ((_b = rec.video) === null || _b === void 0 ? void 0 : _b.imgUrls) {
|
13205
|
+
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 }));
|
13206
|
+
}
|
13207
|
+
if (rec.product) {
|
13208
|
+
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) {
|
13209
|
+
return (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) === null || _d === void 0 ? void 0 : _d.map((value, idx) => {
|
13210
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
13211
|
+
const t = RESOLVER$1[(_a = value === null || value === void 0 ? void 0 : value.item) === null || _a === void 0 ? void 0 : _a.type];
|
13212
|
+
const Component = withBindDataSource(t);
|
13213
|
+
const defaulSetting = (_b = t === null || t === void 0 ? void 0 : t.extend) === null || _b === void 0 ? void 0 : _b.defaulSetting;
|
13214
|
+
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) || {},
|
13215
|
+
// schema={schema}
|
13216
|
+
id: value === null || value === void 0 ? void 0 : value.id,
|
13217
|
+
// viewTime={viewTime.current}
|
13218
|
+
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 })));
|
13219
|
+
});
|
13220
|
+
}
|
13221
|
+
}
|
13222
|
+
};
|
13223
|
+
const renderLogo = useMemo(() => {
|
13224
|
+
if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.logoUrl) && (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowLogo)) {
|
13225
|
+
return (React.createElement("div", { className: 'clc-sxp-logo-banner', style: { backgroundColor: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.color } },
|
13226
|
+
React.createElement("img", { src: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.logoUrl, alt: 'logo' })));
|
13227
|
+
}
|
13228
|
+
return null;
|
13229
|
+
}, [globalConfig]);
|
13230
|
+
const renderBottom = (rec, index) => {
|
13231
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
13232
|
+
if (rec.video) {
|
13233
|
+
return (React.createElement(React.Fragment, null,
|
13234
|
+
((_a = rec.video) === null || _a === void 0 ? void 0 : _a.title) && React.createElement("div", { className: 'clc-sxp-bottom-shadow' }),
|
13235
|
+
React.createElement("div", { className: 'clc-sxp-bottom' },
|
13236
|
+
React.createElement(Nudge, { nudge: nudge }),
|
13237
|
+
React.createElement("div", { className: 'clc-sxp-bottom-card' },
|
13238
|
+
React.createElement(RenderCard$1, { rec: rec, index: index, tempMap: tempMap, resolver: RESOLVER$1 })),
|
13239
|
+
React.createElement("div", null,
|
13240
|
+
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' }) })),
|
13241
|
+
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 }))));
|
13242
|
+
}
|
13243
|
+
return null;
|
13244
|
+
};
|
13245
|
+
const renderLikeButton = (rec, index) => {
|
13246
|
+
var _a, _b;
|
13247
|
+
if (!(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowLike))
|
13248
|
+
return;
|
13249
|
+
let top = (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconY) !== null && _a !== void 0 ? _a : 400;
|
13250
|
+
if (top < 40) {
|
13251
|
+
top += 40;
|
13252
|
+
}
|
13253
|
+
if (rec.video) {
|
13254
|
+
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: {
|
13255
|
+
top,
|
13256
|
+
right: (_b = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconX) !== null && _b !== void 0 ? _b : 0
|
13257
|
+
} }));
|
13258
|
+
}
|
13259
|
+
return null;
|
13260
|
+
};
|
13261
|
+
const mutedIcon = useIconLink('/pb_static/5beaaa5ce7f3477b99db3838619cc471.png');
|
13262
|
+
const unmutedIcon = useIconLink('/pb_static/fea8668a8a894e4aa3a86bcc775e895e.png');
|
13263
|
+
const renderView = (rec, index) => {
|
13264
|
+
var _a, _b, _c, _d;
|
13265
|
+
return (React.createElement("div", { style: { position: 'relative' } },
|
13266
|
+
renderLogo,
|
13267
|
+
React.createElement(ToggleButton$1, { style: {
|
13268
|
+
position: 'absolute',
|
13269
|
+
right: (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconX) !== null && _a !== void 0 ? _a : 0,
|
13270
|
+
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',
|
13271
|
+
bottom: (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconY) !== null && _d !== void 0 ? _d : 23,
|
13272
|
+
zIndex: 999
|
13273
|
+
}, 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 }),
|
13274
|
+
renderContent(rec, index),
|
13275
|
+
renderBottom(rec, index),
|
13276
|
+
renderLikeButton(rec, index)));
|
13277
|
+
};
|
13278
|
+
return (React.createElement("div", { style: {
|
13279
|
+
width: '100%',
|
13280
|
+
height: containerHeight,
|
13281
|
+
display: 'flex',
|
13282
|
+
boxSizing: 'border-box',
|
13283
|
+
gap: 16,
|
13284
|
+
pointerEvents: 'none',
|
13285
|
+
userSelect: 'none'
|
13286
|
+
} }, data === null || data === void 0 ? void 0 : data.map((rec, index) => {
|
13287
|
+
return renderView(rec, index);
|
13288
|
+
})));
|
13289
|
+
};
|
13290
|
+
var index$1 = memo(DiyPortalPreview);
|
13291
|
+
|
12949
13292
|
/*
|
12950
13293
|
* @Author: binruan@chatlabs.com
|
12951
13294
|
* @Date: 2023-10-31 10:56:01
|
@@ -13086,5 +13429,5 @@ function useEditorDataProvider() {
|
|
13086
13429
|
* @FilePath: \pb-sxp-ui\src\index.ts
|
13087
13430
|
*/
|
13088
13431
|
|
13089
|
-
export { EditorDataProvider, Modal$1 as Modal, SxpDataSourceProvider$1 as SxpDataSourceProvider, index as SxpPageCore, SxpPageRender, index$
|
13432
|
+
export { index$1 as DiyPortalPreview, EditorDataProvider, Modal$1 as Modal, SxpDataSourceProvider$1 as SxpDataSourceProvider, index as SxpPageCore, SxpPageRender, index$2 as core, Pagebuilder as default, defaultSetting, _materials_ as materials, useEditorDataProvider };
|
13090
13433
|
//# sourceMappingURL=index.js.map
|