pb-sxp-ui 1.15.13-alpha.1 → 1.15.13-alpha.3
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/dist/index.cjs +356 -48
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +354 -46
- package/dist/index.js.map +1 -1
- package/dist/index.min.cjs +6 -6
- package/dist/index.min.cjs.map +1 -1
- package/dist/index.min.js +6 -6
- package/dist/index.min.js.map +1 -1
- package/dist/pb-ui.js +356 -48
- package/dist/pb-ui.js.map +1 -1
- package/dist/pb-ui.min.js +6 -6
- package/dist/pb-ui.min.js.map +1 -1
- package/es/core/components/DiyStoryPreview/VideoWidget.js +5 -2
- package/es/core/components/DiyStoryPreview/index.d.ts +3 -0
- package/es/core/components/DiyStoryPreview/index.js +288 -22
- package/es/core/components/SxpPageCore/index.d.ts +1 -0
- package/es/core/components/SxpPageCore/index.js +3 -3
- package/es/core/components/SxpPageRender/ExpandableText.js +10 -2
- package/es/core/components/SxpPageRender/RenderCard.js +4 -4
- package/es/core/context/SxpDataSourceProvider.js +3 -3
- package/es/materials/sxp/template/MultiCommodity/index.js +1 -1
- package/es/materials/sxp/template/MultiCommodityDiro/index.js +2 -1
- package/es/materials/sxp/template/MultiCommodityDiroNew/index.js +2 -1
- package/es/materials/sxp/template/components/EventProvider.js +2 -2
- package/lib/core/components/DiyStoryPreview/VideoWidget.js +5 -2
- package/lib/core/components/DiyStoryPreview/index.d.ts +3 -0
- package/lib/core/components/DiyStoryPreview/index.js +287 -21
- package/lib/core/components/SxpPageCore/index.d.ts +1 -0
- package/lib/core/components/SxpPageCore/index.js +3 -3
- package/lib/core/components/SxpPageRender/ExpandableText.js +10 -2
- package/lib/core/components/SxpPageRender/RenderCard.js +4 -4
- package/lib/core/context/SxpDataSourceProvider.js +3 -3
- package/lib/materials/sxp/template/MultiCommodity/index.js +1 -1
- package/lib/materials/sxp/template/MultiCommodityDiro/index.js +2 -1
- package/lib/materials/sxp/template/MultiCommodityDiroNew/index.js +2 -1
- package/lib/materials/sxp/template/components/EventProvider.js +2 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
@@ -786,9 +786,8 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
|
|
786
786
|
}
|
787
787
|
else if (utmVal) {
|
788
788
|
const val = (_k = (_j = (_h = splitUrlParams(utmVal)) === null || _h === void 0 ? void 0 : _h.filter((val) => {
|
789
|
-
var _a, _b;
|
790
789
|
const key = val.split('=')[0];
|
791
|
-
return
|
790
|
+
return key;
|
792
791
|
})) === null || _j === void 0 ? void 0 : _j.join('&')) !== null && _k !== void 0 ? _k : '';
|
793
792
|
if (val)
|
794
793
|
query = Object.assign(Object.assign({}, query), { channel: decodeURIComponent(val) });
|
@@ -829,7 +828,7 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
|
|
829
828
|
if (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enablePreview) {
|
830
829
|
query = Object.assign(Object.assign({}, query), { directPage: true, level: 1, pageNum: (_o = query === null || query === void 0 ? void 0 : query.pageNum) !== null && _o !== void 0 ? _o : 1 });
|
831
830
|
}
|
832
|
-
const result = yield (bffFetch === null || bffFetch === void 0 ? void 0 : bffFetch('
|
831
|
+
const result = yield (bffFetch === null || bffFetch === void 0 ? void 0 : bffFetch('v3/recommend/direct', { method: 'POST', body: query }));
|
833
832
|
if (!(result === null || result === void 0 ? void 0 : result.success)) {
|
834
833
|
return undefined;
|
835
834
|
}
|
@@ -1106,6 +1105,7 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
|
|
1106
1105
|
if (!isShowConsent)
|
1107
1106
|
h5EnterLink();
|
1108
1107
|
}, [isShowConsent]);
|
1108
|
+
console.log(data, '111');
|
1109
1109
|
React.useEffect(() => {
|
1110
1110
|
if (isShowConsent || isPreview)
|
1111
1111
|
return;
|
@@ -10106,7 +10106,15 @@ const ExpandableText = ({ text, maxStr = 108, style, className, onClick, foldTex
|
|
10106
10106
|
wordBreak: 'break-word'
|
10107
10107
|
}, dangerouslySetInnerHTML: { __html: setFontForText(text === null || text === void 0 ? void 0 : text.replace(/\n/g, '</br>'), style) } }),
|
10108
10108
|
React.createElement("div", { ref: multiRowCopy, dangerouslySetInnerHTML: { __html: setFontForText(text === null || text === void 0 ? void 0 : text.replace(/\n/g, '</br>'), style) } }),
|
10109
|
-
text && isPost && isShow && (React.createElement("button", { "aria-label": isShowMore ? unfoldText || 'show less' : foldText || 'show more', style: {
|
10109
|
+
text && isPost && isShow && (React.createElement("button", { "aria-label": isShowMore ? unfoldText || 'show less' : foldText || 'show more', style: {
|
10110
|
+
textDecoration: 'underline',
|
10111
|
+
cursor: 'pointer',
|
10112
|
+
outline: 'none',
|
10113
|
+
border: 'none',
|
10114
|
+
boxSizing: 'content-box',
|
10115
|
+
padding: 0,
|
10116
|
+
background: 'transparent'
|
10117
|
+
}, onClick: onClick !== null && onClick !== void 0 ? onClick : handleClick, dangerouslySetInnerHTML: {
|
10110
10118
|
__html: setFontForText(isShowMore ? unfoldText || 'show less' : foldText || 'show more', style)
|
10111
10119
|
} }))));
|
10112
10120
|
};
|
@@ -12464,7 +12472,7 @@ const EventProvider = (_a) => {
|
|
12464
12472
|
const handleClick = lodash.throttle((e) => {
|
12465
12473
|
var _a, _b, _c, _d, _e, _f;
|
12466
12474
|
e.preventDefault();
|
12467
|
-
const item = multItem
|
12475
|
+
const item = multItem || ((_b = (_a = rec === null || rec === void 0 ? void 0 : rec.video) === null || _a === void 0 ? void 0 : _a.bindProduct) !== null && _b !== void 0 ? _b : rec === null || rec === void 0 ? void 0 : rec.video);
|
12468
12476
|
ctaEvent === null || ctaEvent === void 0 ? void 0 : ctaEvent({
|
12469
12477
|
eventSubject: 'clickCta',
|
12470
12478
|
eventDescription: 'User clicked the CTA'
|
@@ -12491,7 +12499,7 @@ const EventProvider = (_a) => {
|
|
12491
12499
|
setElement(null);
|
12492
12500
|
}
|
12493
12501
|
}, [element, popup]);
|
12494
|
-
return (React.createElement("button", { ref: ref, className: className, style: Object.assign({ display: 'flex', alignItems: 'normal' }, style), onClick: handleClick, role: 'button', "aria-label": 'CTA', tabIndex: 0 }, children));
|
12502
|
+
return (React.createElement("button", { ref: ref, className: className, style: Object.assign({ outline: 'none', border: 'none', boxSizing: 'content-box', padding: 0, background: 'transparent', display: 'flex', alignItems: 'normal' }, style), onClick: handleClick, role: 'button', "aria-label": 'CTA', tabIndex: 0 }, children));
|
12495
12503
|
};
|
12496
12504
|
var EventProvider$1 = React.memo(EventProvider);
|
12497
12505
|
|
@@ -13087,6 +13095,7 @@ const MultiCommodityDiro$1 = (_a) => {
|
|
13087
13095
|
var { content, style, bgImg, recData, bottom_image, ctaTempStyles, translateY = 0, isActive, index } = _a, props = __rest(_a, ["content", "style", "bgImg", "recData", "bottom_image", "ctaTempStyles", "translateY", "isActive", "index"]);
|
13088
13096
|
const { sxpParameter } = useSxpDataSource();
|
13089
13097
|
const [products] = React.useState((_c = (_b = recData === null || recData === void 0 ? void 0 : recData.video) === null || _b === void 0 ? void 0 : _b.bindProducts) !== null && _c !== void 0 ? _c : [1, 2]);
|
13098
|
+
console.log(recData, '222');
|
13090
13099
|
return (React.createElement(Scroll$1, { isPadding: !!recData }, products === null || products === void 0 ? void 0 : products.map((item, itemIndex) => {
|
13091
13100
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
13092
13101
|
return (React.createElement(React.Fragment, null, recData && !(item === null || item === void 0 ? void 0 : item.bindCta) ? null : (React.createElement(SwiperSlide, { key: itemIndex, className: css.css(Object.assign(Object.assign({}, style), { flexShrink: 0, marginLeft: 0, marginRight: '8px' })), tag: 'li', role: 'listitem' },
|
@@ -13293,6 +13302,7 @@ const MultiCommodityDiroNew$1 = (_a) => {
|
|
13293
13302
|
var { content, style, bgImg, recData, bottom_image, ctaTempStyles, translateY = 0, isActive, index } = _a, props = __rest(_a, ["content", "style", "bgImg", "recData", "bottom_image", "ctaTempStyles", "translateY", "isActive", "index"]);
|
13294
13303
|
const { sxpParameter } = useSxpDataSource();
|
13295
13304
|
const [products] = React.useState((_c = (_b = recData === null || recData === void 0 ? void 0 : recData.video) === null || _b === void 0 ? void 0 : _b.bindProducts) !== null && _c !== void 0 ? _c : [1, 2]);
|
13305
|
+
console.log(recData, '333');
|
13296
13306
|
return (React.createElement(Scroll$1, { isPadding: !!recData }, products === null || products === void 0 ? void 0 : products.map((item, itemIndex) => {
|
13297
13307
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
13298
13308
|
return (React.createElement(React.Fragment, null, recData && !(item === null || item === void 0 ? void 0 : item.bindCta) ? null : (React.createElement(SwiperSlide, { key: itemIndex, className: css.css(Object.assign(Object.assign({}, style), { flexShrink: 0, marginLeft: 0, marginRight: '8px' })), tag: 'li', role: 'listitem' },
|
@@ -18311,7 +18321,7 @@ function withBindDataSource(Component) {
|
|
18311
18321
|
* @Author: binruan@chatlabs.com
|
18312
18322
|
* @Date: 2023-12-26 16:11:34
|
18313
18323
|
* @LastEditors: binruan@chatlabs.com
|
18314
|
-
* @LastEditTime:
|
18324
|
+
* @LastEditTime: 2025-03-26 19:32:00
|
18315
18325
|
* @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\RenderCard.tsx
|
18316
18326
|
*
|
18317
18327
|
*/
|
@@ -18321,10 +18331,10 @@ const RenderCard = ({ rec, index, tempMap, resolver, includesCtaType, isActive,
|
|
18321
18331
|
return null;
|
18322
18332
|
const renderComp = React.useMemo(() => {
|
18323
18333
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3;
|
18324
|
-
|
18334
|
+
// 如果includesCtaType有值,则只渲染includesCtaType包含的cta类型组件,用于在页面某处只显示某一组件
|
18325
18335
|
if (includesCtaType && !(includesCtaType === null || includesCtaType === void 0 ? void 0 : includesCtaType.includes((_a = value === null || value === void 0 ? void 0 : value.item) === null || _a === void 0 ? void 0 : _a.type)))
|
18326
18336
|
return;
|
18327
|
-
|
18337
|
+
// 默认不渲染category为cta类型的组件,该类型的组件只用于某一处
|
18328
18338
|
if (!includesCtaType && ((_b = value === null || value === void 0 ? void 0 : value.item) === null || _b === void 0 ? void 0 : _b.category) === 'cta')
|
18329
18339
|
return;
|
18330
18340
|
if ((((_c = value === null || value === void 0 ? void 0 : value.item) === null || _c === void 0 ? void 0 : _c.type) === 'CommodityDiro' && !((_d = rec === null || rec === void 0 ? void 0 : rec.video) === null || _d === void 0 ? void 0 : _d.bindProduct)) ||
|
@@ -18341,10 +18351,10 @@ const RenderCard = ({ rec, index, tempMap, resolver, includesCtaType, isActive,
|
|
18341
18351
|
const Component = withBindDataSource(t);
|
18342
18352
|
const defaulSetting = (_u = t === null || t === void 0 ? void 0 : t.extend) === null || _u === void 0 ? void 0 : _u.defaulSetting;
|
18343
18353
|
const isExternalLink = ((_x = (_w = (_v = value === null || value === void 0 ? void 0 : value.item) === null || _v === void 0 ? void 0 : _v.event) === null || _w === void 0 ? void 0 : _w.onClick) === null || _x === void 0 ? void 0 : _x.linkType) === 'externalLink';
|
18344
|
-
|
18354
|
+
const style = lodash.cloneDeep((_y = value === null || value === void 0 ? void 0 : value.item) === null || _y === void 0 ? void 0 : _y.style);
|
18345
18355
|
if (style.hasOwnProperty('backdropFilter')) {
|
18346
|
-
|
18347
|
-
style
|
18356
|
+
const sbf = style.backdropFilter;
|
18357
|
+
style.backdropFilter = `blur(${sbf !== null && sbf !== void 0 ? sbf : 0}px)`;
|
18348
18358
|
}
|
18349
18359
|
return (React.createElement(Component, Object.assign({ style: Object.assign(Object.assign(Object.assign({}, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.style), style), { zIndex: 50, marginLeft: '20px', boxSizing: 'border-box', transform: 'translate3d(0px, 0px, 0px)' }), textStyle: Object.assign(Object.assign({}, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.textStyle), (_z = value === null || value === void 0 ? void 0 : value.item) === null || _z === void 0 ? void 0 : _z.textStyle), bindDatas: (_1 = (_0 = value === null || value === void 0 ? void 0 : value.item) === null || _0 === void 0 ? void 0 : _0.bindDatas) !== null && _1 !== void 0 ? _1 : [] }, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.props, (_2 = value === null || value === void 0 ? void 0 : value.item) === null || _2 === void 0 ? void 0 : _2.props, { event: ((_3 = value === null || value === void 0 ? void 0 : value.item) === null || _3 === void 0 ? void 0 : _3.event) || {}, schema: schema, id: value === null || value === void 0 ? void 0 : value.id, key: value === null || value === void 0 ? void 0 : value.id, recData: rec, isExternalLink: isExternalLink, index: index, isActive: isActive })));
|
18350
18360
|
}
|
@@ -19076,7 +19086,7 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
|
|
19076
19086
|
React.createElement(ConsentPopup, { resolver: resolver, globalConfig: globalConfig }),
|
19077
19087
|
openMultiPosts && (React.createElement(MultiPosts$2, Object.assign({}, (_x = (_w = (_v = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.multiPosts) === null || _v === void 0 ? void 0 : _v[0]) === null || _w === void 0 ? void 0 : _w.item) === null || _x === void 0 ? void 0 : _x.props, (_0 = (_z = (_y = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.multiPosts) === null || _y === void 0 ? void 0 : _y[0]) === null || _z === void 0 ? void 0 : _z.item) === null || _0 === void 0 ? void 0 : _0.event, { style: { position: 'fixed', top: 0, left: 0, right: 0 } })))))));
|
19078
19088
|
};
|
19079
|
-
var
|
19089
|
+
var index$2 = React.memo(SxpPageRender);
|
19080
19090
|
|
19081
19091
|
const PictureGroup$2 = ({ imgUrls, width, height, imgUrlsPostConfig, rec, index }) => {
|
19082
19092
|
return (React.createElement(Swiper, { defaultValue: 0, direction: 'horizontal', modules: [Pagination, Autoplay], pagination: {
|
@@ -19440,7 +19450,7 @@ const DiyPortalPreview = ({ data = [], globalConfig, tipText, nudge, tempMap, de
|
|
19440
19450
|
return renderView(rec, index);
|
19441
19451
|
})));
|
19442
19452
|
};
|
19443
|
-
var index$
|
19453
|
+
var index$1 = React.memo(DiyPortalPreview);
|
19444
19454
|
|
19445
19455
|
const PictureGroup = ({ imgUrls, width, height, imgUrlsPostConfig, rec, index, swiperRef, data = [], loopPlay }) => {
|
19446
19456
|
const { isActive } = useSwiperSlide();
|
@@ -19508,6 +19518,7 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostCo
|
|
19508
19518
|
}, [bffEventReport, data, index, isFirstPlay]);
|
19509
19519
|
const handleLoadedMetadata = React.useCallback(() => {
|
19510
19520
|
var _a;
|
19521
|
+
videoRef.current.currentTime = rec === null || rec === void 0 ? void 0 : rec.startTime;
|
19511
19522
|
(_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.play();
|
19512
19523
|
setIsLoadFinish(true);
|
19513
19524
|
}, []);
|
@@ -19581,6 +19592,8 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostCo
|
|
19581
19592
|
}, []);
|
19582
19593
|
const handlePause = () => {
|
19583
19594
|
var _a, _b, _c, _d, _e, _f;
|
19595
|
+
if (!videoRef.current || !isActive)
|
19596
|
+
return;
|
19584
19597
|
if (!loopPlay)
|
19585
19598
|
return;
|
19586
19599
|
if (index === (data === null || data === void 0 ? void 0 : data.length) - 1) {
|
@@ -19592,6 +19605,7 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostCo
|
|
19592
19605
|
}
|
19593
19606
|
};
|
19594
19607
|
// useEffect(() => {
|
19608
|
+
// if (!videoRef.current) return;
|
19595
19609
|
// if (!isActive) return;
|
19596
19610
|
// if (!loopPlay) {
|
19597
19611
|
// videoRef?.current?.pause();
|
@@ -19611,7 +19625,6 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostCo
|
|
19611
19625
|
if (!videoPlayerWrapperNode)
|
19612
19626
|
return;
|
19613
19627
|
videoRef.current = mountVideoPlayerAtNode === null || mountVideoPlayerAtNode === void 0 ? void 0 : mountVideoPlayerAtNode(videoPlayerWrapperNode);
|
19614
|
-
videoRef.current.currentTime = rec === null || rec === void 0 ? void 0 : rec.startTime;
|
19615
19628
|
if (!(videoRef === null || videoRef === void 0 ? void 0 : videoRef.current))
|
19616
19629
|
return;
|
19617
19630
|
const Hls = window === null || window === void 0 ? void 0 : window.Hls;
|
@@ -19622,6 +19635,7 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostCo
|
|
19622
19635
|
hls === null || hls === void 0 ? void 0 : hls.attachMedia(videoRef === null || videoRef === void 0 ? void 0 : videoRef.current);
|
19623
19636
|
hls === null || hls === void 0 ? void 0 : hls.on(Hls.Events.MANIFEST_PARSED, function () {
|
19624
19637
|
var _a;
|
19638
|
+
videoRef.current.currentTime = rec === null || rec === void 0 ? void 0 : rec.startTime;
|
19625
19639
|
(_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.play();
|
19626
19640
|
});
|
19627
19641
|
}
|
@@ -19644,7 +19658,7 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex, videoPostCo
|
|
19644
19658
|
(_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.removeEventListener('pause', handlePause);
|
19645
19659
|
(_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.removeEventListener('timeupdate', handleTimeUpload);
|
19646
19660
|
};
|
19647
|
-
}, [handleLoadedMetadata, handlePlaying, rec, handLoadeddata, isActive]);
|
19661
|
+
}, [handleLoadedMetadata, handlePlaying, rec, handLoadeddata, isActive, loopPlay]);
|
19648
19662
|
React.useMemo(() => {
|
19649
19663
|
if (!(sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image) || isLoadFinish) {
|
19650
19664
|
return null;
|
@@ -19677,17 +19691,196 @@ var VideoWidget$1 = React.memo(VideoWidget);
|
|
19677
19691
|
* @Author: binruan@chatlabs.com
|
19678
19692
|
* @Date: 2025-03-25 13:54:27
|
19679
19693
|
* @LastEditors: binruan@chatlabs.com
|
19680
|
-
* @LastEditTime: 2025-03-
|
19694
|
+
* @LastEditTime: 2025-03-27 17:20:34
|
19681
19695
|
* @FilePath: \pb-sxp-ui\src\core\components\DiyStoryPreview\index.tsx
|
19682
19696
|
*
|
19683
19697
|
*/
|
19698
|
+
const recData = {
|
19699
|
+
position: 0,
|
19700
|
+
isCollected: false,
|
19701
|
+
product: null,
|
19702
|
+
video: {
|
19703
|
+
appId: null,
|
19704
|
+
itemId: 'VIDEOSsRgI1695278974368',
|
19705
|
+
title: '8张尺寸不一样的图片8张尺寸不一样的图片8张尺寸不一样的图片8张尺寸不一样的图片8张尺寸不一样的图片8张尺寸不一样的图片8张尺寸不一样的图片8张尺寸不一样的图片8张尺寸不一样的图片8张尺寸不一样的图片8张尺寸不一样的图片',
|
19706
|
+
enTitle: null,
|
19707
|
+
icon: null,
|
19708
|
+
cover: 'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20231017/fsJFWmW1dGyW7XmDspbJPTn5esL3U1697538777398.png',
|
19709
|
+
link: null,
|
19710
|
+
linkTitle: null,
|
19711
|
+
linkType: null,
|
19712
|
+
menuCategoryId: null,
|
19713
|
+
remark: null,
|
19714
|
+
tags: [
|
19715
|
+
'Gift-Giving',
|
19716
|
+
'Daily Wear',
|
19717
|
+
'Business Formal',
|
19718
|
+
'Sports/Casual',
|
19719
|
+
'Anniversary Gifts',
|
19720
|
+
'Wedding/Engagement',
|
19721
|
+
'Formal Dinner/Party'
|
19722
|
+
],
|
19723
|
+
traceInfo: ':VIDEO:VIDEOSsRgI1695278974368:regular:1:VPRHSkRS1697701789894:main::0:EXPMW20250305155940:COMBTh20250305160047:',
|
19724
|
+
value: 385,
|
19725
|
+
weight: null,
|
19726
|
+
bindCta: null,
|
19727
|
+
bindProduct: null,
|
19728
|
+
bindProducts: [
|
19729
|
+
{
|
19730
|
+
appId: 'wx448578f8851f3dce',
|
19731
|
+
itemId: 'test02178888',
|
19732
|
+
title: 'christian dior小包包 新CDN',
|
19733
|
+
enTitle: null,
|
19734
|
+
icon: null,
|
19735
|
+
cover: 'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20240913/fs2jqiurjftpoaba67iiwr9jt5sc31726213277754.avif',
|
19736
|
+
link: '/pages/details/index?spu_id=1702262707659534338',
|
19737
|
+
linkTitle: '',
|
19738
|
+
linkType: 'MP',
|
19739
|
+
menuCategoryId: null,
|
19740
|
+
remark: null,
|
19741
|
+
tags: [],
|
19742
|
+
traceInfo: ':PRODUCT:test02178888:regular:1:VPRHSkRS1697701789894:main::0:EXPMW20250305155940:COMBTh20250305160047:',
|
19743
|
+
value: null,
|
19744
|
+
weight: null,
|
19745
|
+
bindCta: {
|
19746
|
+
appId: 'wx448578f8851f3dce',
|
19747
|
+
itemId: 'CTA3KofE1716186622249',
|
19748
|
+
title: 'SHOP NOW 立即购买',
|
19749
|
+
enTitle: 'BUY NOW立即购买,选择你所喜爱的;',
|
19750
|
+
icon: 'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20240520/fssfxbmiwghixmgblz9uriwennd2r1716186615574.avif',
|
19751
|
+
cover: null,
|
19752
|
+
link: '/pages/details/index?spu_id=1702262707659534338',
|
19753
|
+
linkTitle: '',
|
19754
|
+
linkType: 'MP',
|
19755
|
+
menuCategoryId: '64b60b202caf0e1c1ce1e17d',
|
19756
|
+
remark: null,
|
19757
|
+
tags: [
|
19758
|
+
"Woman's Perfumes",
|
19759
|
+
'Plates & Bowls',
|
19760
|
+
'Glasses',
|
19761
|
+
'Multicolor',
|
19762
|
+
'Carafes',
|
19763
|
+
'Tea & Coffee',
|
19764
|
+
'Green',
|
19765
|
+
'Grey',
|
19766
|
+
'Cutlery'
|
19767
|
+
],
|
19768
|
+
traceInfo: ':CTA:CTA3KofE1716186622249:regular:1:VPRHSkRS1697701789894:main::0:EXPMW20250305155940:COMBTh20250305160047:',
|
19769
|
+
value: null,
|
19770
|
+
weight: null
|
19771
|
+
},
|
19772
|
+
collection: 'Ricco',
|
19773
|
+
currency: 'INR-₹',
|
19774
|
+
homePage: [
|
19775
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20240913/fs2jqiurjftpoaba67iiwr9jt5sc31726213277754.avif',
|
19776
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20240913/fsr9ttuzuljs85smqi6lsidovnyoy1726213285994.avif',
|
19777
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20240913/fsknmfhx2lxukxews05guwwxr8rju1726213281108.avif',
|
19778
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20240913/fs0acnua4f1clamdpwdsrh0v5dgc61726213289247.avif'
|
19779
|
+
],
|
19780
|
+
info: 'test',
|
19781
|
+
price: 53200,
|
19782
|
+
shippingInfo: null,
|
19783
|
+
taxInfo: null
|
19784
|
+
},
|
19785
|
+
{
|
19786
|
+
appId: null,
|
19787
|
+
itemId: '113J631A0684_C520',
|
19788
|
+
title: 'Sweatshirt à capuche Dior Oblique, coupe relax',
|
19789
|
+
enTitle: null,
|
19790
|
+
icon: null,
|
19791
|
+
cover: 'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20241115/fsaf0xq8vx8gkkl30y1h1swpinmbt1731661943891.avif',
|
19792
|
+
link: 'https://www.dior.com/fr_fr/fashion/products/113J631A0684_C520',
|
19793
|
+
linkTitle: null,
|
19794
|
+
linkType: 'WEB',
|
19795
|
+
menuCategoryId: null,
|
19796
|
+
remark: null,
|
19797
|
+
tags: [],
|
19798
|
+
traceInfo: ':PRODUCT:113J631A0684_C520:regular:1:VPRHSkRS1697701789894:main::0:EXPMW20250305155940:COMBTh20250305160047:',
|
19799
|
+
value: null,
|
19800
|
+
weight: null,
|
19801
|
+
bindCta: {
|
19802
|
+
appId: null,
|
19803
|
+
itemId: 'CTAAfaKf1730796437032',
|
19804
|
+
title: 'test',
|
19805
|
+
enTitle: 'test',
|
19806
|
+
icon: 'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20241105/fsjblxoud2tmehpiqqomh0oktwqrd1730796431496.avif',
|
19807
|
+
cover: null,
|
19808
|
+
link: null,
|
19809
|
+
linkTitle: null,
|
19810
|
+
linkType: null,
|
19811
|
+
menuCategoryId: '64b60b202caf0e1c1ce1e17d',
|
19812
|
+
remark: '',
|
19813
|
+
tags: [],
|
19814
|
+
traceInfo: ':CTA:CTAAfaKf1730796437032:regular:1:VPRHSkRS1697701789894:main::0:EXPMW20250305155940:COMBTh20250305160047:',
|
19815
|
+
value: null,
|
19816
|
+
weight: null
|
19817
|
+
},
|
19818
|
+
collection: 'Jacquard de coton éponge bleu',
|
19819
|
+
currency: 'EUR-€',
|
19820
|
+
homePage: [
|
19821
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20241115/fsaf0xq8vx8gkkl30y1h1swpinmbt1731661943891.avif',
|
19822
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20241115/fszxkdcjfjql2oiy90ffbal5tsfd81731661964913.avif',
|
19823
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20241115/fs1jhd9jwxvfqmrbjwy5abfzb0fde1731661994996.avif'
|
19824
|
+
],
|
19825
|
+
info: "Le sweatshirt à capuche bleu met à l'honneur l'emblématique motif dior oblique. Confectionné en jacquard de coton éponge bleu, il présente une coupe relax très confortable. Doté de poches latérales fendues, ce sweatshirt à capuche s'associera à tous vos jeans ou pantalons de survêtement pour un look décontracté.. Sweatshirt à capuche dior oblique, coupe relax Jacquard de coton éponge bleu",
|
19826
|
+
price: 1800,
|
19827
|
+
shippingInfo: null,
|
19828
|
+
taxInfo: null
|
19829
|
+
},
|
19830
|
+
{
|
19831
|
+
appId: null,
|
19832
|
+
itemId: 'S5573CRIW_M928',
|
19833
|
+
title: 'Mini Dior Book Tote',
|
19834
|
+
enTitle: null,
|
19835
|
+
icon: null,
|
19836
|
+
cover: 'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20250213/fsvewk9etrawxrzznmvvewgt1bctu1739415576729.avif',
|
19837
|
+
link: 'https://www.dior.com/en_gb/fashion/products/S5573CRIW_M928',
|
19838
|
+
linkTitle: null,
|
19839
|
+
linkType: 'WEB',
|
19840
|
+
menuCategoryId: null,
|
19841
|
+
remark: null,
|
19842
|
+
tags: ['ダイヤモンド'],
|
19843
|
+
traceInfo: ':PRODUCT:S5573CRIW_M928:regular:1:VPRHSkRS1697701789894:main::0:EXPMW20250305155940:COMBTh20250305160047:',
|
19844
|
+
value: null,
|
19845
|
+
weight: null,
|
19846
|
+
bindCta: null,
|
19847
|
+
collection: null,
|
19848
|
+
currency: 'GBP-£',
|
19849
|
+
homePage: [
|
19850
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20250213/fsvewk9etrawxrzznmvvewgt1bctu1739415576729.avif',
|
19851
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20250213/fsngtlvhid7xwt5if0viw7vqanm831739415582147.avif',
|
19852
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20250213/fs4hotdvyzjtnqb9vszlynuzplddc1739415586910.avif',
|
19853
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20250213/fswffx9kwexf3z3vcnxisut1qxtez1739415591629.avif',
|
19854
|
+
'https://graff-cdn.chatlabs.net/dev/img/8922b5b8-a954-4a61-9ffc-80edebdf02b4/sxp-portal/20250213/fsbfsi7tttx1hnzldoiw7eoea7fvh1739415597388.avif'
|
19855
|
+
],
|
19856
|
+
info: "The Dior Book Tote is a House classic and original design by Maria Grazia Chiuri, Creative Director of Christian Dior. The style is fully embroidered with the House's hallmark blue Dior Oblique motif and showcases the Christian Dior Paris signature. Exemplifying House savoir-faire, the miniature style features an adjustable and removable strap that allows it to be carried by hand, worn over the shoulder or crossbody.",
|
19857
|
+
price: 1950,
|
19858
|
+
shippingInfo: null,
|
19859
|
+
taxInfo: null
|
19860
|
+
}
|
19861
|
+
],
|
19862
|
+
url: null,
|
19863
|
+
blockCta: 1,
|
19864
|
+
blockProduct: 1,
|
19865
|
+
hashTags: [
|
19866
|
+
'Sports/Casual',
|
19867
|
+
'Formal Dinner/Party',
|
19868
|
+
'Business Formal',
|
19869
|
+
'Wedding/Engagement',
|
19870
|
+
'Gift-Giving',
|
19871
|
+
'Daily Wear',
|
19872
|
+
'Anniversary Gifts'
|
19873
|
+
]
|
19874
|
+
}
|
19875
|
+
};
|
19684
19876
|
const RESOLVER$1 = {};
|
19685
19877
|
Object.values(_materials_).forEach((v) => {
|
19686
19878
|
RESOLVER$1[v.extend.type] = v;
|
19687
19879
|
});
|
19688
19880
|
const defaultUnLikeIconPath = '/pb_static/f71266d2c64446c5ae6a5a7f5489cc0a.png';
|
19689
19881
|
const defaultLikeIconPath = '/pb_static/f07900fe3f0f4ae188ea1611d4801a44.png';
|
19690
|
-
const DiyStoryPreview = ({ data = [], globalConfig, tipText, nudge, tempMap, descStyle, hashTagStyle, containerHeight = 664, containerWidth = 375, appDomain, tagList = [], scenes, onActiveChange, activeIndex, loopPlay = false }) => {
|
19882
|
+
const DiyStoryPreview = ({ data = [], globalConfig, tipText, nudge, tempMap, descStyle, hashTagStyle, containerHeight = 664, containerWidth = 375, appDomain, tagList = [], scenes, onActiveChange, activeIndex, loopPlay = false, pointerEvents = 'none' }) => {
|
19883
|
+
const [loopPlaySwiper, setLooPlaySwiper] = React.useState(loopPlay);
|
19691
19884
|
const swiperRef = React.useRef(null);
|
19692
19885
|
React.useMemo(() => {
|
19693
19886
|
let minusHeight = 0;
|
@@ -19713,10 +19906,10 @@ const DiyStoryPreview = ({ data = [], globalConfig, tipText, nudge, tempMap, des
|
|
19713
19906
|
const renderContent = (rec, index) => {
|
19714
19907
|
const isVideo = isVideoUrl(rec === null || rec === void 0 ? void 0 : rec.mediaUrl);
|
19715
19908
|
if (isVideo) {
|
19716
|
-
return (React.createElement(VideoWidget$1, { rec: rec, index: index, muted: true, width: containerWidth, data: scenes !== null && scenes !== void 0 ? scenes : [], height: containerHeight, activeIndex: index, videoPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.videoPost, swiperRef: swiperRef, loopPlay:
|
19909
|
+
return (React.createElement(VideoWidget$1, { rec: rec, index: index, muted: true, width: containerWidth, data: scenes !== null && scenes !== void 0 ? scenes : [], height: containerHeight, activeIndex: index, videoPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.videoPost, swiperRef: swiperRef, loopPlay: loopPlaySwiper }));
|
19717
19910
|
}
|
19718
19911
|
else {
|
19719
|
-
return (React.createElement(PictureGroup$1, { key: rec.itemId, imgUrls: [rec === null || rec === void 0 ? void 0 : rec.mediaUrl], width: containerWidth, height: containerHeight, rec: rec, index: index, imgUrlsPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.imgUrlsPost, data: scenes !== null && scenes !== void 0 ? scenes : [], swiperRef: swiperRef, loopPlay:
|
19912
|
+
return (React.createElement(PictureGroup$1, { key: rec.itemId, imgUrls: [rec === null || rec === void 0 ? void 0 : rec.mediaUrl], width: containerWidth, height: containerHeight, rec: rec, index: index, imgUrlsPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.imgUrlsPost, data: scenes !== null && scenes !== void 0 ? scenes : [], swiperRef: swiperRef, loopPlay: loopPlaySwiper }));
|
19720
19913
|
}
|
19721
19914
|
};
|
19722
19915
|
React.useMemo(() => {
|
@@ -19726,12 +19919,126 @@ const DiyStoryPreview = ({ data = [], globalConfig, tipText, nudge, tempMap, des
|
|
19726
19919
|
}
|
19727
19920
|
return null;
|
19728
19921
|
}, [globalConfig]);
|
19729
|
-
|
19730
|
-
|
19731
|
-
|
19732
|
-
|
19733
|
-
|
19734
|
-
|
19922
|
+
const renderBottom = (rec, index) => {
|
19923
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
19924
|
+
if (rec === null || rec === void 0 ? void 0 : rec.video) {
|
19925
|
+
let cta = null;
|
19926
|
+
if ((_b = (_a = rec === null || rec === void 0 ? void 0 : rec.video) === null || _a === void 0 ? void 0 : _a.bindProducts) === null || _b === void 0 ? void 0 : _b.length) {
|
19927
|
+
cta = '多商品CTA';
|
19928
|
+
}
|
19929
|
+
else if ((_c = rec === null || rec === void 0 ? void 0 : rec.video) === null || _c === void 0 ? void 0 : _c.bindProduct) {
|
19930
|
+
cta = '商品CTA';
|
19931
|
+
}
|
19932
|
+
else {
|
19933
|
+
cta = (_e = (_d = rec === null || rec === void 0 ? void 0 : rec.video) === null || _d === void 0 ? void 0 : _d.bindCta) === null || _e === void 0 ? void 0 : _e.itemId;
|
19934
|
+
}
|
19935
|
+
const value = tempMap === null || tempMap === void 0 ? void 0 : tempMap[cta];
|
19936
|
+
return (React.createElement(React.Fragment, null,
|
19937
|
+
((_f = rec === null || rec === void 0 ? void 0 : rec.video) === null || _f === void 0 ? void 0 : _f.title) && (React.createElement("div", { style: {
|
19938
|
+
background: 'repeating-linear-gradient(0deg, rgba(26, 26, 25, 0.7), hsla(0, 0%, 100%, 0))',
|
19939
|
+
height: '130px',
|
19940
|
+
position: 'absolute',
|
19941
|
+
bottom: 0,
|
19942
|
+
width: '100%',
|
19943
|
+
willChange: 'transform',
|
19944
|
+
zIndex: 2,
|
19945
|
+
pointerEvents
|
19946
|
+
} })),
|
19947
|
+
React.createElement("div", { style: {
|
19948
|
+
marginBottom: `${(_g = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.bottomInfoDist) !== null && _g !== void 0 ? _g : 40}px`,
|
19949
|
+
zIndex: 999,
|
19950
|
+
position: 'absolute',
|
19951
|
+
bottom: 0,
|
19952
|
+
left: 0,
|
19953
|
+
right: 0,
|
19954
|
+
paddingTop: '20px'
|
19955
|
+
} },
|
19956
|
+
(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowCTA) === undefined || (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowCTA) ? (React.createElement("div", { style: {} },
|
19957
|
+
React.createElement(RenderCard$1, { rec: rec, index: index, tempMap: tempMap, resolver: RESOLVER$1, isActive: index === activeIndex, value: value }))) : null,
|
19958
|
+
React.createElement("div", null,
|
19959
|
+
React.createElement(ExpandableText$1
|
19960
|
+
// className='clc-sxp-bottom-text'
|
19961
|
+
, {
|
19962
|
+
// className='clc-sxp-bottom-text'
|
19963
|
+
isPost: true, foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, text: (_j = (_h = rec === null || rec === void 0 ? void 0 : rec.video) === null || _h === void 0 ? void 0 : _h.title) !== null && _j !== void 0 ? _j : '', 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', padding: '0 20px', fontSize: '12px' }) }),
|
19964
|
+
React.createElement(RenderCard$1, { rec: rec, index: index, tempMap: tempMap, resolver: RESOLVER$1, includesCtaType: ['AniLink'], isActive: index === activeIndex, value: value }))),
|
19965
|
+
React.createElement(RenderCard$1, { rec: rec, index: index, tempMap: tempMap, resolver: RESOLVER$1, includesCtaType: ['AniLinkPopup'], isActive: index === activeIndex, value: value })));
|
19966
|
+
}
|
19967
|
+
return null;
|
19968
|
+
};
|
19969
|
+
const likeIcon = useIconLink(defaultLikeIconPath, appDomain);
|
19970
|
+
const unlikeIcon = useIconLink(defaultUnLikeIconPath, appDomain);
|
19971
|
+
const renderLikeButton = (rec, index) => {
|
19972
|
+
var _a, _b, _c, _d;
|
19973
|
+
if (!(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowLike))
|
19974
|
+
return;
|
19975
|
+
let top = (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconY) !== null && _a !== void 0 ? _a : 400;
|
19976
|
+
if (top < 40) {
|
19977
|
+
top += 40;
|
19978
|
+
}
|
19979
|
+
if (rec === null || rec === void 0 ? void 0 : rec.video) {
|
19980
|
+
return (React.createElement(LikeButton$1, { key: rec.position, activeIcon: (_b = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIcon) !== null && _b !== void 0 ? _b : likeIcon, unActicveIcon: (_c = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.unlikeIcon) !== null && _c !== void 0 ? _c : unlikeIcon, position: index, active: rec.isCollected, recData: rec,
|
19981
|
+
// className={style['clc-sxp-like-button']}
|
19982
|
+
style: {
|
19983
|
+
top,
|
19984
|
+
right: (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconX) !== null && _d !== void 0 ? _d : 0,
|
19985
|
+
position: 'absolute',
|
19986
|
+
zIndex: 999,
|
19987
|
+
backgroundColor: 'transparent',
|
19988
|
+
width: '50px',
|
19989
|
+
height: '50px',
|
19990
|
+
outline: 'none',
|
19991
|
+
border: 'none',
|
19992
|
+
boxSizing: 'content-box',
|
19993
|
+
padding: 0,
|
19994
|
+
transform: 'translate3d(0px, 0px, 0px)'
|
19995
|
+
} }));
|
19996
|
+
}
|
19997
|
+
return null;
|
19998
|
+
};
|
19999
|
+
const mutedIcon = useIconLink('/pb_static/5beaaa5ce7f3477b99db3838619cc471.png', appDomain);
|
20000
|
+
const unmutedIcon = useIconLink('/pb_static/fea8668a8a894e4aa3a86bcc775e895e.png', appDomain);
|
20001
|
+
const renderToggleButton = (visible) => {
|
20002
|
+
var _a, _b, _c, _d;
|
20003
|
+
if (!visible)
|
20004
|
+
return;
|
20005
|
+
let top = (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconY) !== null && _a !== void 0 ? _a : 23;
|
20006
|
+
if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconYPosit) === 'top') {
|
20007
|
+
top += 45;
|
20008
|
+
}
|
20009
|
+
return (((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowMute) === undefined || (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowMute) === true) && (React.createElement(ToggleButton$1, { style: {
|
20010
|
+
position: 'absolute',
|
20011
|
+
visibility: 'visible',
|
20012
|
+
zIndex: 999,
|
20013
|
+
transform: 'translate3d(0px,0px,0px)',
|
20014
|
+
[(_b = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconXPosit) !== null && _b !== void 0 ? _b : 'right']: (_c = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconX) !== null && _c !== void 0 ? _c : 0,
|
20015
|
+
[(_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconYPosit) !== null && _d !== void 0 ? _d : 'bottom']: top,
|
20016
|
+
backgroundColor: 'transparent',
|
20017
|
+
width: '50px',
|
20018
|
+
height: '50px',
|
20019
|
+
outline: 'none',
|
20020
|
+
border: 'none',
|
20021
|
+
boxSizing: 'content-box',
|
20022
|
+
padding: 0
|
20023
|
+
}, 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 })));
|
20024
|
+
};
|
20025
|
+
const renderView = (item, index) => {
|
20026
|
+
var _a, _b, _c, _d;
|
20027
|
+
const rec = lodash.cloneDeep(recData);
|
20028
|
+
rec.video.bindProducts = item === null || item === void 0 ? void 0 : item.bindProducts;
|
20029
|
+
return (React.createElement("div", { style: { position: 'relative' } },
|
20030
|
+
React.createElement(SwiperSlide, { key: index, virtualIndex: index, style: { overflow: 'hidden', position: 'relative' } },
|
20031
|
+
renderBottom(rec, index),
|
20032
|
+
renderLikeButton(rec, index),
|
20033
|
+
renderToggleButton(!(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconFixed)),
|
20034
|
+
React.createElement(ToggleButton$1, { style: {
|
20035
|
+
position: 'absolute',
|
20036
|
+
right: (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconX) !== null && _a !== void 0 ? _a : 0,
|
20037
|
+
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',
|
20038
|
+
bottom: (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconY) !== null && _d !== void 0 ? _d : 23,
|
20039
|
+
zIndex: 999
|
20040
|
+
}, 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 }),
|
20041
|
+
renderContent(item, index))));
|
19735
20042
|
};
|
19736
20043
|
React.useEffect(() => {
|
19737
20044
|
var _a, _b;
|
@@ -19745,14 +20052,23 @@ const DiyStoryPreview = ({ data = [], globalConfig, tipText, nudge, tempMap, des
|
|
19745
20052
|
return;
|
19746
20053
|
(_b = (_a = swiperRef === null || swiperRef === void 0 ? void 0 : swiperRef.current) === null || _a === void 0 ? void 0 : _a.swiper) === null || _b === void 0 ? void 0 : _b.slideTo(0);
|
19747
20054
|
}, [loopPlay]);
|
19748
|
-
return (React.createElement(
|
19749
|
-
|
19750
|
-
|
19751
|
-
|
19752
|
-
|
19753
|
-
|
20055
|
+
return (React.createElement("div", { id: 'sxp-render',
|
20056
|
+
// className={style['clc-sxp-container']}
|
20057
|
+
style: { height: containerHeight, position: 'relative', pointerEvents } },
|
20058
|
+
React.createElement(Swiper, { ref: swiperRef, allowTouchMove: pointerEvents !== 'none', onSlideChange: () => {
|
20059
|
+
setLooPlaySwiper(false);
|
20060
|
+
swiperRef.current.swiper.allowTouchMove = false;
|
20061
|
+
setTimeout(() => {
|
20062
|
+
swiperRef.current.swiper.allowTouchMove = true;
|
20063
|
+
}, 500);
|
20064
|
+
}, onActiveIndexChange: (swiper) => {
|
20065
|
+
// setActiveIndex(swiper.activeIndex);
|
20066
|
+
onActiveChange === null || onActiveChange === void 0 ? void 0 : onActiveChange(swiper.activeIndex);
|
20067
|
+
}, direction: 'vertical', style: { overflow: 'hidden', height: containerHeight }, height: containerHeight }, scenes === null || scenes === void 0 ? void 0 : scenes.map((rec, index) => {
|
20068
|
+
return renderView(rec, index);
|
20069
|
+
}))));
|
19754
20070
|
};
|
19755
|
-
var
|
20071
|
+
var DiyStoryPreview$1 = React.memo(DiyStoryPreview);
|
19756
20072
|
|
19757
20073
|
/*
|
19758
20074
|
* @Author: binruan@chatlabs.com
|
@@ -19850,17 +20166,9 @@ const Popup = () => {
|
|
19850
20166
|
|
19851
20167
|
/*
|
19852
20168
|
* @Author: binruan@chatlabs.com
|
19853
|
-
* @Date: 2024-
|
19854
|
-
* @LastEditors: binruan@chatlabs.com
|
19855
|
-
* @LastEditTime: 2025-02-24 15:47:44
|
19856
|
-
* @FilePath: \pb-sxp-ui\src\core\components\SxpPageCore\index.tsx
|
19857
|
-
*
|
19858
|
-
*/
|
19859
|
-
/*
|
19860
|
-
* @Author: binruan@chatlabs.com
|
19861
|
-
* @Date: 2023-11-24 15:58:00
|
20169
|
+
* @Date: 2024-03-20 10:27:31
|
19862
20170
|
* @LastEditors: binruan@chatlabs.com
|
19863
|
-
* @LastEditTime:
|
20171
|
+
* @LastEditTime: 2025-03-27 17:17:56
|
19864
20172
|
* @FilePath: \pb-sxp-ui\src\core\components\SxpPageCore\index.tsx
|
19865
20173
|
*
|
19866
20174
|
*/
|
@@ -19868,7 +20176,7 @@ const RESOLVER = {};
|
|
19868
20176
|
Object.values(_materials_).forEach((v) => {
|
19869
20177
|
RESOLVER[v.extend.type] = v;
|
19870
20178
|
});
|
19871
|
-
const SxpPageCore = ({ data, maxSize = 10, defaultSize = 10, hashTagSize = 20, loadingImage, appDomain, enabledMetaConversionApi, dataList }) => {
|
20179
|
+
const SxpPageCore = ({ data, maxSize = 10, defaultSize = 10, hashTagSize = 20, loadingImage, appDomain, enabledMetaConversionApi, dataList, pointerEvents }) => {
|
19872
20180
|
var _a, _b, _c, _d, _e, _f;
|
19873
20181
|
const utmVal = React.useMemo(() => {
|
19874
20182
|
var _a;
|
@@ -19881,7 +20189,7 @@ const SxpPageCore = ({ data, maxSize = 10, defaultSize = 10, hashTagSize = 20, l
|
|
19881
20189
|
React.createElement(SxpDataSourceProvider$1, { utmVal: utmVal, dataSources: data === null || data === void 0 ? void 0 : data.data_sources, sxpParameter: data === null || data === void 0 ? void 0 : data.sxp_parameter, maxSize: (_b = (_a = data === null || data === void 0 ? void 0 : data.sxp_parameter) === null || _a === void 0 ? void 0 : _a.personalized_recommend) !== null && _b !== void 0 ? _b : maxSize, defaultSize: (_d = (_c = data === null || data === void 0 ? void 0 : data.sxp_parameter) === null || _c === void 0 ? void 0 : _c.default_recommend) !== null && _d !== void 0 ? _d : defaultSize, hashTagSize: (_f = (_e = data === null || data === void 0 ? void 0 : data.sxp_parameter) === null || _e === void 0 ? void 0 : _e.hash_tag_size) !== null && _f !== void 0 ? _f : hashTagSize, loadingImage: loadingImage, appDomain: appDomain, enabledMetaConversionApi: enabledMetaConversionApi, utmParameter: data === null || data === void 0 ? void 0 : data.utm_parameter, data: data, dataList: dataList, onUpdateSchema: (d) => setSchema(d), onUpdateChannel: (d) => setChannel(d), render: ({ rtcList, tagList, pageData }) => {
|
19882
20190
|
var _a;
|
19883
20191
|
return (React.createElement(React.Fragment, null,
|
19884
|
-
React.createElement(
|
20192
|
+
React.createElement(DiyStoryPreview$1, Object.assign({ defaultData: data }, (_a = pageData === null || pageData === void 0 ? void 0 : pageData.data) === null || _a === void 0 ? void 0 : _a.sxpPageConf, { tagList: tagList, scenes: rtcList, resolver: RESOLVER, containerHeight: window === null || window === void 0 ? void 0 : window.innerHeight, pointerEvents: pointerEvents })),
|
19885
20193
|
React.createElement(Popup, null)));
|
19886
20194
|
} })));
|
19887
20195
|
};
|
@@ -19895,13 +20203,13 @@ var index = React.memo(SxpPageCore);
|
|
19895
20203
|
* @FilePath: \pb-sxp-ui\src\index.ts
|
19896
20204
|
*/
|
19897
20205
|
|
19898
|
-
exports.DiyPortalPreview = index$
|
19899
|
-
exports.DiyStoryPreview =
|
20206
|
+
exports.DiyPortalPreview = index$1;
|
20207
|
+
exports.DiyStoryPreview = DiyStoryPreview$1;
|
19900
20208
|
exports.EditorDataProvider = EditorDataProvider;
|
19901
20209
|
exports.Modal = Modal$1;
|
19902
20210
|
exports.SxpDataSourceProvider = SxpDataSourceProvider$1;
|
19903
20211
|
exports.SxpPageCore = index;
|
19904
|
-
exports.SxpPageRender =
|
20212
|
+
exports.SxpPageRender = index$2;
|
19905
20213
|
exports.core = index$3;
|
19906
20214
|
exports.default = Pagebuilder;
|
19907
20215
|
exports.materials = _materials_;
|