pb-sxp-ui 1.19.18 → 1.19.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +150 -113
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +150 -113
- package/dist/index.js.map +1 -1
- package/dist/index.min.cjs +13 -6
- package/dist/index.min.cjs.map +1 -1
- package/dist/index.min.js +13 -6
- package/dist/index.min.js.map +1 -1
- package/dist/pb-ui.js +150 -113
- package/dist/pb-ui.js.map +1 -1
- package/dist/pb-ui.min.js +13 -6
- package/dist/pb-ui.min.js.map +1 -1
- package/es/core/components/SxpPageRender/Modal/index.js +14 -11
- package/es/core/components/SxpPageRender/VideoWidget/index.d.ts +1 -0
- package/es/core/components/SxpPageRender/VideoWidget/index.js +3 -3
- package/es/core/components/SxpPageRender/index.js +14 -7
- package/es/core/hooks/useVisibleHeight.d.ts +4 -1
- package/es/core/hooks/useVisibleHeight.js +32 -4
- package/lib/core/components/SxpPageRender/Modal/index.js +14 -11
- package/lib/core/components/SxpPageRender/VideoWidget/index.d.ts +1 -0
- package/lib/core/components/SxpPageRender/VideoWidget/index.js +3 -3
- package/lib/core/components/SxpPageRender/index.js +14 -7
- package/lib/core/hooks/useVisibleHeight.d.ts +4 -1
- package/lib/core/hooks/useVisibleHeight.js +32 -4
- package/package.json +1 -1
package/dist/pb-ui.js
CHANGED
|
@@ -10320,6 +10320,126 @@
|
|
|
10320
10320
|
};
|
|
10321
10321
|
var CommodityGroup$1 = React.memo(CommodityGroup);
|
|
10322
10322
|
|
|
10323
|
+
function useVisibleHeight() {
|
|
10324
|
+
const [visibleHeight, setVisibleHeight] = React.useState(0);
|
|
10325
|
+
const [bottomHeight, setBottomHeight] = React.useState(0);
|
|
10326
|
+
const getVisibleContentHeight = () => {
|
|
10327
|
+
// 方法优先级:
|
|
10328
|
+
// 1. visualViewport.height (最准确)
|
|
10329
|
+
// 2. window.innerHeight (次之)
|
|
10330
|
+
// 3. document.documentElement.clientHeight (fallback)
|
|
10331
|
+
if (typeof window === 'undefined')
|
|
10332
|
+
return 0;
|
|
10333
|
+
let height = window.innerHeight;
|
|
10334
|
+
// 优先使用 visualViewport
|
|
10335
|
+
if (window.visualViewport) {
|
|
10336
|
+
height = window.visualViewport.height;
|
|
10337
|
+
}
|
|
10338
|
+
// 验证高度合理性
|
|
10339
|
+
if (height <= 0 || height > window.screen.height) {
|
|
10340
|
+
height = window.innerHeight;
|
|
10341
|
+
}
|
|
10342
|
+
// 最终 fallback
|
|
10343
|
+
if (height <= 0) {
|
|
10344
|
+
height = document.documentElement.clientHeight;
|
|
10345
|
+
}
|
|
10346
|
+
return height;
|
|
10347
|
+
};
|
|
10348
|
+
const updateHeight = React.useCallback(() => {
|
|
10349
|
+
var _a;
|
|
10350
|
+
const visibleHeight = getVisibleContentHeight();
|
|
10351
|
+
const screenHeight = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.height;
|
|
10352
|
+
const ua = navigator.userAgent;
|
|
10353
|
+
// Instagram 检测
|
|
10354
|
+
const isInstagram = /Instagram/i.test(ua);
|
|
10355
|
+
// Facebook 检测
|
|
10356
|
+
const isFacebook = /FBAV|FBAN|FBSN/i.test(ua);
|
|
10357
|
+
// 安全检查
|
|
10358
|
+
if (!screenHeight || visibleHeight <= 0 || (!isInstagram && !isFacebook)) {
|
|
10359
|
+
setVisibleHeight(visibleHeight);
|
|
10360
|
+
return;
|
|
10361
|
+
}
|
|
10362
|
+
const ratio = visibleHeight / screenHeight;
|
|
10363
|
+
const threshold = 0.9;
|
|
10364
|
+
const h = screenHeight >= 900 ? screenHeight * 0.8 : screenHeight * 0.79;
|
|
10365
|
+
// 当内容高度占屏幕高度90%以上时,使用按比例计算的高度
|
|
10366
|
+
// 否则使用实际内容高度
|
|
10367
|
+
const isRatio = ratio >= threshold;
|
|
10368
|
+
const finalHeight = isRatio ? Math.round(h) : visibleHeight;
|
|
10369
|
+
const b = screenHeight - Math.round(h);
|
|
10370
|
+
if (isRatio) {
|
|
10371
|
+
const banner = document.querySelector('#onetrust-banner-sdk');
|
|
10372
|
+
if (banner) {
|
|
10373
|
+
banner.style.bottom = `${b}px`;
|
|
10374
|
+
}
|
|
10375
|
+
const styleElement = document.createElement('style');
|
|
10376
|
+
styleElement.id = 'onetrust-pc-sdk';
|
|
10377
|
+
styleElement.setAttribute('type', 'text/css');
|
|
10378
|
+
document.head.appendChild(styleElement);
|
|
10379
|
+
const css = `
|
|
10380
|
+
#onetrust-pc-sdk {
|
|
10381
|
+
height: ${finalHeight}px !important;
|
|
10382
|
+
}
|
|
10383
|
+
#onetrust-pc-sdk #ot-pc-content{
|
|
10384
|
+
bottom: ${b}px !important;
|
|
10385
|
+
}
|
|
10386
|
+
`;
|
|
10387
|
+
styleElement.textContent = css;
|
|
10388
|
+
}
|
|
10389
|
+
if (isRatio) {
|
|
10390
|
+
setBottomHeight(b);
|
|
10391
|
+
}
|
|
10392
|
+
else {
|
|
10393
|
+
setBottomHeight(0);
|
|
10394
|
+
}
|
|
10395
|
+
if ('fundebug' in window) {
|
|
10396
|
+
const systemInfo = {
|
|
10397
|
+
ratio,
|
|
10398
|
+
h,
|
|
10399
|
+
finalHeight,
|
|
10400
|
+
visibleHeight,
|
|
10401
|
+
screenHeight,
|
|
10402
|
+
isInstagram,
|
|
10403
|
+
isFacebook,
|
|
10404
|
+
ua
|
|
10405
|
+
};
|
|
10406
|
+
window === null || window === void 0 ? void 0 : window.fundebug.notify('Collect_Info', 'resize', { metaData: { systemInfo, otherInfo: {} } });
|
|
10407
|
+
}
|
|
10408
|
+
setVisibleHeight(finalHeight);
|
|
10409
|
+
}, [getVisibleContentHeight]);
|
|
10410
|
+
React.useEffect(() => {
|
|
10411
|
+
// 初始计算
|
|
10412
|
+
updateHeight();
|
|
10413
|
+
// 事件监听
|
|
10414
|
+
const events = ['resize', 'orientationchange', 'load', 'DOMContentLoaded'];
|
|
10415
|
+
events.forEach((event) => {
|
|
10416
|
+
window.addEventListener(event, updateHeight);
|
|
10417
|
+
});
|
|
10418
|
+
// visualViewport 监听(最重要)
|
|
10419
|
+
if (window.visualViewport) {
|
|
10420
|
+
window.visualViewport.addEventListener('resize', updateHeight);
|
|
10421
|
+
window.visualViewport.addEventListener('scroll', updateHeight);
|
|
10422
|
+
}
|
|
10423
|
+
// 键盘弹出/收起监听(移动端重要)
|
|
10424
|
+
if ('virtualKeyboard' in navigator) {
|
|
10425
|
+
navigator.virtualKeyboard.addEventListener('geometrychange', updateHeight);
|
|
10426
|
+
}
|
|
10427
|
+
return () => {
|
|
10428
|
+
events.forEach((event) => {
|
|
10429
|
+
window.removeEventListener(event, updateHeight);
|
|
10430
|
+
});
|
|
10431
|
+
if (window.visualViewport) {
|
|
10432
|
+
window.visualViewport.removeEventListener('resize', updateHeight);
|
|
10433
|
+
window.visualViewport.removeEventListener('scroll', updateHeight);
|
|
10434
|
+
}
|
|
10435
|
+
if ('virtualKeyboard' in navigator) {
|
|
10436
|
+
navigator.virtualKeyboard.removeEventListener('geometrychange', updateHeight);
|
|
10437
|
+
}
|
|
10438
|
+
};
|
|
10439
|
+
}, [updateHeight]);
|
|
10440
|
+
return { visibleHeight, bottomHeight };
|
|
10441
|
+
}
|
|
10442
|
+
|
|
10323
10443
|
/*
|
|
10324
10444
|
* @Author: binruan@chatlabs.com
|
|
10325
10445
|
* @Date: 2023-11-02 18:34:34
|
|
@@ -10329,15 +10449,17 @@
|
|
|
10329
10449
|
*
|
|
10330
10450
|
*/
|
|
10331
10451
|
const closeIcon$1 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAjhJREFUWEfFlztOw0AQhmeWiJ4CCmpQ5DiRQsIJyAWg5A0lR0AIChDiCJS8ER0cADgBeRSxt4CCDgkaKiq8i+zYeWx2413HEWmiJJv9v535Z2aN8M8vFPT9z3zETD0aAUChUJjwvPFHAJhBhB3Hqd6OAsK2yyucwykAvP38eJX398Z3AJDLlVYR8ToU9Rhj25TWr9KEsKy5dULIGQCMtfZly45TvwsAstm56UwG6wA4FUFwzrdctxZBDcWSy5XWEPG8I84/GcMipdWPtgcsaz5PCHtKG0IuTiqUvjT9U/WYMG2IOPE+AP+LtCB0xKUAAyA2Xbd2o2OG0NQXvTnvhL17D7EPtH9TRCIWwkRcGYGIQgYBABuqPuHXOQBc6pw80lBGwBQiiXhsBHQhkoprA6iM6acjhDQKu5YJZW6XeOI3XJdpvfsdTu52VfXEekD8owQiXGIubpSCbhDbLu8DwKEAd+A41SOdPpE4BS0viFOtvV2iKWqUgn5x/tmS70xR01GuDSCKc86/OCcLgTyyZ0ScDGNhFAktAJV4NFJ9YyaFiAWIE+9uVkkgBgLoig8DMWAa9ro9ynkUdlW5maZDCmB6clmz0k1HH4Cs1Ezbq2p2yEpUuBOKTSZZex00RUWIrltxuuK6EOGDSbGIOPZicpMx6fny650377qNRgBgWeVFQuA+6UjVgREhGIMlSqsPUQqIbZdOOIdZQmCv2axRnU1N1+TzJYsxOEaEV8ep7frPZ7Gd0FTEdP0ft0/kMNdg0eoAAAAASUVORK5CYII=';
|
|
10332
|
-
const Modal = ({ visible, onClose, children, modalStyle, padding, popup, schema, fullHeight
|
|
10452
|
+
const Modal = ({ visible, onClose, children, modalStyle, padding, popup, schema, fullHeight, isFullScreen = false, openState }) => {
|
|
10333
10453
|
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;
|
|
10454
|
+
const { visibleHeight, bottomHeight } = useVisibleHeight();
|
|
10334
10455
|
const touchRef = React.useRef(null);
|
|
10335
10456
|
const fTouchRef = React.useRef(null);
|
|
10336
10457
|
const touchMoveRef = React.useRef(null);
|
|
10337
10458
|
const ref = React.useRef(null);
|
|
10338
10459
|
const modalRef = React.useRef(null);
|
|
10339
|
-
const
|
|
10340
|
-
const
|
|
10460
|
+
const modalHeight = fullHeight || visibleHeight;
|
|
10461
|
+
const MODAL_DEF_TRANS = modalHeight * 0.2;
|
|
10462
|
+
const MODAL_DEF_CON_H = isFullScreen ? modalHeight : modalHeight * 0.8;
|
|
10341
10463
|
const [modalTrans, setModalTrans] = React.useState(MODAL_DEF_TRANS);
|
|
10342
10464
|
const [isShow, setIsShow] = React.useState(false);
|
|
10343
10465
|
const modalEleRef = React.useRef(null);
|
|
@@ -10385,17 +10507,17 @@
|
|
|
10385
10507
|
}, [_popup, openState, globalConfig, schema]);
|
|
10386
10508
|
React.useEffect(() => {
|
|
10387
10509
|
const trapFocus = (element) => {
|
|
10388
|
-
|
|
10389
|
-
|
|
10390
|
-
|
|
10391
|
-
|
|
10510
|
+
const focusableEls = element === null || element === void 0 ? void 0 : element.querySelectorAll('[role="button"],a, a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])');
|
|
10511
|
+
const firstFocusableEl = focusableEls === null || focusableEls === void 0 ? void 0 : focusableEls[0];
|
|
10512
|
+
const lastFocusableEl = focusableEls === null || focusableEls === void 0 ? void 0 : focusableEls[(focusableEls === null || focusableEls === void 0 ? void 0 : focusableEls.length) - 1];
|
|
10513
|
+
const KEYCODE_TAB = 9;
|
|
10392
10514
|
element.addEventListener('keydown', function (e) {
|
|
10393
10515
|
if (e.key === 'Escape' || e.key === 'Esc') {
|
|
10394
10516
|
// 在这里执行按下 Esc 键时的操作
|
|
10395
10517
|
handleClose();
|
|
10396
10518
|
e.preventDefault();
|
|
10397
10519
|
}
|
|
10398
|
-
|
|
10520
|
+
const isTabPressed = e.key === 'Tab' || e.keyCode === KEYCODE_TAB;
|
|
10399
10521
|
if (!isTabPressed) {
|
|
10400
10522
|
return;
|
|
10401
10523
|
}
|
|
@@ -10477,12 +10599,12 @@
|
|
|
10477
10599
|
}
|
|
10478
10600
|
touchMoveRef.current = false;
|
|
10479
10601
|
};
|
|
10480
|
-
return ReactDOM__namespace.createPortal(React.createElement(React.Fragment, null, isShow && (React.createElement("div", { className: 'modal-bg', style: Object.assign({ display: 'flex', backgroundColor: isOpen ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0)' }, modalStyle), onClick: handleClose },
|
|
10602
|
+
return ReactDOM__namespace.createPortal(React.createElement(React.Fragment, null, isShow && (React.createElement("div", { className: 'modal-bg', style: Object.assign({ display: 'flex', backgroundColor: isOpen ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0)', bottom: bottomHeight + 'px' }, modalStyle), onClick: handleClose },
|
|
10481
10603
|
React.createElement("div", { style: {
|
|
10482
10604
|
position: 'relative',
|
|
10483
10605
|
left: `${(_d = (_c = (_b = (_a = getPopupById === null || getPopupById === void 0 ? void 0 : getPopupById.item) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.popupBg) === null || _c === void 0 ? void 0 : _c.horizontalMargin) !== null && _d !== void 0 ? _d : 0}px`,
|
|
10484
10606
|
right: `${(_h = (_g = (_f = (_e = getPopupById === null || getPopupById === void 0 ? void 0 : getPopupById.item) === null || _e === void 0 ? void 0 : _e.props) === null || _f === void 0 ? void 0 : _f.popupBg) === null || _g === void 0 ? void 0 : _g.horizontalMargin) !== null && _h !== void 0 ? _h : 0}px`,
|
|
10485
|
-
bottom: `${(_m = (_l = (_k = (_j = getPopupById === null || getPopupById === void 0 ? void 0 : getPopupById.item) === null || _j === void 0 ? void 0 : _j.props) === null || _k === void 0 ? void 0 : _k.popupBg) === null || _l === void 0 ? void 0 : _l.bottomMargin) !== null && _m !== void 0 ? _m : 0}px`,
|
|
10607
|
+
bottom: `${((_m = (_l = (_k = (_j = getPopupById === null || getPopupById === void 0 ? void 0 : getPopupById.item) === null || _j === void 0 ? void 0 : _j.props) === null || _k === void 0 ? void 0 : _k.popupBg) === null || _l === void 0 ? void 0 : _l.bottomMargin) !== null && _m !== void 0 ? _m : 0) + bottomHeight}px`,
|
|
10486
10608
|
overflow: 'hidden',
|
|
10487
10609
|
width: `calc(100% - ${((_r = (_q = (_p = (_o = getPopupById === null || getPopupById === void 0 ? void 0 : getPopupById.item) === null || _o === void 0 ? void 0 : _o.props) === null || _p === void 0 ? void 0 : _p.popupBg) === null || _q === void 0 ? void 0 : _q.horizontalMargin) !== null && _r !== void 0 ? _r : 0) * 2}px)`,
|
|
10488
10610
|
height: '100%'
|
|
@@ -10498,7 +10620,7 @@
|
|
|
10498
10620
|
onTouchEnd: handleTouchEnd
|
|
10499
10621
|
})),
|
|
10500
10622
|
React.createElement("div", Object.assign({ id: 'modal-content', ref: ref, style: {
|
|
10501
|
-
height: isScrollFullScreen ?
|
|
10623
|
+
height: isScrollFullScreen ? modalHeight : MODAL_DEF_CON_H,
|
|
10502
10624
|
overflow: (isScrollFullScreen && modalTrans <= 0) || !isScrollFullScreen ? 'auto' : 'hidden',
|
|
10503
10625
|
zIndex: 1
|
|
10504
10626
|
} }, (((_z = (_y = getPopupById === null || getPopupById === void 0 ? void 0 : getPopupById.item) === null || _y === void 0 ? void 0 : _y.props) === null || _z === void 0 ? void 0 : _z.enableFixedCloseButton) && {
|
|
@@ -18133,7 +18255,7 @@ Made in Italy` })));
|
|
|
18133
18255
|
};
|
|
18134
18256
|
})();
|
|
18135
18257
|
|
|
18136
|
-
const VideoWidget$4 = React.forwardRef(({ rec, index, height, data, muted, activeIndex, videoPostConfig, videoPlayIcon, loopPlay, swiperRef }, ref) => {
|
|
18258
|
+
const VideoWidget$4 = React.forwardRef(({ rec, index, height, data, muted, activeIndex, videoPostConfig, videoPlayIcon, loopPlay, swiperRef, visibleHeight }, ref) => {
|
|
18137
18259
|
var _a, _b;
|
|
18138
18260
|
const [isPauseVideo, setIsPauseVideo] = React.useState(false);
|
|
18139
18261
|
const { bffEventReport, sxpParameter, waterFallData, openHashtag, bffFbReport, isDiyH5 } = useSxpDataSource();
|
|
@@ -18241,7 +18363,7 @@ Made in Italy` })));
|
|
|
18241
18363
|
const canvas = canvasRef === null || canvasRef === void 0 ? void 0 : canvasRef.current;
|
|
18242
18364
|
const ctx = canvas.getContext('2d');
|
|
18243
18365
|
const targetWidth = window === null || window === void 0 ? void 0 : window.innerWidth;
|
|
18244
|
-
const targetHeight = window === null || window === void 0 ? void 0 : window.innerHeight;
|
|
18366
|
+
const targetHeight = visibleHeight || (window === null || window === void 0 ? void 0 : window.innerHeight);
|
|
18245
18367
|
canvas.height = targetHeight;
|
|
18246
18368
|
canvas.width = targetWidth;
|
|
18247
18369
|
ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(videoRef.current, 0, 0, canvas.width, canvas.height);
|
|
@@ -18251,7 +18373,7 @@ Made in Italy` })));
|
|
|
18251
18373
|
setTimeout(() => {
|
|
18252
18374
|
setFrameImg();
|
|
18253
18375
|
}, 500);
|
|
18254
|
-
}, [videoRef.current, isBgColor, rec, firstFrameSrc, blur]);
|
|
18376
|
+
}, [videoRef.current, isBgColor, rec, firstFrameSrc, blur, visibleHeight]);
|
|
18255
18377
|
const handleLoadedmetadata = React.useCallback(() => {
|
|
18256
18378
|
if (!videoRef.current)
|
|
18257
18379
|
return;
|
|
@@ -18993,98 +19115,6 @@ Made in Italy` })));
|
|
|
18993
19115
|
};
|
|
18994
19116
|
var NavBack$1 = React.memo(NavBack);
|
|
18995
19117
|
|
|
18996
|
-
const useVisibleHeight = () => {
|
|
18997
|
-
const [visibleHeight, setVisibleHeight] = React.useState(0);
|
|
18998
|
-
const getVisibleContentHeight = () => {
|
|
18999
|
-
// 方法优先级:
|
|
19000
|
-
// 1. visualViewport.height (最准确)
|
|
19001
|
-
// 2. window.innerHeight (次之)
|
|
19002
|
-
// 3. document.documentElement.clientHeight (fallback)
|
|
19003
|
-
if (typeof window === 'undefined')
|
|
19004
|
-
return 0;
|
|
19005
|
-
let height = window.innerHeight;
|
|
19006
|
-
// 优先使用 visualViewport
|
|
19007
|
-
if (window.visualViewport) {
|
|
19008
|
-
height = window.visualViewport.height;
|
|
19009
|
-
}
|
|
19010
|
-
// 验证高度合理性
|
|
19011
|
-
if (height <= 0 || height > window.screen.height) {
|
|
19012
|
-
height = window.innerHeight;
|
|
19013
|
-
}
|
|
19014
|
-
// 最终 fallback
|
|
19015
|
-
if (height <= 0) {
|
|
19016
|
-
height = document.documentElement.clientHeight;
|
|
19017
|
-
}
|
|
19018
|
-
return height;
|
|
19019
|
-
};
|
|
19020
|
-
const updateHeight = React.useCallback(() => {
|
|
19021
|
-
var _a;
|
|
19022
|
-
const visibleHeight = getVisibleContentHeight();
|
|
19023
|
-
const screenHeight = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.height;
|
|
19024
|
-
const ua = navigator.userAgent;
|
|
19025
|
-
// Instagram 检测
|
|
19026
|
-
const isInstagram = /Instagram/i.test(ua);
|
|
19027
|
-
// Facebook 检测
|
|
19028
|
-
const isFacebook = /FBAV|FBAN|FBSN/i.test(ua);
|
|
19029
|
-
// 安全检查
|
|
19030
|
-
if (!screenHeight || visibleHeight <= 0 || (!isInstagram && !isFacebook)) {
|
|
19031
|
-
setVisibleHeight(visibleHeight);
|
|
19032
|
-
return;
|
|
19033
|
-
}
|
|
19034
|
-
const ratio = visibleHeight / screenHeight;
|
|
19035
|
-
const threshold = 0.9;
|
|
19036
|
-
const h = screenHeight >= 900 ? screenHeight * 0.8 : screenHeight * 0.79;
|
|
19037
|
-
// 当内容高度占屏幕高度90%以上时,使用按比例计算的高度
|
|
19038
|
-
// 否则使用实际内容高度
|
|
19039
|
-
const finalHeight = Math.round(ratio >= threshold ? h : visibleHeight);
|
|
19040
|
-
if ('fundebug' in window) {
|
|
19041
|
-
const systemInfo = {
|
|
19042
|
-
ratio,
|
|
19043
|
-
h,
|
|
19044
|
-
finalHeight,
|
|
19045
|
-
visibleHeight,
|
|
19046
|
-
screenHeight,
|
|
19047
|
-
isInstagram,
|
|
19048
|
-
isFacebook,
|
|
19049
|
-
ua
|
|
19050
|
-
};
|
|
19051
|
-
window === null || window === void 0 ? void 0 : window.fundebug.notify('Collect_Info', 'resize', { metaData: { systemInfo, otherInfo: {} } });
|
|
19052
|
-
}
|
|
19053
|
-
setVisibleHeight(finalHeight);
|
|
19054
|
-
}, [getVisibleContentHeight]);
|
|
19055
|
-
React.useEffect(() => {
|
|
19056
|
-
// 初始计算
|
|
19057
|
-
updateHeight();
|
|
19058
|
-
// 事件监听
|
|
19059
|
-
const events = ['resize', 'orientationchange', 'load', 'DOMContentLoaded'];
|
|
19060
|
-
events.forEach((event) => {
|
|
19061
|
-
window.addEventListener(event, updateHeight);
|
|
19062
|
-
});
|
|
19063
|
-
// visualViewport 监听(最重要)
|
|
19064
|
-
if (window.visualViewport) {
|
|
19065
|
-
window.visualViewport.addEventListener('resize', updateHeight);
|
|
19066
|
-
window.visualViewport.addEventListener('scroll', updateHeight);
|
|
19067
|
-
}
|
|
19068
|
-
// 键盘弹出/收起监听(移动端重要)
|
|
19069
|
-
if ('virtualKeyboard' in navigator) {
|
|
19070
|
-
navigator.virtualKeyboard.addEventListener('geometrychange', updateHeight);
|
|
19071
|
-
}
|
|
19072
|
-
return () => {
|
|
19073
|
-
events.forEach((event) => {
|
|
19074
|
-
window.removeEventListener(event, updateHeight);
|
|
19075
|
-
});
|
|
19076
|
-
if (window.visualViewport) {
|
|
19077
|
-
window.visualViewport.removeEventListener('resize', updateHeight);
|
|
19078
|
-
window.visualViewport.removeEventListener('scroll', updateHeight);
|
|
19079
|
-
}
|
|
19080
|
-
if ('virtualKeyboard' in navigator) {
|
|
19081
|
-
navigator.virtualKeyboard.removeEventListener('geometrychange', updateHeight);
|
|
19082
|
-
}
|
|
19083
|
-
};
|
|
19084
|
-
}, [updateHeight]);
|
|
19085
|
-
return visibleHeight;
|
|
19086
|
-
};
|
|
19087
|
-
|
|
19088
19118
|
/*
|
|
19089
19119
|
* @Author: binruan@chatlabs.com
|
|
19090
19120
|
* @Date: 2024-03-20 10:27:31
|
|
@@ -19113,7 +19143,7 @@ Made in Italy` })));
|
|
|
19113
19143
|
const fbcRef = React.useRef('');
|
|
19114
19144
|
const { loadVideos, bffEventReport, loading, setPopupDetailData, ctaEvent, swiperRef, waterFallData, setOpenHashtag, appDomain, openHashtag, loadingImage, isFromHashtag, popupDetailData, bffFbReport, curTime, h5EnterLink, isShowConsent, selectTag, isPreview, isEditor, cacheRtcList, setRtcList, cacheActiveIndex, rtcList, isNoMoreData, channel, refreshFeSession, isDiyH5, pixelPvStatusRef } = useSxpDataSource();
|
|
19115
19145
|
const { backMainFeed, productView, jumpToWeb } = useEventReport();
|
|
19116
|
-
const visibleHeight = useVisibleHeight();
|
|
19146
|
+
const { visibleHeight, bottomHeight } = useVisibleHeight();
|
|
19117
19147
|
const isShowFingerTip = React.useMemo(() => {
|
|
19118
19148
|
return data.length > 0 && !loading && (getFeUserState() || (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enableSwiperTip));
|
|
19119
19149
|
}, [data, loading, globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enableSwiperTip]);
|
|
@@ -19327,7 +19357,7 @@ Made in Italy` })));
|
|
|
19327
19357
|
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)));
|
|
19328
19358
|
}
|
|
19329
19359
|
if ((_g = rec === null || rec === void 0 ? void 0 : rec.video) === null || _g === void 0 ? void 0 : _g.url) {
|
|
19330
|
-
return (React.createElement(VideoWidget$5, Object.assign({ key: isReload }, (activeIndex === index && { ref: videoWidgetRef }), { 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, loopPlay: true, swiperRef: swiperRef })));
|
|
19360
|
+
return (React.createElement(VideoWidget$5, Object.assign({ key: isReload }, (activeIndex === index && { ref: videoWidgetRef }), { 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, loopPlay: true, swiperRef: swiperRef, visibleHeight: visibleHeight })));
|
|
19331
19361
|
}
|
|
19332
19362
|
if ((_h = rec === null || rec === void 0 ? void 0 : rec.video) === null || _h === void 0 ? void 0 : _h.imgUrls) {
|
|
19333
19363
|
return (React.createElement(PictureGroup$5, { 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 }));
|
|
@@ -19354,7 +19384,8 @@ Made in Italy` })));
|
|
|
19354
19384
|
tipText,
|
|
19355
19385
|
resolver,
|
|
19356
19386
|
schema,
|
|
19357
|
-
isReload
|
|
19387
|
+
isReload,
|
|
19388
|
+
visibleHeight
|
|
19358
19389
|
]);
|
|
19359
19390
|
const onExpandableChange = React.useCallback((v) => {
|
|
19360
19391
|
setIsShowMore(v);
|
|
@@ -19426,6 +19457,9 @@ Made in Italy` })));
|
|
|
19426
19457
|
if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconYPosit) === 'top') {
|
|
19427
19458
|
top += minusHeight;
|
|
19428
19459
|
}
|
|
19460
|
+
if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconFixed) && (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconYPosit) !== 'top') {
|
|
19461
|
+
top += bottomHeight;
|
|
19462
|
+
}
|
|
19429
19463
|
if (rec === null || rec === void 0 ? void 0 : rec.video) {
|
|
19430
19464
|
return (React.createElement(LikeButton$1, { key: rec.position, activeIcon: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIcon, unActicveIcon: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.unlikeIcon, active: rec.isCollected, recData: rec, className: 'clc-sxp-like-button', style: {
|
|
19431
19465
|
position: (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.likeIconFixed) ? 'fixed' : 'absolute',
|
|
@@ -19434,7 +19468,7 @@ Made in Italy` })));
|
|
|
19434
19468
|
}, position: index }));
|
|
19435
19469
|
}
|
|
19436
19470
|
return null;
|
|
19437
|
-
}, [globalConfig, waterFallData]);
|
|
19471
|
+
}, [globalConfig, waterFallData, bottomHeight]);
|
|
19438
19472
|
const handleViewImageStartEnd = (item) => {
|
|
19439
19473
|
var _a, _b, _c, _d, _e, _f;
|
|
19440
19474
|
if (!((_a = item === null || item === void 0 ? void 0 : item.video) === null || _a === void 0 ? void 0 : _a.url) && ((_b = item === null || item === void 0 ? void 0 : item.video) === null || _b === void 0 ? void 0 : _b.imgUrls)) {
|
|
@@ -19660,6 +19694,9 @@ Made in Italy` })));
|
|
|
19660
19694
|
if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconYPosit) === 'top') {
|
|
19661
19695
|
top += minusHeight;
|
|
19662
19696
|
}
|
|
19697
|
+
if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconFixed) && (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconYPosit) !== 'top') {
|
|
19698
|
+
top += bottomHeight;
|
|
19699
|
+
}
|
|
19663
19700
|
return (((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowMute) === undefined || (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowMute) === true) && (React.createElement(ToggleButton$1, { style: {
|
|
19664
19701
|
position: (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconFixed) ? 'fixed' : 'absolute',
|
|
19665
19702
|
visibility: ((_c = (_b = visList === null || visList === void 0 ? void 0 : visList[activeIndex]) === null || _b === void 0 ? void 0 : _b.video) === null || _c === void 0 ? void 0 : _c.url) ? 'visible' : 'hidden',
|
|
@@ -19668,7 +19705,7 @@ Made in Italy` })));
|
|
|
19668
19705
|
[(_d = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconXPosit) !== null && _d !== void 0 ? _d : 'right']: (_e = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconX) !== null && _e !== void 0 ? _e : 0,
|
|
19669
19706
|
[(_f = globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconYPosit) !== null && _f !== void 0 ? _f : 'bottom']: top
|
|
19670
19707
|
}, defaultValue: isMuted, activeIcon: (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.unMuteIcon) ? globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.unMuteIcon : mutedIcon, unactiveIcon: (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIcon) ? globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIcon : unmutedIcon, onChange: setIsMuted })));
|
|
19671
|
-
}, [globalConfig, visList, activeIndex, isMuted, waterFallData]);
|
|
19708
|
+
}, [globalConfig, visList, activeIndex, isMuted, waterFallData, bottomHeight]);
|
|
19672
19709
|
const renderView = React.useMemo(() => {
|
|
19673
19710
|
if (loading) {
|
|
19674
19711
|
return (React.createElement("div", { style: { height, width: containerWidth, display: 'flex', justifyContent: 'center', alignItems: 'center' } },
|
|
@@ -19762,10 +19799,10 @@ Made in Italy` })));
|
|
|
19762
19799
|
renderToggleButton(!!(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.muteIconFixed))),
|
|
19763
19800
|
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)),
|
|
19764
19801
|
React.createElement(ConsentPopup, { resolver: resolver, globalConfig: globalConfig }),
|
|
19765
|
-
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 } }))))),
|
|
19802
|
+
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, bottom: bottomHeight + 'px' } }))))),
|
|
19766
19803
|
(globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.enableCookieSetting) && (React.createElement("div", { style: {
|
|
19767
19804
|
position: 'fixed',
|
|
19768
|
-
bottom:
|
|
19805
|
+
bottom: bottomHeight + 'px',
|
|
19769
19806
|
left: 0,
|
|
19770
19807
|
right: 0,
|
|
19771
19808
|
width: '100%',
|