pb-sxp-ui 1.0.22 → 1.0.24

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/pb-ui.js CHANGED
@@ -8240,7 +8240,7 @@
8240
8240
  * @Author: binruan@chatlabs.com
8241
8241
  * @Date: 2023-12-26 16:11:34
8242
8242
  * @LastEditors: binruan@chatlabs.com
8243
- * @LastEditTime: 2024-04-17 13:49:29
8243
+ * @LastEditTime: 2024-04-18 14:33:15
8244
8244
  * @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\ExpandableText.tsx
8245
8245
  *
8246
8246
  */
@@ -8285,7 +8285,7 @@
8285
8285
  }
8286
8286
  multiRowCopy.current.style.display = 'none';
8287
8287
  }, [isPost]);
8288
- return (React.createElement("div", { className: className, style: Object.assign({}, style), hidden: !text || text === '' },
8288
+ return (React.createElement("div", { className: className, style: Object.assign(Object.assign({}, style), { transform: 'translate3d(0px, 0px, 0px)' }), hidden: !text || text === '' },
8289
8289
  React.createElement("div", { ref: multiRow, style: {
8290
8290
  overflow: 'hidden',
8291
8291
  WebkitLineClamp: !isPost || isShowMore ? '' : lineClamp,
@@ -9694,7 +9694,7 @@ Made in Italy` })));
9694
9694
  * @Author: binruan@chatlabs.com
9695
9695
  * @Date: 2024-01-16 14:50:13
9696
9696
  * @LastEditors: binruan@chatlabs.com
9697
- * @LastEditTime: 2024-04-17 19:03:01
9697
+ * @LastEditTime: 2024-04-18 12:32:49
9698
9698
  * @FilePath: \pb-sxp-ui\src\materials\sxp\template\components\Img.tsx
9699
9699
  *
9700
9700
  */
@@ -9710,7 +9710,7 @@ Made in Italy` })));
9710
9710
  }, rec, item, index);
9711
9711
  }
9712
9712
  }, [isOnScreen, src, ref, rec, ctaEvent, item, index]);
9713
- return (React.createElement("div", { ref: ref, hidden: !src },
9713
+ return (React.createElement("div", { ref: ref, hidden: !src, className: css.css({ width: '100%', height: '100%' }) },
9714
9714
  React.createElement(FormatImage$1, { className: css.css({ width: '100%', objectFit: 'cover', height: '100%', display: 'block' }), src: src })));
9715
9715
  };
9716
9716
  var Img$1 = React.memo(Img);
@@ -11986,7 +11986,8 @@ Made in Italy` })));
11986
11986
  const videoRef = React.useRef(null);
11987
11987
  const { bffEventReport, sxpParameter, waterFallData, openHashtag } = useSxpDataSource();
11988
11988
  const videoStartTime = React.useRef(0);
11989
- const [isLoad, setIsLoad] = React.useState(false);
11989
+ const [isLoadFinish, setIsLoadFinish] = React.useState(false);
11990
+ const [isFirstPlay, setIsFirstPlay] = React.useState(true);
11990
11991
  const { isActive } = useSwiperSlide();
11991
11992
  React.useEffect(() => {
11992
11993
  if (!videoRef.current)
@@ -12002,11 +12003,11 @@ Made in Italy` })));
12002
12003
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
12003
12004
  setIsPauseVideo(false);
12004
12005
  const item = data[index];
12005
- if (item && isLoad && ((_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.duration)) {
12006
+ if (item && ((_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.duration)) {
12006
12007
  videoStartTime.current = ((_b = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _b === void 0 ? void 0 : _b.currentTime) || 0;
12007
12008
  const videoDuration = ((_d = (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.duration) !== null && _d !== void 0 ? _d : 0).toFixed(2);
12008
12009
  const videoCurrentTime = ((_f = (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.currentTime) !== null && _f !== void 0 ? _f : 0).toFixed(2);
12009
- const playType = '1';
12010
+ const playType = isFirstPlay ? '0' : '1';
12010
12011
  bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
12011
12012
  eventInfo: {
12012
12013
  eventSubject: 'playVideo',
@@ -12022,72 +12023,41 @@ Made in Italy` })));
12022
12023
  traceInfo: (_o = item.video) === null || _o === void 0 ? void 0 : _o.traceInfo
12023
12024
  }
12024
12025
  });
12026
+ setIsFirstPlay(false);
12025
12027
  }
12026
- if (!isLoad) {
12027
- setIsLoad(true);
12028
- }
12029
- }, [bffEventReport, data, index, isLoad]);
12028
+ }, [bffEventReport, data, index, isFirstPlay]);
12030
12029
  const handleLoadedMetadata = React.useCallback(() => {
12031
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
12032
- const item = data[index];
12033
- if (item && !isLoad && ((_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.duration)) {
12034
- videoStartTime.current = ((_b = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _b === void 0 ? void 0 : _b.currentTime) || 0;
12035
- const videoDuration = ((_d = (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.duration) !== null && _d !== void 0 ? _d : 0).toFixed(2);
12036
- const videoCurrentTime = ((_f = (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.currentTime) !== null && _f !== void 0 ? _f : 0).toFixed(2);
12037
- const playType = '0';
12038
- bffEventReport === null || bffEventReport === void 0 ? void 0 : bffEventReport({
12039
- eventInfo: {
12040
- eventSubject: 'playVideo',
12041
- eventDescription: 'User played the video',
12042
- contentId: (_h = (_g = item.video) === null || _g === void 0 ? void 0 : _g.itemId) !== null && _h !== void 0 ? _h : '',
12043
- contentName: (_k = (_j = item.video) === null || _j === void 0 ? void 0 : _j.title) !== null && _k !== void 0 ? _k : '',
12044
- playType,
12045
- startTime: videoCurrentTime,
12046
- videoDuration,
12047
- contentTags: JSON.stringify((_m = (_l = item.video) === null || _l === void 0 ? void 0 : _l.tags) !== null && _m !== void 0 ? _m : []),
12048
- position: index + '',
12049
- contentFormat: 'video',
12050
- traceInfo: (_o = item.video) === null || _o === void 0 ? void 0 : _o.traceInfo
12051
- }
12052
- });
12053
- }
12054
- setTimeout(() => {
12055
- var _a;
12056
- (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.play();
12057
- }, 0);
12058
- }, [index, bffEventReport, data, isLoad]);
12030
+ setIsLoadFinish(true);
12031
+ }, []);
12059
12032
  const handleClickVideo = React.useCallback((type) => () => {
12060
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
12061
- if (!isLoad)
12033
+ var _a, _b, _c, _d, _e;
12034
+ if (!isLoadFinish)
12062
12035
  return;
12063
- data[index];
12064
- ((_b = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.duration) !== null && _b !== void 0 ? _b : 0).toFixed(2);
12065
- ((_d = (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.currentTime) !== null && _d !== void 0 ? _d : 0).toFixed(2);
12066
- const isPause = (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.paused;
12036
+ const isPause = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.paused;
12067
12037
  switch (type) {
12068
12038
  case 'start':
12069
12039
  if (!isPause)
12070
12040
  return;
12071
- (_f = videoRef.current) === null || _f === void 0 ? void 0 : _f.play();
12041
+ (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.play();
12072
12042
  setIsPauseVideo(false);
12073
12043
  break;
12074
12044
  case 'pause':
12075
12045
  if (isPause)
12076
12046
  return;
12077
- (_g = videoRef.current) === null || _g === void 0 ? void 0 : _g.pause();
12047
+ (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.pause();
12078
12048
  setIsPauseVideo(true);
12079
12049
  break;
12080
12050
  default:
12081
12051
  if (isPause) {
12082
- (_h = videoRef.current) === null || _h === void 0 ? void 0 : _h.play();
12052
+ (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.play();
12083
12053
  }
12084
12054
  else {
12085
- (_j = videoRef.current) === null || _j === void 0 ? void 0 : _j.pause();
12055
+ (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.pause();
12086
12056
  }
12087
12057
  setIsPauseVideo(!isPause);
12088
12058
  break;
12089
12059
  }
12090
- }, [data, index, isLoad]);
12060
+ }, [isLoadFinish]);
12091
12061
  const onPause = React.useCallback(() => {
12092
12062
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
12093
12063
  const item = data[index];
@@ -12113,16 +12083,10 @@ Made in Italy` })));
12113
12083
  }
12114
12084
  }, [data, index, bffEventReport]);
12115
12085
  React.useEffect(() => {
12116
- var _a, _b, _c;
12117
- if (data.length <= 0)
12118
- return;
12086
+ var _a, _b;
12119
12087
  if (!videoRef.current)
12120
12088
  return;
12121
12089
  setIsPauseVideo(false);
12122
- if (!isActive) {
12123
- (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.pause();
12124
- return;
12125
- }
12126
12090
  if (!videoRef.current.src) {
12127
12091
  const videoSrc = rec.video.url;
12128
12092
  // if (videoSrc.includes('.m3u8')) {
@@ -12142,25 +12106,33 @@ Made in Italy` })));
12142
12106
  videoRef.current.setAttribute('x5-playsinline', 'true');
12143
12107
  videoRef.current.setAttribute('webkit-playsinline', 'true');
12144
12108
  }
12145
- else {
12146
- videoRef.current.play();
12147
- }
12148
- (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('canplay', handleLoadedMetadata);
12149
- (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.addEventListener('playing', handlePlaying);
12109
+ (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('canplay', handleLoadedMetadata);
12110
+ (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('playing', handlePlaying);
12150
12111
  return () => {
12151
12112
  var _a, _b;
12152
12113
  (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('canplay', handleLoadedMetadata);
12153
12114
  (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.removeEventListener('playing', handlePlaying);
12154
12115
  };
12155
- }, [data, handleLoadedMetadata, handlePlaying, isActive, isLoad, rec.video]);
12116
+ }, [handleLoadedMetadata, handlePlaying, rec.video]);
12117
+ React.useEffect(() => {
12118
+ var _a;
12119
+ if (!(videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) || !isLoadFinish)
12120
+ return;
12121
+ if (isActive) {
12122
+ videoRef.current.play();
12123
+ }
12124
+ else {
12125
+ (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.pause();
12126
+ }
12127
+ }, [isActive, isLoadFinish]);
12156
12128
  /*
12157
12129
  打开/关闭hashtag暂停/播放视频
12158
12130
  */
12159
12131
  React.useEffect(() => {
12160
12132
  var _a, _b, _c;
12161
- const isPause = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.paused;
12162
- if (!isActive)
12133
+ if (!isActive || !(videoRef === null || videoRef === void 0 ? void 0 : videoRef.current))
12163
12134
  return;
12135
+ const isPause = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.paused;
12164
12136
  if (!isPause && openHashtag) {
12165
12137
  (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.pause();
12166
12138
  }
@@ -12181,11 +12153,11 @@ Made in Italy` })));
12181
12153
  };
12182
12154
  }, [handleClickVideo, isActive]);
12183
12155
  const renderPoster = React.useMemo(() => {
12184
- if (!(sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image)) {
12156
+ if (!(sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image) || isLoadFinish) {
12185
12157
  return null;
12186
12158
  }
12187
- return (React.createElement("img", { hidden: isLoad, style: { position: 'absolute', left: 0, top: 0, width: '100%', height: '100%', objectFit: 'cover' }, src: sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image }));
12188
- }, [isLoad, sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image]);
12159
+ return (React.createElement("img", { style: { position: 'absolute', left: 0, top: 0, width: '100%', height: '100%', objectFit: 'cover' }, src: sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image }));
12160
+ }, [isLoadFinish, sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image]);
12189
12161
  React.useEffect(() => {
12190
12162
  const handleBeforeUnload = () => {
12191
12163
  var _a, _b;
@@ -12261,35 +12233,21 @@ Made in Italy` })));
12261
12233
  * @Author: binruan@chatlabs.com
12262
12234
  * @Date: 2024-03-20 10:27:31
12263
12235
  * @LastEditors: binruan@chatlabs.com
12264
- * @LastEditTime: 2024-04-17 18:59:40
12236
+ * @LastEditTime: 2024-04-18 10:30:17
12265
12237
  * @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\PictureGroup\Picture.tsx
12266
12238
  *
12267
12239
  */
12268
12240
  const Picture = (props) => {
12269
12241
  const { src, height, width } = props;
12270
12242
  const [blur, setBlur] = React.useState(false);
12271
- useSxpDataSource();
12272
12243
  const onLoad = (img) => {
12273
- const aspectRatio = img.height / img.width;
12244
+ const aspectRatio = img.naturalHeight / img.naturalWidth;
12274
12245
  const targetAspectRatio = 16 / 9;
12275
12246
  const tolerance = 0.05; // 允许的宽高比误差范围
12276
12247
  if (Math.abs(aspectRatio - targetAspectRatio) > tolerance) {
12277
12248
  setBlur(true);
12278
12249
  }
12279
12250
  };
12280
- React.useCallback((src, style) => {
12281
- if (src === '' || !src)
12282
- return;
12283
- return (src === null || src === void 0 ? void 0 : src.includes('.avif')) ? (React.createElement("picture", null,
12284
- React.createElement("source", { type: 'image/avif', srcSet: src }),
12285
- React.createElement("source", { type: 'image/webp', srcSet: `${src}?imageMogr2/format/webp` }),
12286
- React.createElement("source", { type: 'image/jpeg', srcSet: `${src}?imageMogr2/format/jpg` }),
12287
- React.createElement("img", { src: src, style: style, onLoad: (e) => {
12288
- onLoad(e.target);
12289
- } }))) : (React.createElement("img", { src: src, style: style, onLoad: (e) => {
12290
- onLoad(e.target);
12291
- } }));
12292
- }, []);
12293
12251
  return (React.createElement("div", { style: {
12294
12252
  overflow: 'hidden',
12295
12253
  height,
@@ -12460,7 +12418,7 @@ Made in Italy` })));
12460
12418
  * @Author: binruan@chatlabs.com
12461
12419
  * @Date: 2023-12-26 16:11:34
12462
12420
  * @LastEditors: binruan@chatlabs.com
12463
- * @LastEditTime: 2024-04-11 18:14:05
12421
+ * @LastEditTime: 2024-04-18 14:36:53
12464
12422
  * @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\RenderCard.tsx
12465
12423
  *
12466
12424
  */
@@ -12494,7 +12452,7 @@ Made in Italy` })));
12494
12452
  const Component = withBindDataSource(t);
12495
12453
  const defaulSetting = (_x = t === null || t === void 0 ? void 0 : t.extend) === null || _x === void 0 ? void 0 : _x.defaulSetting;
12496
12454
  const isExternalLink = ((_0 = (_z = (_y = value === null || value === void 0 ? void 0 : value.item) === null || _y === void 0 ? void 0 : _y.event) === null || _z === void 0 ? void 0 : _z.onClick) === null || _0 === void 0 ? void 0 : _0.linkType) === 'externalLink';
12497
- return (React.createElement(Component, Object.assign({ style: Object.assign(Object.assign(Object.assign({}, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.style), (_1 = value === null || value === void 0 ? void 0 : value.item) === null || _1 === void 0 ? void 0 : _1.style), { zIndex: 50, marginLeft: '20px', boxSizing: 'border-box' }), textStyle: Object.assign(Object.assign({}, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.textStyle), (_2 = value === null || value === void 0 ? void 0 : value.item) === null || _2 === void 0 ? void 0 : _2.textStyle), bindDatas: (_4 = (_3 = value === null || value === void 0 ? void 0 : value.item) === null || _3 === void 0 ? void 0 : _3.bindDatas) !== null && _4 !== void 0 ? _4 : [] }, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.props, (_5 = value === null || value === void 0 ? void 0 : value.item) === null || _5 === void 0 ? void 0 : _5.props, { event: ((_6 = value === null || value === void 0 ? void 0 : value.item) === null || _6 === void 0 ? void 0 : _6.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 })));
12455
+ return (React.createElement(Component, Object.assign({ style: Object.assign(Object.assign(Object.assign({}, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.style), (_1 = value === null || value === void 0 ? void 0 : value.item) === null || _1 === void 0 ? void 0 : _1.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), (_2 = value === null || value === void 0 ? void 0 : value.item) === null || _2 === void 0 ? void 0 : _2.textStyle), bindDatas: (_4 = (_3 = value === null || value === void 0 ? void 0 : value.item) === null || _3 === void 0 ? void 0 : _3.bindDatas) !== null && _4 !== void 0 ? _4 : [] }, defaulSetting === null || defaulSetting === void 0 ? void 0 : defaulSetting.props, (_5 = value === null || value === void 0 ? void 0 : value.item) === null || _5 === void 0 ? void 0 : _5.props, { event: ((_6 = value === null || value === void 0 ? void 0 : value.item) === null || _6 === void 0 ? void 0 : _6.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 })));
12498
12456
  }
12499
12457
  else {
12500
12458
  return null;
@@ -12528,7 +12486,7 @@ Made in Italy` })));
12528
12486
  * @Author: binruan@chatlabs.com
12529
12487
  * @Date: 2024-01-15 19:03:09
12530
12488
  * @LastEditors: binruan@chatlabs.com
12531
- * @LastEditTime: 2024-04-17 10:30:08
12489
+ * @LastEditTime: 2024-04-18 16:49:34
12532
12490
  * @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\index.tsx
12533
12491
  *
12534
12492
  */
@@ -12729,10 +12687,8 @@ Made in Italy` })));
12729
12687
  React.createElement("div", { className: 'clc-sxp-bottom-card' },
12730
12688
  React.createElement(RenderCard$1, { rec: rec, index: index, tempMap: tempMap, resolver: resolver })),
12731
12689
  React.createElement("div", null,
12732
- React.createElement(ExpandableText$1, { className: 'clc-sxp-bottom-text', isPost: true, foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, text: (_c = (_b = rec.video) === null || _b === void 0 ? void 0 : _b.title) !== null && _c !== void 0 ? _c : '', style: Object.assign({}, descStyle
12733
- // textShadow: globalConfig?.isOpenTextShadow ? '2px 2px 4px rgba(0, 0, 0, 0.5)' : 'none'
12734
- ), onChange: onExpandableChange }),
12735
- React.createElement(Hashtag$1, { index: activeIndex, tags: (_e = (_d = rec === null || rec === void 0 ? void 0 : rec.video) === null || _d === void 0 ? void 0 : _d.hashTags) !== null && _e !== void 0 ? _e : [], itemId: (_f = rec === null || rec === void 0 ? void 0 : rec.video) === null || _f === void 0 ? void 0 : _f.itemId, itemType: ((_g = rec.video) === null || _g === void 0 ? void 0 : _g.url) ? 'VIDEO' : null, rec: rec, hashTagStyle: hashTagStyle })))));
12690
+ React.createElement(ExpandableText$1, { className: 'clc-sxp-bottom-text', isPost: true, foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, text: (_c = (_b = rec.video) === null || _b === void 0 ? void 0 : _b.title) !== null && _c !== void 0 ? _c : '', style: Object.assign(Object.assign({}, descStyle), { textShadow: (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isOpenTextShadow) ? '2px 2px 4px rgba(0, 0, 0, 0.5)' : 'none' }), onChange: onExpandableChange }),
12691
+ React.createElement(Hashtag$1, { index: activeIndex, tags: (_e = (_d = rec === null || rec === void 0 ? void 0 : rec.video) === null || _d === void 0 ? void 0 : _d.hashTags) !== null && _e !== void 0 ? _e : [], itemId: (_f = rec === null || rec === void 0 ? void 0 : rec.video) === null || _f === void 0 ? void 0 : _f.itemId, itemType: ((_g = rec.video) === null || _g === void 0 ? void 0 : _g.itemId) ? 'VIDEO' : null, rec: rec, hashTagStyle: hashTagStyle })))));
12736
12692
  }
12737
12693
  return null;
12738
12694
  }, [