pb-sxp-ui 1.9.8 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/index.cjs +520 -162
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.css +35 -0
  4. package/dist/index.js +520 -162
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.min.cjs +7 -3
  7. package/dist/index.min.cjs.map +1 -1
  8. package/dist/index.min.js +7 -3
  9. package/dist/index.min.js.map +1 -1
  10. package/dist/pb-ui.js +520 -162
  11. package/dist/pb-ui.js.map +1 -1
  12. package/dist/pb-ui.min.js +7 -3
  13. package/dist/pb-ui.min.js.map +1 -1
  14. package/es/core/Pagebuilder/index.js +3 -4
  15. package/es/core/components/SxpPageCore/index.d.ts +1 -1
  16. package/es/core/components/SxpPageCore/index.js +7 -6
  17. package/es/core/components/SxpPageRender/NavBack.d.ts +9 -0
  18. package/es/core/components/SxpPageRender/NavBack.js +16 -0
  19. package/es/core/components/SxpPageRender/PictureGroup/index.js +3 -1
  20. package/es/core/components/SxpPageRender/index.d.ts +2 -0
  21. package/es/core/components/SxpPageRender/index.js +30 -22
  22. package/es/core/components/SxpPageRender/typing.d.ts +1 -0
  23. package/es/core/context/EditorContext.d.ts +2 -0
  24. package/es/core/context/EditorContext.js +9 -3
  25. package/es/core/context/EditorDataProvider.d.ts +2 -0
  26. package/es/core/context/EditorDataProvider.js +4 -1
  27. package/es/core/context/SxpDataSourceProvider.d.ts +4 -2
  28. package/es/core/context/SxpDataSourceProvider.js +83 -52
  29. package/es/core/utils/materials.d.ts +1 -1
  30. package/es/materials/sxp/MultiPosts/index.d.ts +26 -0
  31. package/es/materials/sxp/MultiPosts/index.js +98 -0
  32. package/es/materials/sxp/MultiPosts/interactionRender.d.ts +9 -0
  33. package/es/materials/sxp/MultiPosts/interactionRender.js +42 -0
  34. package/es/materials/sxp/MultiPosts/material.d.ts +2 -0
  35. package/es/materials/sxp/MultiPosts/material.js +22 -0
  36. package/es/materials/sxp/MultiPosts/settingRender.d.ts +73 -0
  37. package/es/materials/sxp/MultiPosts/settingRender.js +115 -0
  38. package/es/materials/sxp/index.d.ts +1 -0
  39. package/es/materials/sxp/index.js +1 -0
  40. package/lib/core/Pagebuilder/index.js +3 -4
  41. package/lib/core/components/SxpPageCore/index.d.ts +1 -1
  42. package/lib/core/components/SxpPageCore/index.js +6 -5
  43. package/lib/core/components/SxpPageRender/NavBack.d.ts +9 -0
  44. package/lib/core/components/SxpPageRender/NavBack.js +19 -0
  45. package/lib/core/components/SxpPageRender/PictureGroup/index.js +3 -1
  46. package/lib/core/components/SxpPageRender/index.d.ts +2 -0
  47. package/lib/core/components/SxpPageRender/index.js +30 -22
  48. package/lib/core/components/SxpPageRender/typing.d.ts +1 -0
  49. package/lib/core/context/EditorContext.d.ts +2 -0
  50. package/lib/core/context/EditorContext.js +9 -3
  51. package/lib/core/context/EditorDataProvider.d.ts +2 -0
  52. package/lib/core/context/EditorDataProvider.js +4 -1
  53. package/lib/core/context/SxpDataSourceProvider.d.ts +4 -2
  54. package/lib/core/context/SxpDataSourceProvider.js +83 -52
  55. package/lib/core/utils/materials.d.ts +1 -1
  56. package/lib/materials/sxp/MultiPosts/index.d.ts +26 -0
  57. package/lib/materials/sxp/MultiPosts/index.js +100 -0
  58. package/lib/materials/sxp/MultiPosts/interactionRender.d.ts +9 -0
  59. package/lib/materials/sxp/MultiPosts/interactionRender.js +44 -0
  60. package/lib/materials/sxp/MultiPosts/material.d.ts +2 -0
  61. package/lib/materials/sxp/MultiPosts/material.js +26 -0
  62. package/lib/materials/sxp/MultiPosts/settingRender.d.ts +73 -0
  63. package/lib/materials/sxp/MultiPosts/settingRender.js +117 -0
  64. package/lib/materials/sxp/index.d.ts +1 -0
  65. package/lib/materials/sxp/index.js +1 -0
  66. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -436,7 +436,7 @@ const Pagebuilder = {
436
436
  const tenantId = builder.getTenantId();
437
437
  const appId = builder.getAppId();
438
438
  const apiUrl = builder.getApiUrl();
439
- return fetch(`${apiUrl}/storefront/v1/page?id=` + id, {
439
+ return fetch(`${apiUrl}/storefront/v1/page/build?id=` + id, {
440
440
  method: 'get',
441
441
  headers: {
442
442
  'x-tenant-id': tenantId || '',
@@ -448,9 +448,8 @@ const Pagebuilder = {
448
448
  if (!result.success) {
449
449
  return undefined;
450
450
  }
451
- const decodeData = unzip((_a = result === null || result === void 0 ? void 0 : result.data) === null || _a === void 0 ? void 0 : _a.data);
452
- result.data.data = decodeData;
453
- return result.data;
451
+ const dataList = (_a = result === null || result === void 0 ? void 0 : result.data) === null || _a === void 0 ? void 0 : _a.map((item) => (Object.assign(Object.assign({}, item), { data: unzip(item === null || item === void 0 ? void 0 : item.data) })));
452
+ return dataList;
454
453
  }));
455
454
  }),
456
455
  getSxpRecommendVideoData: (dataId) => __awaiter(void 0, void 0, void 0, function* () {
@@ -654,8 +653,9 @@ var DataSourceType;
654
653
  DataSourceType[DataSourceType["BFF"] = 5] = "BFF";
655
654
  })(DataSourceType || (DataSourceType = {}));
656
655
  const DEFAULT_TAG = 'FOR U';
657
- const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent = true, maxSize, defaultSize, isPreview = false, sxpParameter, appDomain, hashTagSize, loadingImage, isOpenHashTag = false, enabledMetaConversionApi = false, consentHeight, consentWidth, isShowTag = true, isOpenConsent = false, globalConfig, isEditor = false, utmParameter, channelQueryList }) => {
658
- var _a, _b, _c;
656
+ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent = true, maxSize, defaultSize, isPreview = false, sxpParameter, appDomain, hashTagSize, loadingImage, isOpenHashTag = false, enabledMetaConversionApi = false, consentHeight, consentWidth, isOpenConsent = false, isEditor = false, utmParameter, channelQueryList, data, dataList, onUpdateSchema }) => {
657
+ var _a, _b, _c, _d, _e;
658
+ const { channel } = useEditor();
659
659
  const [rtcList, setRtcList] = React.useState([]);
660
660
  const [tagList, setTagList] = React.useState([]);
661
661
  const [loading, setLoading] = React.useState(false);
@@ -677,10 +677,15 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
677
677
  const checkCommodityIndexRef = React.useRef(-1);
678
678
  const popupCurTimeRef = React.useRef(null);
679
679
  const [isNoMoreData, setIsNoMoreData] = React.useState(false);
680
+ const [globalConfig, setGlobalConfig] = React.useState((_b = (_a = data === null || data === void 0 ? void 0 : data.data) === null || _a === void 0 ? void 0 : _a.sxpPageConf) === null || _b === void 0 ? void 0 : _b.globalConfig);
681
+ const [pageData, setPageData] = React.useState(data);
682
+ const [showConsent, setShowConsent] = React.useState(false);
683
+ const [layoutVariantId, setLayoutVariantId] = React.useState();
680
684
  const isShowConsent = React.useMemo(() => {
681
685
  var _a, _b, _c, _d;
682
- return (((_d = (_c = (_b = (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.consent) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.item) === null || _c === void 0 ? void 0 : _c.props) === null || _d === void 0 ? void 0 : _d.privacy_necessity) && !isAgreePolicy && !isEditor) || isOpenConsent;
683
- }, [isAgreePolicy, globalConfig, isOpenConsent, isEditor]);
686
+ return (((((_d = (_c = (_b = (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.consent) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.item) === null || _c === void 0 ? void 0 : _c.props) === null || _d === void 0 ? void 0 : _d.privacy_necessity) && !isAgreePolicy && !isEditor) || isOpenConsent) &&
687
+ showConsent);
688
+ }, [isAgreePolicy, globalConfig, isOpenConsent, isEditor, showConsent]);
684
689
  const getFilterRecList = React.useCallback((data) => {
685
690
  var _a;
686
691
  const recList = data === null || data === void 0 ? void 0 : data.recList;
@@ -742,10 +747,10 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
742
747
  }, [bffDataSource]);
743
748
  // 获取推荐视频数据
744
749
  const getRecommendVideos = React.useCallback((query) => __awaiter(void 0, void 0, void 0, function* () {
745
- var _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
750
+ var _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
746
751
  query = {
747
- maxSize: (_d = query === null || query === void 0 ? void 0 : query.maxSize) !== null && _d !== void 0 ? _d : maxSize,
748
- defaultSize: (_e = query === null || query === void 0 ? void 0 : query.defaultSize) !== null && _e !== void 0 ? _e : defaultSize,
752
+ maxSize: (_f = query === null || query === void 0 ? void 0 : query.maxSize) !== null && _f !== void 0 ? _f : maxSize,
753
+ defaultSize: (_g = query === null || query === void 0 ? void 0 : query.defaultSize) !== null && _g !== void 0 ? _g : defaultSize,
749
754
  hashTag: query === null || query === void 0 ? void 0 : query.hashTag,
750
755
  traceInfo: query === null || query === void 0 ? void 0 : query.traceInfo,
751
756
  themeTag: query === null || query === void 0 ? void 0 : query.themeTag,
@@ -753,13 +758,17 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
753
758
  contentFilter: query === null || query === void 0 ? void 0 : query.contentFilter,
754
759
  productFilter: query === null || query === void 0 ? void 0 : query.productFilter
755
760
  };
756
- if (utmVal) {
757
- const val = (_h = (_g = (_f = utmVal === null || utmVal === void 0 ? void 0 : utmVal.split('&')) === null || _f === void 0 ? void 0 : _f.filter((val) => {
761
+ if (channel) {
762
+ query = Object.assign(Object.assign({}, query), { channel: decodeURIComponent(channel) });
763
+ }
764
+ else if (utmVal) {
765
+ const val = (_k = (_j = (_h = utmVal === null || utmVal === void 0 ? void 0 : utmVal.split('&')) === null || _h === void 0 ? void 0 : _h.filter((val) => {
758
766
  var _a, _b;
759
767
  const key = val.split('=')[0];
760
768
  return (_b = ((_a = utmParameter === null || utmParameter === void 0 ? void 0 : utmParameter.channels) !== null && _a !== void 0 ? _a : [])) === null || _b === void 0 ? void 0 : _b.includes(key);
761
- })) === null || _g === void 0 ? void 0 : _g.join('&')) !== null && _h !== void 0 ? _h : '';
762
- query = Object.assign(Object.assign({}, query), { channel: decodeURIComponent(val) });
769
+ })) === null || _j === void 0 ? void 0 : _j.join('&')) !== null && _k !== void 0 ? _k : '';
770
+ if (val)
771
+ query = Object.assign(Object.assign({}, query), { channel: decodeURIComponent(val) });
763
772
  }
764
773
  if (isEditor) {
765
774
  let pageNum = 1;
@@ -771,17 +780,17 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
771
780
  let list = [];
772
781
  let result = null;
773
782
  const recurveRecList = (query) => __awaiter(void 0, void 0, void 0, function* () {
774
- var _t, _u, _v, _w, _x, _y;
783
+ var _v, _w, _x, _y, _z, _0;
775
784
  query.pageNum = pageNum;
776
785
  result = yield (bffFetch === null || bffFetch === void 0 ? void 0 : bffFetch('/recommend/list', { method: 'POST', body: query }));
777
786
  if (!(result === null || result === void 0 ? void 0 : result.success)) {
778
787
  return undefined;
779
788
  }
780
789
  setLoading(false);
781
- list = list.concat((_w = (_v = (_u = (_t = result === null || result === void 0 ? void 0 : result.data) === null || _t === void 0 ? void 0 : _t.recList) === null || _u === void 0 ? void 0 : _u.filter) === null || _v === void 0 ? void 0 : _v.call(_u, (item) => (item === null || item === void 0 ? void 0 : item.product) || (item === null || item === void 0 ? void 0 : item.video))) !== null && _w !== void 0 ? _w : []);
790
+ list = list.concat((_y = (_x = (_w = (_v = result === null || result === void 0 ? void 0 : result.data) === null || _v === void 0 ? void 0 : _v.recList) === null || _w === void 0 ? void 0 : _w.filter) === null || _x === void 0 ? void 0 : _x.call(_w, (item) => (item === null || item === void 0 ? void 0 : item.product) || (item === null || item === void 0 ? void 0 : item.video))) !== null && _y !== void 0 ? _y : []);
782
791
  setRtcList(getFilterRecList(Object.assign(Object.assign({}, result.data), { recList: list })));
783
792
  setCacheRtcList(getFilterRecList(Object.assign(Object.assign({}, result.data), { recList: list })));
784
- const isNotNullList = (_y = (_x = result === null || result === void 0 ? void 0 : result.data) === null || _x === void 0 ? void 0 : _x.recList) === null || _y === void 0 ? void 0 : _y.some((item) => (item === null || item === void 0 ? void 0 : item.product) || (item === null || item === void 0 ? void 0 : item.video));
793
+ const isNotNullList = (_0 = (_z = result === null || result === void 0 ? void 0 : result.data) === null || _z === void 0 ? void 0 : _z.recList) === null || _0 === void 0 ? void 0 : _0.some((item) => (item === null || item === void 0 ? void 0 : item.product) || (item === null || item === void 0 ? void 0 : item.video));
785
794
  if (isNotNullList) {
786
795
  pageNum = pageNum + 1;
787
796
  yield recurveRecList(query);
@@ -789,11 +798,11 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
789
798
  });
790
799
  yield recurveRecList(query);
791
800
  if (!(query === null || query === void 0 ? void 0 : query.hashTag) && result)
792
- setCurReqInfo({ rtc: (_j = result === null || result === void 0 ? void 0 : result.data) === null || _j === void 0 ? void 0 : _j.rtc, requestId: (_k = result === null || result === void 0 ? void 0 : result.data) === null || _k === void 0 ? void 0 : _k.requestId });
801
+ setCurReqInfo({ rtc: (_l = result === null || result === void 0 ? void 0 : result.data) === null || _l === void 0 ? void 0 : _l.rtc, requestId: (_m = result === null || result === void 0 ? void 0 : result.data) === null || _m === void 0 ? void 0 : _m.requestId });
793
802
  return Object.assign(Object.assign({}, result.data), { recList: list });
794
803
  }
795
804
  if (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enablePreview) {
796
- query = Object.assign(Object.assign({}, query), { directPage: true, level: 1, pageNum: (_l = query === null || query === void 0 ? void 0 : query.pageNum) !== null && _l !== void 0 ? _l : 1 });
805
+ 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 });
797
806
  }
798
807
  const result = yield (bffFetch === null || bffFetch === void 0 ? void 0 : bffFetch('/recommend/list', { method: 'POST', body: query }));
799
808
  if (!(result === null || result === void 0 ? void 0 : result.success)) {
@@ -803,27 +812,27 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
803
812
  setCurReqInfo({ rtc: result.data.rtc, requestId: result.data.requestId });
804
813
  if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enablePreview) && !isEditor) {
805
814
  let list = [];
806
- list = list.concat((_q = (_p = (_o = (_m = result === null || result === void 0 ? void 0 : result.data) === null || _m === void 0 ? void 0 : _m.recList) === null || _o === void 0 ? void 0 : _o.filter) === null || _p === void 0 ? void 0 : _p.call(_o, (item) => (item === null || item === void 0 ? void 0 : item.product) || (item === null || item === void 0 ? void 0 : item.video))) !== null && _q !== void 0 ? _q : []);
807
- const isNotNullList = (_s = (_r = result === null || result === void 0 ? void 0 : result.data) === null || _r === void 0 ? void 0 : _r.recList) === null || _s === void 0 ? void 0 : _s.some((item) => (item === null || item === void 0 ? void 0 : item.product) || (item === null || item === void 0 ? void 0 : item.video));
815
+ list = list.concat((_s = (_r = (_q = (_p = result === null || result === void 0 ? void 0 : result.data) === null || _p === void 0 ? void 0 : _p.recList) === null || _q === void 0 ? void 0 : _q.filter) === null || _r === void 0 ? void 0 : _r.call(_q, (item) => (item === null || item === void 0 ? void 0 : item.product) || (item === null || item === void 0 ? void 0 : item.video))) !== null && _s !== void 0 ? _s : []);
816
+ const isNotNullList = (_u = (_t = result === null || result === void 0 ? void 0 : result.data) === null || _t === void 0 ? void 0 : _t.recList) === null || _u === void 0 ? void 0 : _u.some((item) => (item === null || item === void 0 ? void 0 : item.product) || (item === null || item === void 0 ? void 0 : item.video));
808
817
  if (!isNotNullList) {
809
818
  setIsNoMoreData(true);
810
819
  }
811
820
  return Object.assign(Object.assign({}, result.data), { recList: list });
812
821
  }
813
822
  return result === null || result === void 0 ? void 0 : result.data;
814
- }), [bffFetch, utmVal, maxSize, defaultSize, channelQueryList]);
823
+ }), [bffFetch, utmVal, maxSize, defaultSize, channelQueryList, channel]);
815
824
  const loadVideos = React.useCallback((pageNum) => __awaiter(void 0, void 0, void 0, function* () {
816
- var _z, _0, _1, _2;
825
+ var _1, _2, _3, _4;
817
826
  if (rtcList.length <= 0) {
818
827
  return;
819
828
  }
820
829
  const lastItem = rtcList === null || rtcList === void 0 ? void 0 : rtcList[(rtcList === null || rtcList === void 0 ? void 0 : rtcList.length) - 1];
821
- const data = yield getRecommendVideos(Object.assign(Object.assign(Object.assign(Object.assign({ hashTag: waterFallData === null || waterFallData === void 0 ? void 0 : waterFallData.hashTag }, (((_z = lastItem === null || lastItem === void 0 ? void 0 : lastItem.product) === null || _z === void 0 ? void 0 : _z.itemId) && { productFilter: [(_0 = lastItem === null || lastItem === void 0 ? void 0 : lastItem.product) === null || _0 === void 0 ? void 0 : _0.itemId] })), (((_1 = lastItem === null || lastItem === void 0 ? void 0 : lastItem.video) === null || _1 === void 0 ? void 0 : _1.itemId) && { contentFilter: [(_2 = lastItem === null || lastItem === void 0 ? void 0 : lastItem.video) === null || _2 === void 0 ? void 0 : _2.itemId] })), { themeTag: themeTag.current }), ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enablePreview) && !isEditor && { pageNum })));
830
+ const data = yield getRecommendVideos(Object.assign(Object.assign(Object.assign(Object.assign({ hashTag: waterFallData === null || waterFallData === void 0 ? void 0 : waterFallData.hashTag }, (((_1 = lastItem === null || lastItem === void 0 ? void 0 : lastItem.product) === null || _1 === void 0 ? void 0 : _1.itemId) && { productFilter: [(_2 = lastItem === null || lastItem === void 0 ? void 0 : lastItem.product) === null || _2 === void 0 ? void 0 : _2.itemId] })), (((_3 = lastItem === null || lastItem === void 0 ? void 0 : lastItem.video) === null || _3 === void 0 ? void 0 : _3.itemId) && { contentFilter: [(_4 = lastItem === null || lastItem === void 0 ? void 0 : lastItem.video) === null || _4 === void 0 ? void 0 : _4.itemId] })), { themeTag: themeTag.current }), ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enablePreview) && !isEditor && { pageNum })));
822
831
  setRtcList(rtcList.concat(getFilterRecList(data)));
823
832
  setCacheRtcList(cacheRtcList.concat(getFilterRecList(data)));
824
833
  return data;
825
834
  }), [getRecommendVideos, rtcList, waterFallData, cacheRtcList]);
826
- const bffEventReport = React.useCallback(({ userInfo, eventInfo }) => {
835
+ const bffEventReport = React.useCallback(({ userInfo, eventInfo, reportLayId = true }) => {
827
836
  // 关闭 BFF 事件上报
828
837
  if (!enableReportEvent || (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enablePreview)) {
829
838
  return;
@@ -836,7 +845,7 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
836
845
  };
837
846
  }
838
847
  const sessionID = storeAndLoadFeSessionId();
839
- const ef = Object.assign(Object.assign(Object.assign(Object.assign({ sessionID, rtc: curReqInfo.rtc, requestId: curReqInfo.requestId }, eventInfo), (getDevice$1() && { sxpDevice: getDevice$1() })), (getSystem() && { sxpSystem: getSystem() })), (getBrowserInfo() && { sxpBrowser: getBrowserInfo() }));
848
+ const ef = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ sessionID, rtc: curReqInfo.rtc, requestId: curReqInfo.requestId }, eventInfo), (getDevice$1() && { sxpDevice: getDevice$1() })), (getSystem() && { sxpSystem: getSystem() })), (getBrowserInfo() && { sxpBrowser: getBrowserInfo() })), { playbookType: (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.playbook) === 'organic menu' ? 'organicMenu' : 'paidMedia' }), (layoutVariantId && reportLayId && { layoutVariantId }));
840
849
  const realUserInfo = Object.entries(userInfo).map(([k, v]) => ({ name: k, value: v }));
841
850
  const realEventInfo = Object.entries(ef)
842
851
  .map(([k, v]) => v && { name: k, value: v })
@@ -850,7 +859,7 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
850
859
  body: { userInfo: realUserInfo, eventInfo: realEventInfo },
851
860
  type: 'beacon'
852
861
  });
853
- }, [bffFetch, curReqInfo, enableReportEvent, globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enablePreview]);
862
+ }, [bffFetch, curReqInfo, enableReportEvent, globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enablePreview, layoutVariantId]);
854
863
  const bffFbReport = React.useCallback(({ eventName, product }) => {
855
864
  var _a, _b, _c, _d, _e;
856
865
  if (!enableReportEvent ||
@@ -935,23 +944,24 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
935
944
  return res === null || res === void 0 ? void 0 : res.success;
936
945
  }), [bffFetch]);
937
946
  // 获取 Tag
938
- const bffGetTagList = React.useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
939
- var _3, _4, _5, _6, _7;
947
+ const bffGetTagList = React.useCallback((data) => __awaiter(void 0, void 0, void 0, function* () {
948
+ var _5, _6, _7, _8, _9, _10, _11, _12;
949
+ const isShowTag = !!((_7 = (_6 = (_5 = data === null || data === void 0 ? void 0 : data.data) === null || _5 === void 0 ? void 0 : _5.sxpPageConf) === null || _6 === void 0 ? void 0 : _6.globalConfig) === null || _7 === void 0 ? void 0 : _7.isShowTag);
940
950
  if (!utmVal || !isShowTag)
941
951
  return;
942
952
  try {
943
- const val = (_5 = (_4 = (_3 = utmVal === null || utmVal === void 0 ? void 0 : utmVal.split('&')) === null || _3 === void 0 ? void 0 : _3.filter((val) => {
953
+ const val = (_10 = (_9 = (_8 = utmVal === null || utmVal === void 0 ? void 0 : utmVal.split('&')) === null || _8 === void 0 ? void 0 : _8.filter((val) => {
944
954
  var _a, _b;
945
955
  const key = val.split('=')[0];
946
956
  return (_b = ((_a = utmParameter === null || utmParameter === void 0 ? void 0 : utmParameter.channels) !== null && _a !== void 0 ? _a : [])) === null || _b === void 0 ? void 0 : _b.includes(key);
947
- })) === null || _4 === void 0 ? void 0 : _4.join('&')) !== null && _5 !== void 0 ? _5 : '';
957
+ })) === null || _9 === void 0 ? void 0 : _9.join('&')) !== null && _10 !== void 0 ? _10 : '';
948
958
  const result = yield (bffFetch === null || bffFetch === void 0 ? void 0 : bffFetch('/tag/list', { method: 'GET', query: { channel: decodeURIComponent(val) } }));
949
- setTagList((_7 = (_6 = result === null || result === void 0 ? void 0 : result.data) === null || _6 === void 0 ? void 0 : _6.tags) !== null && _7 !== void 0 ? _7 : []);
959
+ setTagList((_12 = (_11 = result === null || result === void 0 ? void 0 : result.data) === null || _11 === void 0 ? void 0 : _11.tags) !== null && _12 !== void 0 ? _12 : []);
950
960
  }
951
961
  catch (e) {
952
962
  console.log('e', e);
953
963
  }
954
- }), [bffFetch, utmVal, isShowTag]);
964
+ }), [bffFetch, utmVal]);
955
965
  const ctaEvent = React.useCallback((eventInfo, rec, product, position) => {
956
966
  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, _4, _5, _6, _7, _8, _9, _10, _11;
957
967
  const cta = product === null || product === void 0 ? void 0 : product.bindCta;
@@ -997,7 +1007,8 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
997
1007
  requestId: null,
998
1008
  enterUrl: (_b = (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.href) !== null && _b !== void 0 ? _b : '',
999
1009
  clSource: getVal('cl_source')
1000
- }
1010
+ },
1011
+ reportLayId: false
1001
1012
  });
1002
1013
  }, [bffEventReport]);
1003
1014
  React.useEffect(() => {
@@ -1008,46 +1019,65 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
1008
1019
  if (isShowConsent)
1009
1020
  return;
1010
1021
  setLoading(true);
1011
- bffGetTagList();
1022
+ let layId;
1012
1023
  getRecommendVideos()
1013
1024
  .then((data) => {
1025
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1014
1026
  if (data) {
1015
- setRtcList(getFilterRecList(data));
1016
- setCacheRtcList(getFilterRecList(data));
1027
+ const list = getFilterRecList(data);
1028
+ if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.playbook) === 'organic menu' && !channel) {
1029
+ list.unshift('organic menu');
1030
+ }
1031
+ setRtcList(list);
1032
+ setCacheRtcList(list);
1033
+ let curData;
1034
+ if (data === null || data === void 0 ? void 0 : data.layoutVariantId) {
1035
+ const id = (_b = (_a = data === null || data === void 0 ? void 0 : data.layoutVariantId) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[1];
1036
+ if (id) {
1037
+ layId = id;
1038
+ setLayoutVariantId(id);
1039
+ curData = dataList === null || dataList === void 0 ? void 0 : dataList.find((item) => (item === null || item === void 0 ? void 0 : item.id) === id);
1040
+ if (curData) {
1041
+ setPageData(curData);
1042
+ document.title = (_c = curData === null || curData === void 0 ? void 0 : curData.name) !== null && _c !== void 0 ? _c : 'home';
1043
+ setGlobalConfig((_d = curData === null || curData === void 0 ? void 0 : curData.data) === null || _d === void 0 ? void 0 : _d.globalConfig);
1044
+ onUpdateSchema === null || onUpdateSchema === void 0 ? void 0 : onUpdateSchema(curData === null || curData === void 0 ? void 0 : curData.data);
1045
+ if ((_k = (_j = (_h = (_g = (_f = (_e = curData === null || curData === void 0 ? void 0 : curData.data) === null || _e === void 0 ? void 0 : _e.globalConfig) === null || _f === void 0 ? void 0 : _f.consent) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.item) === null || _j === void 0 ? void 0 : _j.props) === null || _k === void 0 ? void 0 : _k.privacy_necessity)
1046
+ setShowConsent(true);
1047
+ }
1048
+ }
1049
+ }
1050
+ bffGetTagList(curData !== null && curData !== void 0 ? curData : pageData);
1017
1051
  }
1018
1052
  })
1019
1053
  .finally(() => {
1020
1054
  bffEventReport({
1021
- eventInfo: {
1022
- eventSubject: 'apiRequest',
1023
- eventDescription: 'api request succeed'
1024
- }
1055
+ eventInfo: Object.assign({ eventSubject: 'apiRequest', eventDescription: 'api request succeed' }, (layId && { layoutVariantId: layId }))
1025
1056
  });
1026
1057
  setLoading(false);
1027
1058
  });
1028
- }, [isShowConsent]);
1059
+ }, [isShowConsent, channel]);
1060
+ // cms预览
1029
1061
  React.useEffect(() => {
1030
1062
  if (!isPreview)
1031
1063
  return;
1032
1064
  setLoading(true);
1033
- bffGetTagList();
1065
+ bffGetTagList(pageData);
1034
1066
  getRecommendVideos()
1035
1067
  .then((data) => {
1036
1068
  if (data) {
1037
- setRtcList(getFilterRecList(data));
1038
- setCacheRtcList(getFilterRecList(data));
1069
+ const list = getFilterRecList(data);
1070
+ if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.playbook) === 'organic menu' && !channel) {
1071
+ list.unshift('organic menu');
1072
+ }
1073
+ setRtcList(list);
1074
+ setCacheRtcList(list);
1039
1075
  }
1040
1076
  })
1041
1077
  .finally(() => {
1042
- bffEventReport({
1043
- eventInfo: {
1044
- eventSubject: 'apiRequest',
1045
- eventDescription: 'api request succeed'
1046
- }
1047
- });
1048
1078
  setLoading(false);
1049
1079
  });
1050
- }, [getRecommendVideos, bffGetTagList]);
1080
+ }, [getRecommendVideos, bffGetTagList, channel]);
1051
1081
  const defaultLoadingImage = useIconLink('/pb_static/a65d23c5893c49d7aaaa81681d3179e2.gif', appDomain);
1052
1082
  return (React.createElement(SxpDataSourceContext.Provider, { value: {
1053
1083
  rtcList,
@@ -1060,7 +1090,6 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
1060
1090
  setPopupDetailData,
1061
1091
  getRecommendVideos,
1062
1092
  bffEventReport,
1063
- utmVal,
1064
1093
  isPreview,
1065
1094
  loading,
1066
1095
  sxpParameter,
@@ -1098,12 +1127,13 @@ const SxpDataSourceProvider = ({ render, dataSources, utmVal, enableReportEvent
1098
1127
  checkCommodityIndexRef,
1099
1128
  isEditor,
1100
1129
  isNoMoreData
1101
- } }, isShowConsent ? (React.createElement(Consent$4, Object.assign({}, (_c = (_b = (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.consent) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.item) === null || _c === void 0 ? void 0 : _c.props))) : (render({
1130
+ } }, isShowConsent ? (React.createElement(Consent$4, Object.assign({}, (_e = (_d = (_c = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.consent) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.item) === null || _e === void 0 ? void 0 : _e.props))) : (render({
1102
1131
  rtcList,
1103
1132
  mutateLike: bffMutateLike,
1104
1133
  mutateUnlike: bffMutateUnlike,
1105
1134
  submitForm: bffSubmitForm,
1106
- tagList
1135
+ tagList,
1136
+ pageData
1107
1137
  }))));
1108
1138
  };
1109
1139
  var SxpDataSourceProvider$1 = React.memo(SxpDataSourceProvider);
@@ -1226,6 +1256,7 @@ const EditorContext = React.createContext({
1226
1256
  });
1227
1257
  const EditorCore = React.forwardRef(({ children, resolver, isSsr, schema, enableDataSource = true, utmVal }, ref) => {
1228
1258
  const [currentNode, setCurrentNode] = React.useState(null);
1259
+ const [channel, setChannel] = React.useState();
1229
1260
  const [_schema, setSchema] = React.useState(schema || {
1230
1261
  pointData: [item],
1231
1262
  dataSource: [],
@@ -1246,6 +1277,9 @@ const EditorCore = React.forwardRef(({ children, resolver, isSsr, schema, enable
1246
1277
  const [undoStack, setUndoStack] = React.useState([[item]]);
1247
1278
  const [redoStack, setRedoStack] = React.useState([]);
1248
1279
  const [popup, setPopup] = React.useState(popupInit);
1280
+ const channelParams = React.useMemo(() => {
1281
+ return channel || utmVal;
1282
+ }, [channel, utmVal]);
1249
1283
  typeof window !== 'undefined' &&
1250
1284
  (window.sxpPopup = (type, aniType) => {
1251
1285
  setPopup(Object.assign(Object.assign(Object.assign({}, popupInit), { id: type }), aniType));
@@ -1254,10 +1288,10 @@ const EditorCore = React.forwardRef(({ children, resolver, isSsr, schema, enable
1254
1288
  (window.getJointUtmLink = (url) => {
1255
1289
  setSlideSkipState();
1256
1290
  if ((url === null || url === void 0 ? void 0 : url.indexOf('?')) !== -1) {
1257
- return url + (utmVal ? '&' + utmVal : '');
1291
+ return url + (channelParams ? '&' + channelParams : '');
1258
1292
  }
1259
1293
  else {
1260
- return url + (utmVal ? '?' + utmVal : '');
1294
+ return url + (channelParams ? '?' + channelParams : '');
1261
1295
  }
1262
1296
  });
1263
1297
  // 切换页面类型,清空操作栈
@@ -1325,7 +1359,9 @@ const EditorCore = React.forwardRef(({ children, resolver, isSsr, schema, enable
1325
1359
  setUndoStack,
1326
1360
  getCurPageConf,
1327
1361
  popup,
1328
- setPopup
1362
+ setPopup,
1363
+ channel,
1364
+ setChannel
1329
1365
  } },
1330
1366
  React.createElement(DataSourceProvider$1, { isSsr: isSsr, enable: enableDataSource }, children)));
1331
1367
  });
@@ -1335,7 +1371,7 @@ var index$2 = /*#__PURE__*/Object.freeze({
1335
1371
  EditorCore: EditorCore
1336
1372
  });
1337
1373
 
1338
- var interactionRender$f = [
1374
+ var interactionRender$g = [
1339
1375
  {
1340
1376
  title: '点击事件',
1341
1377
  child: [
@@ -1355,7 +1391,7 @@ var interactionRender$f = [
1355
1391
  * @FilePath: \pb-sxp-ui\src\materials\sxp\popup\AppointForm\settingRender.tsx
1356
1392
  *
1357
1393
  */
1358
- var settingRender$c = [
1394
+ var settingRender$d = [
1359
1395
  {
1360
1396
  title: '弹窗背景',
1361
1397
  child: [
@@ -1784,9 +1820,9 @@ const AppointForm = createMaterial(AppointFormComponent, {
1784
1820
  category: 'popup',
1785
1821
  type: 'AppointForm',
1786
1822
  related: {
1787
- settingRender: settingRender$c,
1823
+ settingRender: settingRender$d,
1788
1824
  bindableProps: [],
1789
- interactionRender: interactionRender$f
1825
+ interactionRender: interactionRender$g
1790
1826
  },
1791
1827
  defaulSetting: {
1792
1828
  name: '表单',
@@ -1809,7 +1845,7 @@ const AppointForm = createMaterial(AppointFormComponent, {
1809
1845
  sort: 2
1810
1846
  });
1811
1847
 
1812
- var settingRender$b = [
1848
+ var settingRender$c = [
1813
1849
  {
1814
1850
  title: '弹窗背景',
1815
1851
  child: [
@@ -10076,6 +10112,15 @@ const getMediaValueByMode = (obj) => {
10076
10112
  return file && file.length > 0 ? (_a = file[0]) === null || _a === void 0 ? void 0 : _a.url : null;
10077
10113
  }
10078
10114
  };
10115
+ const getBgStyle = (imgSrc) => {
10116
+ return imgSrc
10117
+ ? {
10118
+ backgroundImage: `url(${imgSrc})`,
10119
+ backgroundRepeat: 'no-repeat',
10120
+ backgroundSize: 'cover'
10121
+ }
10122
+ : '';
10123
+ };
10079
10124
  const getPriceText = ({ product, enableFormattedPrice, globalConfig, isHiddenDef, style }) => {
10080
10125
  var _a, _b, _c, _d, _e, _f, _g, _h;
10081
10126
  if ((!(product === null || product === void 0 ? void 0 : product.currency) || !(product === null || product === void 0 ? void 0 : product.price)) && isHiddenDef)
@@ -10370,7 +10415,7 @@ var CommodityDetailComponent = React.memo(CommodityDetail$1);
10370
10415
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLink\interactionRender.tsx
10371
10416
  *
10372
10417
  */
10373
- var interactionRender$e = [
10418
+ var interactionRender$f = [
10374
10419
  {
10375
10420
  title: '滑动事件',
10376
10421
  child: [
@@ -10397,8 +10442,8 @@ const CommodityDetail = createMaterial(CommodityDetailComponent, {
10397
10442
  category: 'popup',
10398
10443
  type: 'CommodityDetail',
10399
10444
  related: {
10400
- settingRender: settingRender$b,
10401
- interactionRender: interactionRender$e
10445
+ settingRender: settingRender$c,
10446
+ interactionRender: interactionRender$f
10402
10447
  },
10403
10448
  defaulSetting: {
10404
10449
  props: {
@@ -10453,7 +10498,7 @@ const CommodityDetail = createMaterial(CommodityDetailComponent, {
10453
10498
  sort: 1
10454
10499
  });
10455
10500
 
10456
- var interactionRender$d = [
10501
+ var interactionRender$e = [
10457
10502
  {
10458
10503
  title: '点击事件',
10459
10504
  child: [
@@ -10473,7 +10518,7 @@ var interactionRender$d = [
10473
10518
  * @FilePath: \pb-sxp-ui\src\materials\sxp\popup\Prompt\settingRender.tsx
10474
10519
  *
10475
10520
  */
10476
- var settingRender$a = [
10521
+ var settingRender$b = [
10477
10522
  {
10478
10523
  title: '弹窗背景',
10479
10524
  child: [
@@ -10653,9 +10698,9 @@ const Prompt = createMaterial(PromptComponent, {
10653
10698
  category: 'popup',
10654
10699
  type: 'Prompt',
10655
10700
  related: {
10656
- settingRender: settingRender$a,
10701
+ settingRender: settingRender$b,
10657
10702
  bindableProps: [],
10658
- interactionRender: interactionRender$d
10703
+ interactionRender: interactionRender$e
10659
10704
  },
10660
10705
  defaulSetting: {
10661
10706
  props: {
@@ -10678,7 +10723,7 @@ const Prompt = createMaterial(PromptComponent, {
10678
10723
  * @FilePath: \pb-sxp-ui\src\materials\sxp\popup\CommodityDetailDiroNew\settingRender.tsx
10679
10724
  *
10680
10725
  */
10681
- var settingRender$9 = [
10726
+ var settingRender$a = [
10682
10727
  {
10683
10728
  title: '弹窗背景',
10684
10729
  child: [
@@ -11330,7 +11375,7 @@ var CommodityDetailDiroNewComponent = React.memo(CommodityDetailDiroNew$1);
11330
11375
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLink\interactionRender.tsx
11331
11376
  *
11332
11377
  */
11333
- var interactionRender$c = [
11378
+ var interactionRender$d = [
11334
11379
  {
11335
11380
  title: '滑动事件',
11336
11381
  child: [
@@ -11357,8 +11402,8 @@ const CommodityDetailDiroNew = createMaterial(CommodityDetailDiroNewComponent, {
11357
11402
  category: 'popup',
11358
11403
  type: 'CommodityDetailDiroNew',
11359
11404
  related: {
11360
- settingRender: settingRender$9,
11361
- interactionRender: interactionRender$c
11405
+ settingRender: settingRender$a,
11406
+ interactionRender: interactionRender$d
11362
11407
  },
11363
11408
  defaulSetting: {
11364
11409
  props: {
@@ -11421,7 +11466,7 @@ const CommodityDetailDiroNew = createMaterial(CommodityDetailDiroNewComponent, {
11421
11466
  * @FilePath: \pb-sxp-ui\src\materials\sxp\popup\CommodityList\settingRender.tsx
11422
11467
  *
11423
11468
  */
11424
- var settingRender$8 = [
11469
+ var settingRender$9 = [
11425
11470
  {
11426
11471
  title: '弹窗背景',
11427
11472
  child: [
@@ -11831,7 +11876,7 @@ var CommodityListComponent = React.memo(CommodityList$1);
11831
11876
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLink\interactionRender.tsx
11832
11877
  *
11833
11878
  */
11834
- var interactionRender$b = [
11879
+ var interactionRender$c = [
11835
11880
  {
11836
11881
  title: '点击事件',
11837
11882
  child: [
@@ -11858,8 +11903,8 @@ const CommodityList = createMaterial(CommodityListComponent, {
11858
11903
  category: 'popup',
11859
11904
  type: 'CommodityList',
11860
11905
  related: {
11861
- settingRender: settingRender$8,
11862
- interactionRender: interactionRender$b
11906
+ settingRender: settingRender$9,
11907
+ interactionRender: interactionRender$c
11863
11908
  },
11864
11909
  defaulSetting: {
11865
11910
  props: {
@@ -11907,7 +11952,7 @@ const CommodityList = createMaterial(CommodityListComponent, {
11907
11952
  * @FilePath: \pb-sxp-ui\src\materials\sxp\popup\Iframe\settingRender.tsx
11908
11953
  *
11909
11954
  */
11910
- var settingRender$7 = [
11955
+ var settingRender$8 = [
11911
11956
  {
11912
11957
  title: '背景样式',
11913
11958
  child: [
@@ -11941,7 +11986,7 @@ const Iframe = createMaterial(IframeComponent, {
11941
11986
  category: 'popup',
11942
11987
  type: 'Iframe',
11943
11988
  related: {
11944
- settingRender: settingRender$7,
11989
+ settingRender: settingRender$8,
11945
11990
  bindableProps: []
11946
11991
  },
11947
11992
  defaulSetting: {
@@ -11961,7 +12006,7 @@ const Iframe = createMaterial(IframeComponent, {
11961
12006
  * @FilePath: \pb-sxp-ui\src\materials\sxp\popup\ConsentDetail\settingRender.tsx
11962
12007
  *
11963
12008
  */
11964
- var settingRender$6 = [
12009
+ var settingRender$7 = [
11965
12010
  {
11966
12011
  title: '弹窗文本',
11967
12012
  child: [
@@ -11989,7 +12034,7 @@ const ConsentDetail = createMaterial(ConsentDetailComponent, {
11989
12034
  category: 'popup',
11990
12035
  type: 'ConsentDetail',
11991
12036
  related: {
11992
- settingRender: settingRender$6,
12037
+ settingRender: settingRender$7,
11993
12038
  bindableProps: []
11994
12039
  },
11995
12040
  defaulSetting: {
@@ -12009,7 +12054,7 @@ const ConsentDetail = createMaterial(ConsentDetailComponent, {
12009
12054
  * @FilePath: \pb-sxp-ui\src\materials\sxp\template\components\settingRender.tsx
12010
12055
  *
12011
12056
  */
12012
- var settingRender$5 = [
12057
+ var settingRender$6 = [
12013
12058
  {
12014
12059
  title: '主题样式',
12015
12060
  child: [
@@ -12266,7 +12311,7 @@ var settingRender$5 = [
12266
12311
  }
12267
12312
  ];
12268
12313
 
12269
- var interactionRender$a = [
12314
+ var interactionRender$b = [
12270
12315
  {
12271
12316
  title: '点击事件',
12272
12317
  child: [
@@ -12361,9 +12406,9 @@ const Commodity = createMaterial(CommodityComponent, {
12361
12406
  category: 'template',
12362
12407
  type: 'Commodity',
12363
12408
  related: {
12364
- interactionRender: interactionRender$a,
12409
+ interactionRender: interactionRender$b,
12365
12410
  bindableProps: [],
12366
- settingRender: settingRender$5
12411
+ settingRender: settingRender$6
12367
12412
  },
12368
12413
  defaulSetting: {
12369
12414
  props: {
@@ -12403,7 +12448,7 @@ const Commodity = createMaterial(CommodityComponent, {
12403
12448
  sort: 1
12404
12449
  });
12405
12450
 
12406
- var interactionRender$9 = [
12451
+ var interactionRender$a = [
12407
12452
  {
12408
12453
  title: '点击事件',
12409
12454
  child: [
@@ -12444,8 +12489,8 @@ const Appoint = createMaterial(AppointComponent, {
12444
12489
  category: 'template',
12445
12490
  type: 'Appoint',
12446
12491
  related: {
12447
- interactionRender: interactionRender$9,
12448
- settingRender: settingRender$5 === null || settingRender$5 === void 0 ? void 0 : settingRender$5.filter((i) => i.type !== 'commodityTitle'),
12492
+ interactionRender: interactionRender$a,
12493
+ settingRender: settingRender$6 === null || settingRender$6 === void 0 ? void 0 : settingRender$6.filter((i) => i.type !== 'commodityTitle'),
12449
12494
  bindableProps: []
12450
12495
  },
12451
12496
  defaulSetting: {
@@ -12632,7 +12677,7 @@ var LinkComponent = React.memo(Link$1);
12632
12677
  * @FilePath: \pb-sxp-ui\src\materials\sxp\template\Link\interactionRender.tsx
12633
12678
  *
12634
12679
  */
12635
- var interactionRender$8 = [
12680
+ var interactionRender$9 = [
12636
12681
  {
12637
12682
  title: '点击事件',
12638
12683
  child: [
@@ -12652,9 +12697,9 @@ const Link = createMaterial(LinkComponent, {
12652
12697
  category: 'template',
12653
12698
  type: 'Link',
12654
12699
  related: {
12655
- settingRender: (_a = settingRender$5 === null || settingRender$5 === void 0 ? void 0 : settingRender$5.filter((i) => i.type !== 'commodityTitle')) === null || _a === void 0 ? void 0 : _a.concat(linkSettingRender),
12700
+ settingRender: (_a = settingRender$6 === null || settingRender$6 === void 0 ? void 0 : settingRender$6.filter((i) => i.type !== 'commodityTitle')) === null || _a === void 0 ? void 0 : _a.concat(linkSettingRender),
12656
12701
  bindableProps: [],
12657
- interactionRender: interactionRender$8
12702
+ interactionRender: interactionRender$9
12658
12703
  },
12659
12704
  defaulSetting: {
12660
12705
  props: {
@@ -12700,7 +12745,7 @@ const Link = createMaterial(LinkComponent, {
12700
12745
  sort: 5
12701
12746
  });
12702
12747
 
12703
- var interactionRender$7 = [
12748
+ var interactionRender$8 = [
12704
12749
  {
12705
12750
  title: '点击事件',
12706
12751
  child: [
@@ -12754,8 +12799,8 @@ const CommodityDiro = createMaterial(CommodityDiroComponent, {
12754
12799
  category: 'template',
12755
12800
  type: 'CommodityDiro',
12756
12801
  related: {
12757
- interactionRender: interactionRender$7,
12758
- settingRender: settingRender$5,
12802
+ interactionRender: interactionRender$8,
12803
+ settingRender: settingRender$6,
12759
12804
  bindableProps: []
12760
12805
  },
12761
12806
  defaulSetting: {
@@ -12796,7 +12841,7 @@ const CommodityDiro = createMaterial(CommodityDiroComponent, {
12796
12841
  sort: 2
12797
12842
  });
12798
12843
 
12799
- var interactionRender$6 = [
12844
+ var interactionRender$7 = [
12800
12845
  {
12801
12846
  title: '点击事件',
12802
12847
  child: [
@@ -12850,9 +12895,9 @@ const CommodityDiroNew = createMaterial(CommodityDiroNewComponent, {
12850
12895
  category: 'template',
12851
12896
  type: 'CommodityDiroNew',
12852
12897
  related: {
12853
- interactionRender: interactionRender$6,
12898
+ interactionRender: interactionRender$7,
12854
12899
  bindableProps: [],
12855
- settingRender: settingRender$5
12900
+ settingRender: settingRender$6
12856
12901
  },
12857
12902
  defaulSetting: {
12858
12903
  props: {
@@ -12893,7 +12938,7 @@ const CommodityDiroNew = createMaterial(CommodityDiroNewComponent, {
12893
12938
  sort: 2
12894
12939
  });
12895
12940
 
12896
- var interactionRender$5 = [
12941
+ var interactionRender$6 = [
12897
12942
  {
12898
12943
  title: '点击事件',
12899
12944
  child: [
@@ -12950,9 +12995,9 @@ const MultiCommodityDiro = createMaterial(MultiCommodityDiroComponent, {
12950
12995
  category: 'template',
12951
12996
  type: 'MultiCommodityDiro',
12952
12997
  related: {
12953
- interactionRender: interactionRender$5,
12998
+ interactionRender: interactionRender$6,
12954
12999
  bindableProps: [],
12955
- settingRender: settingRender$5
13000
+ settingRender: settingRender$6
12956
13001
  },
12957
13002
  defaulSetting: {
12958
13003
  props: {
@@ -12992,7 +13037,7 @@ const MultiCommodityDiro = createMaterial(MultiCommodityDiroComponent, {
12992
13037
  sort: 4
12993
13038
  });
12994
13039
 
12995
- var interactionRender$4 = [
13040
+ var interactionRender$5 = [
12996
13041
  {
12997
13042
  title: '点击事件',
12998
13043
  child: [
@@ -13049,8 +13094,8 @@ const MultiCommodity = createMaterial(MultiCommodityComponent, {
13049
13094
  category: 'template',
13050
13095
  type: 'MultiCommodity',
13051
13096
  related: {
13052
- interactionRender: interactionRender$4,
13053
- settingRender: settingRender$5,
13097
+ interactionRender: interactionRender$5,
13098
+ settingRender: settingRender$6,
13054
13099
  bindableProps: []
13055
13100
  },
13056
13101
  defaulSetting: {
@@ -13099,7 +13144,7 @@ const MultiCommodity = createMaterial(MultiCommodityComponent, {
13099
13144
  * @FilePath: \pb-sxp-ui\src\materials\sxp\template\MultiCommodityDiroNew\interactionRender.tsx
13100
13145
  *
13101
13146
  */
13102
- var interactionRender$3 = [
13147
+ var interactionRender$4 = [
13103
13148
  {
13104
13149
  title: '点击事件',
13105
13150
  child: [
@@ -13157,9 +13202,9 @@ const MultiCommodityDiroNew = createMaterial(MultiCommodityDiroNewComponent, {
13157
13202
  category: 'template',
13158
13203
  type: 'MultiCommodityDiroNew',
13159
13204
  related: {
13160
- interactionRender: interactionRender$3,
13205
+ interactionRender: interactionRender$4,
13161
13206
  bindableProps: [],
13162
- settingRender: settingRender$5
13207
+ settingRender: settingRender$6
13163
13208
  },
13164
13209
  defaulSetting: {
13165
13210
  props: {
@@ -13208,7 +13253,7 @@ const MultiCommodityDiroNew = createMaterial(MultiCommodityDiroNewComponent, {
13208
13253
  * @FilePath: \pb-sxp-ui\src\materials\sxp\HashTag\settingRender.tsx
13209
13254
  *
13210
13255
  */
13211
- var settingRender$4 = [
13256
+ var settingRender$5 = [
13212
13257
  {
13213
13258
  title: 'Banner',
13214
13259
  child: [
@@ -15443,7 +15488,7 @@ const HashTag = createMaterial(HashTagComponent, {
15443
15488
  category: 'base',
15444
15489
  type: 'HashTag',
15445
15490
  related: {
15446
- settingRender: settingRender$4,
15491
+ settingRender: settingRender$5,
15447
15492
  bindableProps: []
15448
15493
  },
15449
15494
  defaulSetting: {
@@ -15508,7 +15553,7 @@ const HashTag = createMaterial(HashTagComponent, {
15508
15553
  * @FilePath: \pb-sxp-ui\src\materials\sxp\Consent\settingRender.tsx
15509
15554
  *
15510
15555
  */
15511
- var settingRender$3 = [
15556
+ var settingRender$4 = [
15512
15557
  {
15513
15558
  title: '协议详情',
15514
15559
  child: [
@@ -15567,7 +15612,7 @@ const Consent$1 = createMaterial(ConsentComponent, {
15567
15612
  category: 'base',
15568
15613
  type: 'Consent',
15569
15614
  related: {
15570
- settingRender: settingRender$3
15615
+ settingRender: settingRender$4
15571
15616
  },
15572
15617
  defaulSetting: {
15573
15618
  props: {},
@@ -15586,7 +15631,7 @@ const Consent$1 = createMaterial(ConsentComponent, {
15586
15631
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLink\settingRender.tsx
15587
15632
  *
15588
15633
  */
15589
- var settingRender$2 = [
15634
+ var settingRender$3 = [
15590
15635
  {
15591
15636
  title: '主题样式',
15592
15637
  child: [
@@ -15782,7 +15827,7 @@ var AniLinkComponent = React.memo(AniLink$1);
15782
15827
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLink\interactionRender.tsx
15783
15828
  *
15784
15829
  */
15785
- var interactionRender$2 = [
15830
+ var interactionRender$3 = [
15786
15831
  {
15787
15832
  title: '点击事件',
15788
15833
  child: [
@@ -15847,9 +15892,9 @@ const AniLink = createMaterial(AniLinkComponent, {
15847
15892
  category: 'cta',
15848
15893
  type: 'AniLink',
15849
15894
  related: {
15850
- settingRender: settingRender$2,
15895
+ settingRender: settingRender$3,
15851
15896
  bindableProps: [],
15852
- interactionRender: interactionRender$2
15897
+ interactionRender: interactionRender$3
15853
15898
  },
15854
15899
  defaulSetting: {
15855
15900
  props: {
@@ -15891,7 +15936,7 @@ const AniLink = createMaterial(AniLinkComponent, {
15891
15936
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLinkPopup\settingRender.tsx
15892
15937
  *
15893
15938
  */
15894
- var settingRender$1 = [
15939
+ var settingRender$2 = [
15895
15940
  {
15896
15941
  title: '主题样式',
15897
15942
  child: [
@@ -16227,7 +16272,7 @@ var AniLinkPopupComponent = React.memo(AniLinkPopup$1);
16227
16272
  * @FilePath: \pb-sxp-ui\src\materials\sxp\cta\AniLinkPopup\interactionRender.tsx
16228
16273
  *
16229
16274
  */
16230
- var interactionRender$1 = [
16275
+ var interactionRender$2 = [
16231
16276
  {
16232
16277
  title: '点击事件',
16233
16278
  child: [
@@ -16295,9 +16340,9 @@ const AniLinkPopup = createMaterial(AniLinkPopupComponent, {
16295
16340
  category: 'cta',
16296
16341
  type: 'AniLinkPopup',
16297
16342
  related: {
16298
- settingRender: settingRender$1,
16343
+ settingRender: settingRender$2,
16299
16344
  bindableProps: [],
16300
- interactionRender: interactionRender$1
16345
+ interactionRender: interactionRender$2
16301
16346
  },
16302
16347
  defaulSetting: {
16303
16348
  props: {
@@ -16353,7 +16398,7 @@ const AniLinkPopup = createMaterial(AniLinkPopupComponent, {
16353
16398
  * @FilePath: \pb-sxp-ui\src\materials\sxp\consentPopup\Display\interactionRender.tsx
16354
16399
  *
16355
16400
  */
16356
- var interactionRender = [
16401
+ var interactionRender$1 = [
16357
16402
  {
16358
16403
  title: '点击详情按钮',
16359
16404
  child: [
@@ -16374,7 +16419,7 @@ var interactionRender = [
16374
16419
  * @FilePath: \pb-sxp-ui\src\materials\sxp\consentPopup\Display\settingRender.tsx
16375
16420
  *
16376
16421
  */
16377
- var settingRender = [
16422
+ var settingRender$1 = [
16378
16423
  {
16379
16424
  title: '全局设置',
16380
16425
  child: [
@@ -16529,6 +16574,7 @@ const EditorDataProvider = ({ children, data }) => {
16529
16574
  const [openHashtag, setOpenHashtag] = React.useState(false);
16530
16575
  const [openConsent, setOpenConsent] = React.useState(false);
16531
16576
  const [consentPopupCate, setConsentPopupCate] = React.useState('');
16577
+ const [openMultiPosts, setOpenMultiPosts] = React.useState(false);
16532
16578
  return (React.createElement(EditorDataContext.Provider, { value: {
16533
16579
  sxpPrameter: {
16534
16580
  bottomImage: (_a = data === null || data === void 0 ? void 0 : data.sxp_parameter) === null || _a === void 0 ? void 0 : _a.bottom_image,
@@ -16553,7 +16599,9 @@ const EditorDataProvider = ({ children, data }) => {
16553
16599
  sxpFontLinks: data === null || data === void 0 ? void 0 : data.sxpFontLinks,
16554
16600
  utmParameter: data === null || data === void 0 ? void 0 : data.utm_parameter,
16555
16601
  consentPopupCate,
16556
- setConsentPopupCate
16602
+ setConsentPopupCate,
16603
+ openMultiPosts,
16604
+ setOpenMultiPosts
16557
16605
  } }, children));
16558
16606
  };
16559
16607
  function useEditorDataProvider() {
@@ -16613,9 +16661,9 @@ const Display = createMaterial(DisplayComponent, {
16613
16661
  category: 'consentPopup',
16614
16662
  type: 'Display',
16615
16663
  related: {
16616
- settingRender,
16664
+ settingRender: settingRender$1,
16617
16665
  bindableProps: [],
16618
- interactionRender
16666
+ interactionRender: interactionRender$1
16619
16667
  },
16620
16668
  defaulSetting: {
16621
16669
  props: {
@@ -16644,6 +16692,299 @@ const Display = createMaterial(DisplayComponent, {
16644
16692
  sort: 1
16645
16693
  });
16646
16694
 
16695
+ /*
16696
+ * @Author: binruan@chatlabs.com
16697
+ * @Date: 2024-06-13 10:08:32
16698
+ * @LastEditors: binruan@chatlabs.com
16699
+ * @LastEditTime: 2024-11-26 11:42:08
16700
+ * @FilePath: \pb-sxp-ui\src\materials\sxp\MultiPosts\settingRender.tsx
16701
+ *
16702
+ */
16703
+ var settingRender = [
16704
+ {
16705
+ title: '背景设置',
16706
+ child: [
16707
+ {
16708
+ label: '背景图',
16709
+ type: 'Upload',
16710
+ name: ['props', 'bgImgUrl']
16711
+ },
16712
+ {
16713
+ type: 'Group',
16714
+ label: '返回按钮',
16715
+ child: [
16716
+ {
16717
+ type: 'Switch',
16718
+ name: ['props', 'backButton', 'enable']
16719
+ },
16720
+ {
16721
+ type: 'Upload',
16722
+ name: ['props', 'backButton', 'icon'],
16723
+ text: '建议尺寸:100 * 76'
16724
+ }
16725
+ ]
16726
+ },
16727
+ {
16728
+ type: 'Group',
16729
+ label: '',
16730
+ child: [
16731
+ {
16732
+ type: 'Select',
16733
+ name: ['props', 'backButton', 'xPosit'],
16734
+ options: [
16735
+ {
16736
+ label: '相对左侧',
16737
+ value: 'left'
16738
+ },
16739
+ {
16740
+ label: '相对右侧',
16741
+ value: 'right'
16742
+ }
16743
+ ],
16744
+ initialValue: 'left'
16745
+ },
16746
+ {
16747
+ type: 'Number',
16748
+ name: ['props', 'backButton', 'x'],
16749
+ addonAfter: 'X'
16750
+ }
16751
+ ]
16752
+ },
16753
+ {
16754
+ type: 'Group',
16755
+ label: '',
16756
+ child: [
16757
+ {
16758
+ type: 'Select',
16759
+ name: ['props', 'backButton', 'yPosit'],
16760
+ options: [
16761
+ {
16762
+ label: '相对底部',
16763
+ value: 'bottom'
16764
+ },
16765
+ {
16766
+ label: '相对顶部',
16767
+ value: 'top'
16768
+ }
16769
+ ],
16770
+ initialValue: 'top'
16771
+ },
16772
+ {
16773
+ type: 'Number',
16774
+ name: ['props', 'backButton', 'y'],
16775
+ addonAfter: 'Y',
16776
+ initialValue: 0
16777
+ }
16778
+ ]
16779
+ }
16780
+ ]
16781
+ },
16782
+ {
16783
+ title: '按钮设置',
16784
+ child: [
16785
+ {
16786
+ type: 'Group',
16787
+ child: [
16788
+ {
16789
+ type: 'Upload',
16790
+ name: ['props', 'button1Url'],
16791
+ text: '按钮1'
16792
+ },
16793
+ {
16794
+ type: 'Upload',
16795
+ name: ['props', 'button2Url'],
16796
+ text: '按钮2'
16797
+ }
16798
+ ]
16799
+ },
16800
+ {
16801
+ type: 'Group',
16802
+ child: [
16803
+ {
16804
+ type: 'Upload',
16805
+ name: ['props', 'button3Url'],
16806
+ text: '按钮3'
16807
+ },
16808
+ {
16809
+ type: 'Upload',
16810
+ name: ['props', 'button4Url'],
16811
+ text: '按钮4'
16812
+ }
16813
+ ]
16814
+ }
16815
+ ]
16816
+ }
16817
+ ];
16818
+
16819
+ const MultiPosts$1 = (_a) => {
16820
+ var _b, _c;
16821
+ var { bgImgUrl, style, recData } = _a, props = __rest(_a, ["bgImgUrl", "style", "recData"]);
16822
+ const { setChannel } = useEditor();
16823
+ const { bffEventReport, curTime } = useSxpDataSource();
16824
+ const { isActive } = useSwiperSlide();
16825
+ const initRef = React.useRef(false);
16826
+ const viewTime = React.useRef();
16827
+ const traceinfo = (_c = (_b = recData === null || recData === void 0 ? void 0 : recData.video) === null || _b === void 0 ? void 0 : _b.traceInfo) !== null && _c !== void 0 ? _c : '';
16828
+ const getPropsVal = React.useCallback((index, str) => {
16829
+ try {
16830
+ return new Function('props', 'str', `if (str) {
16831
+ return props?.button${index + 1}${str}
16832
+ } else {
16833
+ return props?.button${index + 1}
16834
+ }`)(props, str);
16835
+ }
16836
+ catch (_a) { }
16837
+ }, [props]);
16838
+ const handleClick = React.useCallback((index) => {
16839
+ const v = getPropsVal(index);
16840
+ const value = v === null || v === void 0 ? void 0 : v.value;
16841
+ if (!value)
16842
+ return;
16843
+ bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
16844
+ eventInfo: {
16845
+ eventSubject: 'multiPostClick',
16846
+ eventDescription: 'multiPostClick',
16847
+ traceinfo,
16848
+ branchfeed: (v === null || v === void 0 ? void 0 : v.linkType) === 'recommendFlow' && value ? value : ''
16849
+ }
16850
+ });
16851
+ if ((v === null || v === void 0 ? void 0 : v.linkType) === 'recommendFlow') {
16852
+ endMultiPost('multipostClick');
16853
+ setChannel === null || setChannel === void 0 ? void 0 : setChannel(value);
16854
+ curTime.current = new Date();
16855
+ }
16856
+ else {
16857
+ new Function(value)();
16858
+ }
16859
+ }, [props]);
16860
+ const startMultiPost = React.useCallback(() => {
16861
+ viewTime.current = new Date();
16862
+ bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
16863
+ eventInfo: {
16864
+ eventSubject: 'startMultiPost',
16865
+ eventDescription: 'startMultiPost',
16866
+ contentFormat: 'IMAGE',
16867
+ position: '0',
16868
+ traceinfo
16869
+ }
16870
+ });
16871
+ }, []);
16872
+ const endMultiPost = React.useCallback((nextStep) => {
16873
+ bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
16874
+ eventInfo: {
16875
+ eventSubject: 'endMultiPost',
16876
+ eventDescription: 'endMultiPost',
16877
+ contentFormat: 'IMAGE',
16878
+ position: '0',
16879
+ traceinfo,
16880
+ nextStep: nextStep || 'others',
16881
+ timeOnSite: Math.floor((new Date() - (viewTime === null || viewTime === void 0 ? void 0 : viewTime.current)) / 1000) + ''
16882
+ }
16883
+ });
16884
+ }, []);
16885
+ React.useEffect(() => {
16886
+ if (isActive) {
16887
+ startMultiPost();
16888
+ initRef.current = true;
16889
+ }
16890
+ else if (initRef.current) {
16891
+ endMultiPost();
16892
+ }
16893
+ }, [isActive]);
16894
+ React.useEffect(() => {
16895
+ const onShow = () => startMultiPost();
16896
+ const onHide = () => endMultiPost();
16897
+ SXP_EVENT_BUS.on(SXP_EVENT_TYPE.PAGE_DID_SHOW, onShow);
16898
+ SXP_EVENT_BUS.on(SXP_EVENT_TYPE.PAGE_DID_HIDE, onHide);
16899
+ return () => {
16900
+ SXP_EVENT_BUS.off(SXP_EVENT_TYPE.PAGE_DID_SHOW, onShow);
16901
+ SXP_EVENT_BUS.off(SXP_EVENT_TYPE.PAGE_DID_HIDE, onHide);
16902
+ };
16903
+ }, [isActive]);
16904
+ return (React.createElement("div", { className: 'multiposts', style: Object.assign(Object.assign({}, style), getBgStyle(bgImgUrl)) }, Array.from({ length: 4 }, (_, index) => {
16905
+ return (React.createElement("button", { className: 'multiposts-btn', role: 'button', "aria-label": `multiposts-${index + 1}`, onClick: () => handleClick(index) },
16906
+ React.createElement("img", { className: 'multiposts-btn-img', src: getPropsVal(index, 'Url'), alt: `multiposts-img-${index + 1}` })));
16907
+ })));
16908
+ };
16909
+ var MultiPosts$2 = React.memo(MultiPosts$1);
16910
+
16911
+ /*
16912
+ * @Author: binruan@chatlabs.com
16913
+ * @Date: 2024-11-22 13:58:29
16914
+ * @LastEditors: binruan@chatlabs.com
16915
+ * @LastEditTime: 2024-11-22 17:21:09
16916
+ * @FilePath: \pb-sxp-ui\src\materials\sxp\MultiPosts\interactionRender.tsx
16917
+ *
16918
+ */
16919
+ var interactionRender = [
16920
+ {
16921
+ title: '按钮1点击事件',
16922
+ child: [
16923
+ {
16924
+ type: 'link',
16925
+ name: 'button1',
16926
+ isMultiPosts: true
16927
+ }
16928
+ ]
16929
+ },
16930
+ {
16931
+ title: '按钮2点击事件',
16932
+ child: [
16933
+ {
16934
+ type: 'link',
16935
+ name: 'button2',
16936
+ isMultiPosts: true
16937
+ }
16938
+ ]
16939
+ },
16940
+ {
16941
+ title: '按钮3点击事件',
16942
+ child: [
16943
+ {
16944
+ type: 'link',
16945
+ name: 'button3',
16946
+ isMultiPosts: true
16947
+ }
16948
+ ]
16949
+ },
16950
+ {
16951
+ title: '按钮4点击事件',
16952
+ child: [
16953
+ {
16954
+ type: 'link',
16955
+ name: 'button4',
16956
+ isMultiPosts: true
16957
+ }
16958
+ ]
16959
+ }
16960
+ ];
16961
+
16962
+ /*
16963
+ * @Author: binruan@chatlabs.com
16964
+ * @Date: 2023-07-28 18:29:57
16965
+ * @LastEditors: binruan@chatlabs.com
16966
+ * @LastEditTime: 2024-11-22 13:58:46
16967
+ * @FilePath: \pb-sxp-ui\src\materials\sxp\MultiPosts\material.tsx
16968
+ *
16969
+ */
16970
+ const MultiPosts = createMaterial(MultiPosts$2, {
16971
+ displayName: 'MultiPosts',
16972
+ icon: '',
16973
+ category: 'base',
16974
+ type: 'MultiPosts',
16975
+ related: {
16976
+ settingRender,
16977
+ interactionRender
16978
+ },
16979
+ defaulSetting: {
16980
+ props: {},
16981
+ style: {}
16982
+ },
16983
+ w: 100,
16984
+ h: 40,
16985
+ sort: 1
16986
+ });
16987
+
16647
16988
  /*
16648
16989
  * @Author: binruan@chatlabs.com
16649
16990
  * @Date: 2023-07-25 14:56:49
@@ -16674,6 +17015,7 @@ var _materials_ = /*#__PURE__*/Object.freeze({
16674
17015
  MultiCommodity: MultiCommodity,
16675
17016
  MultiCommodityDiro: MultiCommodityDiro,
16676
17017
  MultiCommodityDiroNew: MultiCommodityDiroNew,
17018
+ MultiPosts: MultiPosts,
16677
17019
  Prompt: Prompt
16678
17020
  });
16679
17021
 
@@ -17258,6 +17600,8 @@ const PictureGroup$2 = ({ imgUrls, width, height, rec, index, onViewImageEndEven
17258
17600
  // return <img src={sxpParameter?.placeholder_image} style={{ width, height, objectFit: 'cover' }} />;
17259
17601
  // }
17260
17602
  React.useEffect(() => {
17603
+ if (!isActive)
17604
+ return;
17261
17605
  const onShow = () => onViewImageStartEvent(index, imgInfo);
17262
17606
  const onHide = () => onViewImageEndEvent(rec);
17263
17607
  SXP_EVENT_BUS.on(SXP_EVENT_TYPE.PAGE_DID_SHOW, onShow);
@@ -17266,7 +17610,7 @@ const PictureGroup$2 = ({ imgUrls, width, height, rec, index, onViewImageEndEven
17266
17610
  SXP_EVENT_BUS.off(SXP_EVENT_TYPE.PAGE_DID_SHOW, onShow);
17267
17611
  SXP_EVENT_BUS.off(SXP_EVENT_TYPE.PAGE_DID_HIDE, onHide);
17268
17612
  };
17269
- }, [imgInfo]);
17613
+ }, [isActive, imgInfo]);
17270
17614
  const handleMouseEnter = React.useCallback(() => {
17271
17615
  if (swiperRef.current && swiperRef.current.swiper && isAlly) {
17272
17616
  swiperRef.current.swiper.autoplay.stop();
@@ -17573,27 +17917,35 @@ const Consent = ({ resolver, globalConfig }) => {
17573
17917
  };
17574
17918
  var ConsentPopup = React.memo(Consent);
17575
17919
 
17920
+ const NavBack = ({ data, minusHeight, tagHeight, onClick }) => {
17921
+ var _a, _b, _c, _d, _e;
17922
+ return (React.createElement("button", { style: {
17923
+ position: 'absolute',
17924
+ [(_a = data === null || data === void 0 ? void 0 : data.xPosit) !== null && _a !== void 0 ? _a : 'left']: (_c = (_b = data === null || data === void 0 ? void 0 : data.backButton) === null || _b === void 0 ? void 0 : _b.x) !== null && _c !== void 0 ? _c : 0,
17925
+ [(_d = data === null || data === void 0 ? void 0 : data.yPosit) !== null && _d !== void 0 ? _d : 'top']: ((data === null || data === void 0 ? void 0 : data.yPosit) == 'top' ? minusHeight + tagHeight : 0) + ((_e = data === null || data === void 0 ? void 0 : data.y) !== null && _e !== void 0 ? _e : 0),
17926
+ zIndex: 8,
17927
+ border: 'none',
17928
+ padding: 0,
17929
+ background: 'transparent'
17930
+ }, role: 'button', "aria-label": 'back button', onClick: onClick },
17931
+ React.createElement("img", { src: (data === null || data === void 0 ? void 0 : data.icon) || img, alt: 'back button', width: 100, style: { objectFit: 'cover' } })));
17932
+ };
17933
+ var NavBack$1 = React.memo(NavBack);
17934
+
17576
17935
  /*
17577
17936
  * @Author: binruan@chatlabs.com
17578
17937
  * @Date: 2024-03-20 10:27:31
17579
17938
  * @LastEditors: binruan@chatlabs.com
17580
- * @LastEditTime: 2024-11-21 11:01:19
17581
- * @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\index.tsx
17582
- *
17583
- */
17584
- /*
17585
- * @Author: binruan@chatlabs.com
17586
- * @Date: 2024-01-15 19:03:09
17587
- * @LastEditors: binruan@chatlabs.com
17588
- * @LastEditTime: 2024-11-04 14:55:23
17939
+ * @LastEditTime: 2024-11-27 11:52:24
17589
17940
  * @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\index.tsx
17590
17941
  *
17591
17942
  */
17592
17943
  const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.innerHeight, containerWidth = window.innerWidth, tempMap, resolver, data = [], ctaType, tipText, nudge, _schema, hashTagStyle, hashTagRightMargin, tagList = [], licenseUrl }) => {
17593
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
17944
+ 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;
17594
17945
  const mutedIcon = useIconLink('/pb_static/5beaaa5ce7f3477b99db3838619cc471.png');
17595
17946
  const unmutedIcon = useIconLink('/pb_static/fea8668a8a894e4aa3a86bcc775e895e.png');
17596
- const { schema } = useEditor();
17947
+ const { schema, channel } = useEditor();
17948
+ const { openMultiPosts } = useEditorDataProvider();
17597
17949
  const [activeIndex, setActiveIndex] = React.useState(0);
17598
17950
  const viewImageStartTime = React.useRef(0);
17599
17951
  const [isMuted, setIsMuted] = React.useState(true);
@@ -17778,15 +18130,18 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
17778
18130
  return null;
17779
18131
  }, [globalConfig, activeIndex, visList]);
17780
18132
  const renderContent = React.useCallback((rec, index) => {
17781
- var _a, _b, _c, _d;
17782
- if ((_a = rec === null || rec === void 0 ? void 0 : rec.video) === null || _a === void 0 ? void 0 : _a.url) {
18133
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
18134
+ if (rec === 'organic menu') {
18135
+ return (React.createElement(MultiPosts$2, Object.assign({ recData: data === null || data === void 0 ? void 0 : data[1] }, (_c = (_b = (_a = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.multiPosts) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.item) === null || _c === void 0 ? void 0 : _c.props, (_f = (_e = (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.multiPosts) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.item) === null || _f === void 0 ? void 0 : _f.event)));
18136
+ }
18137
+ if ((_g = rec === null || rec === void 0 ? void 0 : rec.video) === null || _g === void 0 ? void 0 : _g.url) {
17783
18138
  return (React.createElement(VideoWidget$3, { key: isReload, rec: rec, index: index, muted: isMuted, data: data, height: height, activeIndex: activeIndex, videoPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.videoPost, videoPlayIcon: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.videoPlayIcon }));
17784
18139
  }
17785
- if ((_b = rec === null || rec === void 0 ? void 0 : rec.video) === null || _b === void 0 ? void 0 : _b.imgUrls) {
18140
+ if ((_h = rec === null || rec === void 0 ? void 0 : rec.video) === null || _h === void 0 ? void 0 : _h.imgUrls) {
17786
18141
  return (React.createElement(PictureGroup$3, { key: rec === null || rec === void 0 ? void 0 : rec.video.itemId, imgUrls: rec === null || rec === void 0 ? void 0 : rec.video.imgUrls, width: containerWidth, height: height, rec: rec, index: index, onViewImageEndEvent: handleViewImageStartEnd, onViewImageStartEvent: handleViewImageStartEvent, imgUrlsPostConfig: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.imgUrlsPost }));
17787
18142
  }
17788
- 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) {
17789
- return (_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) === null || _d === void 0 ? void 0 : _d.map((value, idx) => {
18143
+ if (rec.product && Array.isArray(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) && ((_j = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) === null || _j === void 0 ? void 0 : _j.length) > 0) {
18144
+ return (_k = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.productPost) === null || _k === void 0 ? void 0 : _k.map((value, idx) => {
17790
18145
  var _a, _b, _c, _d, _e, _f, _g, _h;
17791
18146
  const t = resolver[(_a = value === null || value === void 0 ? void 0 : value.item) === null || _a === void 0 ? void 0 : _a.type];
17792
18147
  const Component = withBindDataSource(t);
@@ -18094,18 +18449,19 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
18094
18449
  React.createElement(Tagbar$1, { tagList: tagList, setActiveIndex: setActiveIndex, style: {
18095
18450
  top: minusHeight
18096
18451
  } }),
18097
- ((_f = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.backButton) === null || _f === void 0 ? void 0 : _f.enable) && (React.createElement("button", { style: {
18098
- position: 'absolute',
18099
- [(_h = (_g = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.backButton) === null || _g === void 0 ? void 0 : _g.xPosit) !== null && _h !== void 0 ? _h : 'left']: (_k = (_j = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.backButton) === null || _j === void 0 ? void 0 : _j.x) !== null && _k !== void 0 ? _k : 0,
18100
- [(_m = (_l = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.backButton) === null || _l === void 0 ? void 0 : _l.yPosit) !== null && _m !== void 0 ? _m : 'top']: (((_o = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.backButton) === null || _o === void 0 ? void 0 : _o.yPosit) == 'top' ? minusHeight + tagHeight : 0) +
18101
- ((_q = (_p = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.backButton) === null || _p === void 0 ? void 0 : _p.y) !== null && _q !== void 0 ? _q : 0),
18102
- zIndex: 8,
18103
- border: 'none',
18104
- padding: 0,
18105
- background: 'transparent'
18106
- }, role: 'button', "aria-label": 'back button', onClick: () => history === null || history === void 0 ? void 0 : history.back() },
18107
- React.createElement("img", { src: ((_r = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.backButton) === null || _r === void 0 ? void 0 : _r.icon) || img, alt: 'back button', width: 100, style: { objectFit: 'cover' } }))),
18108
- isShowFingerTip ? (React.createElement(FingerSwipeTip, { imageUrl: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.swipeTipIcon, style: { top: `${50 - ((_s = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.swipeTipOffset) !== null && _s !== void 0 ? _s : 0)}%` }, duration: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.swiperTipAniDur })) : null,
18452
+ ((_f = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.backButton) === null || _f === void 0 ? void 0 : _f.enable) && !channel && (React.createElement(NavBack$1, { data: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.backButton, minusHeight: minusHeight, tagHeight: tagHeight, onClick: () => history === null || history === void 0 ? void 0 : history.back() })),
18453
+ ((_l = (_k = (_j = (_h = (_g = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.multiPosts) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.item) === null || _j === void 0 ? void 0 : _j.props) === null || _k === void 0 ? void 0 : _k.backButton) === null || _l === void 0 ? void 0 : _l.enable) && channel && (React.createElement(NavBack$1, { data: (_q = (_p = (_o = (_m = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.multiPosts) === null || _m === void 0 ? void 0 : _m[0]) === null || _o === void 0 ? void 0 : _o.item) === null || _p === void 0 ? void 0 : _p.props) === null || _q === void 0 ? void 0 : _q.backButton, minusHeight: minusHeight, tagHeight: tagHeight, onClick: () => {
18454
+ var _a, _b, _c;
18455
+ bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
18456
+ eventInfo: {
18457
+ eventSubject: 'backMultiPostClick',
18458
+ eventDescription: 'backMultiPostClick',
18459
+ traceinfo: (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.video) === null || _b === void 0 ? void 0 : _b.traceInfo) !== null && _c !== void 0 ? _c : ''
18460
+ }
18461
+ });
18462
+ location === null || location === void 0 ? void 0 : location.reload();
18463
+ } })),
18464
+ isShowFingerTip ? (React.createElement(FingerSwipeTip, { imageUrl: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.swipeTipIcon, style: { top: `${50 - ((_r = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.swipeTipOffset) !== null && _r !== void 0 ? _r : 0)}%` }, duration: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.swiperTipAniDur })) : null,
18109
18465
  React.createElement(Swiper, { style: {
18110
18466
  marginTop: tagHeight
18111
18467
  }, ref: swiperRef, onSlideChange: () => {
@@ -18137,8 +18493,9 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
18137
18493
  renderView,
18138
18494
  renderLikeButton(visList[activeIndex], activeIndex, !!(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconFixed)),
18139
18495
  renderToggleButton(!!(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconFixed))),
18140
- React.createElement(WaterFall$1, Object.assign({}, (_v = (_u = (_t = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.hashTag) === null || _t === void 0 ? void 0 : _t[0]) === null || _u === void 0 ? void 0 : _u.item) === null || _v === void 0 ? void 0 : _v.props)),
18141
- React.createElement(ConsentPopup, { resolver: resolver, globalConfig: globalConfig })));
18496
+ React.createElement(WaterFall$1, Object.assign({}, (_u = (_t = (_s = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.hashTag) === null || _s === void 0 ? void 0 : _s[0]) === null || _t === void 0 ? void 0 : _t.item) === null || _u === void 0 ? void 0 : _u.props)),
18497
+ React.createElement(ConsentPopup, { resolver: resolver, globalConfig: globalConfig }),
18498
+ 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 } })))));
18142
18499
  };
18143
18500
 
18144
18501
  const PictureGroup = ({ imgUrls, width, height, imgUrlsPostConfig, rec, index }) => {
@@ -18603,7 +18960,7 @@ const Popup = () => {
18603
18960
  * @Author: binruan@chatlabs.com
18604
18961
  * @Date: 2024-01-15 19:03:09
18605
18962
  * @LastEditors: binruan@chatlabs.com
18606
- * @LastEditTime: 2024-07-24 16:35:44
18963
+ * @LastEditTime: 2024-09-30 14:37:13
18607
18964
  * @FilePath: \pb-sxp-ui\src\core\components\SxpPageCore\index.tsx
18608
18965
  *
18609
18966
  */
@@ -18619,18 +18976,19 @@ const RESOLVER = {};
18619
18976
  Object.values(_materials_).forEach((v) => {
18620
18977
  RESOLVER[v.extend.type] = v;
18621
18978
  });
18622
- const SxpPageCore = ({ data, maxSize = 10, defaultSize = 10, hashTagSize = 20, loadingImage, appDomain, licenseUrl, enabledMetaConversionApi }) => {
18623
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
18979
+ const SxpPageCore = ({ data, maxSize = 10, defaultSize = 10, hashTagSize = 20, loadingImage, appDomain, enabledMetaConversionApi, dataList }) => {
18980
+ var _a, _b, _c, _d, _e, _f;
18624
18981
  const utmVal = React.useMemo(() => {
18625
18982
  var _a;
18626
18983
  const searchParams = (location === null || location === void 0 ? void 0 : location.search) ? (_a = location === null || location === void 0 ? void 0 : location.search) === null || _a === void 0 ? void 0 : _a.replace('?', '') : '';
18627
18984
  return searchParams;
18628
18985
  }, []);
18629
- return (React.createElement(EditorCore, { resolver: RESOLVER, enableDataSource: false, schema: data === null || data === void 0 ? void 0 : data.data, utmVal: utmVal },
18630
- 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, isShowTag: (_j = (_h = (_g = data === null || data === void 0 ? void 0 : data.data) === null || _g === void 0 ? void 0 : _g.sxpPageConf) === null || _h === void 0 ? void 0 : _h.globalConfig) === null || _j === void 0 ? void 0 : _j.isShowTag, globalConfig: (_l = (_k = data === null || data === void 0 ? void 0 : data.data) === null || _k === void 0 ? void 0 : _k.sxpPageConf) === null || _l === void 0 ? void 0 : _l.globalConfig, utmParameter: data === null || data === void 0 ? void 0 : data.utm_parameter, render: ({ rtcList, tagList }) => {
18986
+ const [_schema, setSchema] = React.useState(data === null || data === void 0 ? void 0 : data.data);
18987
+ return (React.createElement(EditorCore, { resolver: RESOLVER, enableDataSource: false, schema: _schema, utmVal: utmVal },
18988
+ 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), render: ({ rtcList, tagList, pageData }) => {
18631
18989
  var _a;
18632
18990
  return (React.createElement(React.Fragment, null,
18633
- React.createElement(SxpPageRender, Object.assign({}, (_a = data === null || data === void 0 ? void 0 : data.data) === null || _a === void 0 ? void 0 : _a.sxpPageConf, { tagList: tagList, data: rtcList, resolver: RESOLVER, licenseUrl: licenseUrl })),
18991
+ React.createElement(SxpPageRender, Object.assign({}, (_a = pageData === null || pageData === void 0 ? void 0 : pageData.data) === null || _a === void 0 ? void 0 : _a.sxpPageConf, { tagList: tagList, data: rtcList, resolver: RESOLVER })),
18634
18992
  React.createElement(Popup, null)));
18635
18993
  } })));
18636
18994
  };