pb-sxp-ui 1.0.54 → 1.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +111 -111
- package/dist/index.cjs +47 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +47 -46
- package/dist/index.js.map +1 -1
- package/dist/index.min.cjs +3 -3
- package/dist/index.min.cjs.map +1 -1
- package/dist/index.min.js +3 -3
- package/dist/index.min.js.map +1 -1
- package/dist/pb-ui.js +47 -46
- package/dist/pb-ui.js.map +1 -1
- package/dist/pb-ui.min.js +3 -3
- package/dist/pb-ui.min.js.map +1 -1
- package/es/core/components/SxpPageRender/Nudge/index.js +1 -1
- package/es/core/components/SxpPageRender/index.js +5 -0
- package/es/materials/sxp/popup/CommodityDetail/index.js +4 -4
- package/es/materials/sxp/popup/CommodityDetailDiroNew/index.js +1 -1
- package/lib/core/components/SxpPageRender/Nudge/index.js +1 -1
- package/lib/core/components/SxpPageRender/index.js +5 -0
- package/lib/materials/sxp/popup/CommodityDetail/index.js +4 -4
- package/lib/materials/sxp/popup/CommodityDetailDiroNew/index.js +1 -1
- package/package.json +115 -115
package/LICENSE
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
MIT License
|
2
|
-
|
3
|
-
Copyright (c) 2023 ChatLabs
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
SOFTWARE.
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2023 ChatLabs
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
@@ -1,111 +1,111 @@
|
|
1
|
-
<!--
|
2
|
-
* @Author : haocanweng@chatlabs.cn
|
3
|
-
* @Date : 2023-08-23 18:25:31
|
4
|
-
* @LastEditors: binruan@chatlabs.com
|
5
|
-
* @LastEditTime: 2024-03-20 16:26:29
|
6
|
-
* @FilePath: \pb-sxp-ui\README.md
|
7
|
-
-->
|
8
|
-
<h1 align="center">Page Builder SXP UI</h1>
|
9
|
-
|
10
|
-
<div align="center">
|
11
|
-
React enterprise-class UI components
|
12
|
-
</div>
|
13
|
-
|
14
|
-
## 📦 安装
|
15
|
-
|
16
|
-
```bash
|
17
|
-
npm install pb-sxp-ui
|
18
|
-
# or
|
19
|
-
yarn add pb-sxp-ui
|
20
|
-
```
|
21
|
-
|
22
|
-
## 🔨 使用
|
23
|
-
以 Next.js 框架为例子:
|
24
|
-
|
25
|
-
```jsx
|
26
|
-
import { GetServerSideProps } from 'next';
|
27
|
-
import React, { FC } from 'react'
|
28
|
-
import Pagebuilder, { PageView } from 'pb-sxp-ui';
|
29
|
-
|
30
|
-
// 初始化 PageBuilder 配置
|
31
|
-
Pagebuilder.init({
|
32
|
-
tenantId: 'xxxxxxxxxx',
|
33
|
-
appId: 'xxxxxxxxx',
|
34
|
-
env: 'live' // 可选参数,默认是 live 环境
|
35
|
-
});
|
36
|
-
|
37
|
-
|
38
|
-
interface IProps {
|
39
|
-
path: string;
|
40
|
-
data: any
|
41
|
-
}
|
42
|
-
|
43
|
-
const ContentPage: FC<IProps> = ({ data ,path}) => {
|
44
|
-
return (
|
45
|
-
<PageView data={data?.data} isSsr path={path}/>
|
46
|
-
)
|
47
|
-
}
|
48
|
-
|
49
|
-
export const getServerSideProps: GetServerSideProps<IProps> = async (
|
50
|
-
context
|
51
|
-
) => {
|
52
|
-
// 接收传来的路径
|
53
|
-
const path = context.query.path as string;
|
54
|
-
// 获取页面数据
|
55
|
-
const result = await Pagebuilder.getDetail(path)
|
56
|
-
return {
|
57
|
-
props: {
|
58
|
-
path,
|
59
|
-
data: result.data
|
60
|
-
},
|
61
|
-
};
|
62
|
-
};
|
63
|
-
|
64
|
-
export default ContentPage;
|
65
|
-
|
66
|
-
```
|
67
|
-
|
68
|
-
## ⌨️ 本地调试
|
69
|
-
|
70
|
-
### 运行开发环境
|
71
|
-
|
72
|
-
```bash
|
73
|
-
$ npm install
|
74
|
-
$ npm run start
|
75
|
-
```
|
76
|
-
|
77
|
-
### 生成本地开发全局链接
|
78
|
-
|
79
|
-
```bash
|
80
|
-
npm link
|
81
|
-
# or
|
82
|
-
yarn link
|
83
|
-
```
|
84
|
-
|
85
|
-
### 在使用该包的项目中安装调试
|
86
|
-
|
87
|
-
```bash
|
88
|
-
npm link pb-sxp-ui
|
89
|
-
# or
|
90
|
-
yarn link pb-sxp-ui
|
91
|
-
```
|
92
|
-
|
93
|
-
## 👾 发布
|
94
|
-
|
95
|
-
### 打包线上安装包
|
96
|
-
|
97
|
-
```bash
|
98
|
-
npm run package
|
99
|
-
# or
|
100
|
-
yarn package
|
101
|
-
```
|
102
|
-
|
103
|
-
### 发布 npm
|
104
|
-
|
105
|
-
```bash
|
106
|
-
$ npm version patch|minor|major
|
107
|
-
$ npm publish
|
108
|
-
|
109
|
-
# 自动化发布包
|
110
|
-
$ npm run pub patch|minor|major|xx.xx.xx
|
111
|
-
```
|
1
|
+
<!--
|
2
|
+
* @Author : haocanweng@chatlabs.cn
|
3
|
+
* @Date : 2023-08-23 18:25:31
|
4
|
+
* @LastEditors: binruan@chatlabs.com
|
5
|
+
* @LastEditTime: 2024-03-20 16:26:29
|
6
|
+
* @FilePath: \pb-sxp-ui\README.md
|
7
|
+
-->
|
8
|
+
<h1 align="center">Page Builder SXP UI</h1>
|
9
|
+
|
10
|
+
<div align="center">
|
11
|
+
React enterprise-class UI components
|
12
|
+
</div>
|
13
|
+
|
14
|
+
## 📦 安装
|
15
|
+
|
16
|
+
```bash
|
17
|
+
npm install pb-sxp-ui
|
18
|
+
# or
|
19
|
+
yarn add pb-sxp-ui
|
20
|
+
```
|
21
|
+
|
22
|
+
## 🔨 使用
|
23
|
+
以 Next.js 框架为例子:
|
24
|
+
|
25
|
+
```jsx
|
26
|
+
import { GetServerSideProps } from 'next';
|
27
|
+
import React, { FC } from 'react'
|
28
|
+
import Pagebuilder, { PageView } from 'pb-sxp-ui';
|
29
|
+
|
30
|
+
// 初始化 PageBuilder 配置
|
31
|
+
Pagebuilder.init({
|
32
|
+
tenantId: 'xxxxxxxxxx',
|
33
|
+
appId: 'xxxxxxxxx',
|
34
|
+
env: 'live' // 可选参数,默认是 live 环境
|
35
|
+
});
|
36
|
+
|
37
|
+
|
38
|
+
interface IProps {
|
39
|
+
path: string;
|
40
|
+
data: any
|
41
|
+
}
|
42
|
+
|
43
|
+
const ContentPage: FC<IProps> = ({ data ,path}) => {
|
44
|
+
return (
|
45
|
+
<PageView data={data?.data} isSsr path={path}/>
|
46
|
+
)
|
47
|
+
}
|
48
|
+
|
49
|
+
export const getServerSideProps: GetServerSideProps<IProps> = async (
|
50
|
+
context
|
51
|
+
) => {
|
52
|
+
// 接收传来的路径
|
53
|
+
const path = context.query.path as string;
|
54
|
+
// 获取页面数据
|
55
|
+
const result = await Pagebuilder.getDetail(path)
|
56
|
+
return {
|
57
|
+
props: {
|
58
|
+
path,
|
59
|
+
data: result.data
|
60
|
+
},
|
61
|
+
};
|
62
|
+
};
|
63
|
+
|
64
|
+
export default ContentPage;
|
65
|
+
|
66
|
+
```
|
67
|
+
|
68
|
+
## ⌨️ 本地调试
|
69
|
+
|
70
|
+
### 运行开发环境
|
71
|
+
|
72
|
+
```bash
|
73
|
+
$ npm install
|
74
|
+
$ npm run start
|
75
|
+
```
|
76
|
+
|
77
|
+
### 生成本地开发全局链接
|
78
|
+
|
79
|
+
```bash
|
80
|
+
npm link
|
81
|
+
# or
|
82
|
+
yarn link
|
83
|
+
```
|
84
|
+
|
85
|
+
### 在使用该包的项目中安装调试
|
86
|
+
|
87
|
+
```bash
|
88
|
+
npm link pb-sxp-ui
|
89
|
+
# or
|
90
|
+
yarn link pb-sxp-ui
|
91
|
+
```
|
92
|
+
|
93
|
+
## 👾 发布
|
94
|
+
|
95
|
+
### 打包线上安装包
|
96
|
+
|
97
|
+
```bash
|
98
|
+
npm run package
|
99
|
+
# or
|
100
|
+
yarn package
|
101
|
+
```
|
102
|
+
|
103
|
+
### 发布 npm
|
104
|
+
|
105
|
+
```bash
|
106
|
+
$ npm version patch|minor|major
|
107
|
+
$ npm publish
|
108
|
+
|
109
|
+
# 自动化发布包
|
110
|
+
$ npm run pub patch|minor|major|xx.xx.xx
|
111
|
+
```
|
package/dist/index.cjs
CHANGED
@@ -8442,10 +8442,10 @@ const CommodityDetail$1 = (_a) => {
|
|
8442
8442
|
React.createElement("div", { className: 'pb-commondity-content-title', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.title, hidden: !!product && !(product === null || product === void 0 ? void 0 : product.title) }, (_b = product === null || product === void 0 ? void 0 : product.title) !== null && _b !== void 0 ? _b : 'Pendant in Yellow Gold with Diamonds, Medium'),
|
8443
8443
|
React.createElement("div", { className: 'pb-commondity-content-price', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.price, hidden: !!product && !(product === null || product === void 0 ? void 0 : product.price) }, priceText),
|
8444
8444
|
React.createElement("div", { hidden: !!product && (!(product === null || product === void 0 ? void 0 : product.info) || (product === null || product === void 0 ? void 0 : product.info) === '') },
|
8445
|
-
React.createElement(ExpandableText$1, { foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, onClick: () => setShowModal(true), isPost: isPost, text: (_c = product === null || product === void 0 ? void 0 : product.info) !== null && _c !== void 0 ? _c : `The design inspiration of Tiffany Lock series comes from the power of connection and inclusiveness, and the
|
8446
|
-
bold and avant-garde visual design interprets the emotional bond connecting my heart. The Tiffany Lock
|
8447
|
-
collection is unisex and is inspired by the padlock pattern found in the Tiffany Antique Collection. This
|
8448
|
-
necklace features a stylish and eye-catching oval clasp chain decorated with a lock pattern. Crafted from
|
8445
|
+
React.createElement(ExpandableText$1, { foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, onClick: () => setShowModal(true), isPost: isPost, text: (_c = product === null || product === void 0 ? void 0 : product.info) !== null && _c !== void 0 ? _c : `The design inspiration of Tiffany Lock series comes from the power of connection and inclusiveness, and the
|
8446
|
+
bold and avant-garde visual design interprets the emotional bond connecting my heart. The Tiffany Lock
|
8447
|
+
collection is unisex and is inspired by the padlock pattern found in the Tiffany Antique Collection. This
|
8448
|
+
necklace features a stylish and eye-catching oval clasp chain decorated with a lock pattern. Crafted from
|
8449
8449
|
18-karat gold, this necklace is embellished with hand-set diamonds.`, maxStr: 79, className: 'pb-commondity-content-info', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.info }))));
|
8450
8450
|
};
|
8451
8451
|
const renderBtn = () => {
|
@@ -8903,7 +8903,7 @@ const CommodityDetailDiroNew$1 = (_a) => {
|
|
8903
8903
|
const productInfoText = ({ isPost }) => {
|
8904
8904
|
return (React.createElement("div", { hidden: !!product && (!(product === null || product === void 0 ? void 0 : product.info) || (product === null || product === void 0 ? void 0 : product.info) === '') },
|
8905
8905
|
React.createElement(ExpandableText$1, { isPost: isPost, onClick: () => setShowModal(true), className: 'pb-commondityDiroNew-info', style: commodityStyles === null || commodityStyles === void 0 ? void 0 : commodityStyles.info, foldText: tipText === null || tipText === void 0 ? void 0 : tipText.foldText, unfoldText: tipText === null || tipText === void 0 ? void 0 : tipText.unfoldText, text: (product === null || product === void 0 ? void 0 : product.info) ||
|
8906
|
-
`Unveiled at the Spring-Summer 2023 fashion show, the Dior Toujours bag is distinguished by a casual and practical design. Crafted in black calfskin with Macrocannage topstitching, it showcases a spacious interior compartment with a matching pouch to organize essentials. Its leather strap closure keeps items secure while the D of the CD Lock closure twists to adjust the sides and enhance the bag's silhouette. The leather handles can be adjusted using the small notches in order to be able to carry the large bag by hand or wear it over the shoulder. CD Lock and strap closures D.I.O.R. charms Removable interior pouch Adjustable leather handles Dust bag included
|
8906
|
+
`Unveiled at the Spring-Summer 2023 fashion show, the Dior Toujours bag is distinguished by a casual and practical design. Crafted in black calfskin with Macrocannage topstitching, it showcases a spacious interior compartment with a matching pouch to organize essentials. Its leather strap closure keeps items secure while the D of the CD Lock closure twists to adjust the sides and enhance the bag's silhouette. The leather handles can be adjusted using the small notches in order to be able to carry the large bag by hand or wear it over the shoulder. CD Lock and strap closures D.I.O.R. charms Removable interior pouch Adjustable leather handles Dust bag included
|
8907
8907
|
Made in Italy` })));
|
8908
8908
|
};
|
8909
8909
|
return (React.createElement("div", { className: 'pb-commondityDiroNew' },
|
@@ -12695,14 +12695,50 @@ const Nudge = ({ nudge }) => {
|
|
12695
12695
|
borderRadius: (_f = nudge === null || nudge === void 0 ? void 0 : nudge.borderRadius) !== null && _f !== void 0 ? _f : 4
|
12696
12696
|
} },
|
12697
12697
|
(nudge === null || nudge === void 0 ? void 0 : nudge.icon) ? React.createElement("img", { src: nudge.icon, style: { height: '100%', objectFit: 'cover' } }) : null,
|
12698
|
-
React.createElement("p", { style: Object.assign({}, nudge === null || nudge === void 0 ? void 0 : nudge.textStyle) }, (_g = nudge === null || nudge === void 0 ? void 0 : nudge.content) !== null && _g !== void 0 ? _g : '')))));
|
12698
|
+
React.createElement("p", { style: Object.assign(Object.assign({}, nudge === null || nudge === void 0 ? void 0 : nudge.textStyle), { textWrap: 'nowrap', textOverflow: 'ellipsis', overflow: 'hidden', whiteSpace: 'nowrap' }) }, (_g = nudge === null || nudge === void 0 ? void 0 : nudge.content) !== null && _g !== void 0 ? _g : '')))));
|
12699
12699
|
};
|
12700
12700
|
|
12701
|
+
const DEFAULT_TAG = 'FOR U';
|
12702
|
+
const Tagbar = ({ tagList = [], setActiveIndex }) => {
|
12703
|
+
const [selectTag, setSelectTag] = React.useState(DEFAULT_TAG);
|
12704
|
+
const { getRecommendVideos, setRtcList, setCacheRtcList, setCacheActiveIndex, setLoading, swiperRef } = useSxpDataSource();
|
12705
|
+
const realTagList = React.useMemo(() => {
|
12706
|
+
return [DEFAULT_TAG, ...tagList];
|
12707
|
+
}, [tagList]);
|
12708
|
+
const handleSelectTag = (tag) => () => {
|
12709
|
+
if (tag === selectTag)
|
12710
|
+
return;
|
12711
|
+
let hashTag;
|
12712
|
+
if (tag !== DEFAULT_TAG) {
|
12713
|
+
hashTag = tag;
|
12714
|
+
}
|
12715
|
+
setLoading === null || setLoading === void 0 ? void 0 : setLoading(true);
|
12716
|
+
getRecommendVideos === null || getRecommendVideos === void 0 ? void 0 : getRecommendVideos({ hashTag }).then((res) => {
|
12717
|
+
var _a, _b, _c, _d;
|
12718
|
+
setRtcList === null || setRtcList === void 0 ? void 0 : setRtcList((_a = res === null || res === void 0 ? void 0 : res.recList) !== null && _a !== void 0 ? _a : []);
|
12719
|
+
setCacheRtcList === null || setCacheRtcList === void 0 ? void 0 : setCacheRtcList((_b = res === null || res === void 0 ? void 0 : res.recList) !== null && _b !== void 0 ? _b : []);
|
12720
|
+
setActiveIndex === null || setActiveIndex === void 0 ? void 0 : setActiveIndex(0);
|
12721
|
+
setCacheActiveIndex === null || setCacheActiveIndex === void 0 ? void 0 : setCacheActiveIndex(0);
|
12722
|
+
(_d = (_c = swiperRef === null || swiperRef === void 0 ? void 0 : swiperRef.current) === null || _c === void 0 ? void 0 : _c.swiper) === null || _d === void 0 ? void 0 : _d.slideTo(0);
|
12723
|
+
}).finally(() => {
|
12724
|
+
setLoading === null || setLoading === void 0 ? void 0 : setLoading(false);
|
12725
|
+
});
|
12726
|
+
setSelectTag(tag);
|
12727
|
+
};
|
12728
|
+
if (tagList.length <= 0)
|
12729
|
+
return null;
|
12730
|
+
return (React.createElement("div", { className: 'clc-sxp-tagbar' },
|
12731
|
+
React.createElement("ul", { className: 'clc-sxp-tagbar-list', style: { margin: 'auto', gap: 24 } }, realTagList.map((tag) => {
|
12732
|
+
return (React.createElement("li", { className: `clc-sxp-tagbar-list-item ${tag === selectTag ? 'clc-sxp-tagbar-list-item-active' : ''}`, key: tag, onClick: handleSelectTag(tag) }, tag));
|
12733
|
+
}))));
|
12734
|
+
};
|
12735
|
+
var Tagbar$1 = React.memo(Tagbar);
|
12736
|
+
|
12701
12737
|
/*
|
12702
12738
|
* @Author: binruan@chatlabs.com
|
12703
12739
|
* @Date: 2024-01-15 19:03:09
|
12704
12740
|
* @LastEditors: binruan@chatlabs.com
|
12705
|
-
* @LastEditTime: 2024-05-
|
12741
|
+
* @LastEditTime: 2024-05-09 16:23:59
|
12706
12742
|
* @FilePath: \pb-sxp-ui\src\core\components\SxpPageRender\index.tsx
|
12707
12743
|
*
|
12708
12744
|
*/
|
@@ -12879,9 +12915,9 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
|
|
12879
12915
|
if ((globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.logoUrl) && (globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.isShowLogo)) {
|
12880
12916
|
minusHeight += 45;
|
12881
12917
|
}
|
12882
|
-
|
12883
|
-
|
12884
|
-
|
12918
|
+
if (tagList.length > 0) {
|
12919
|
+
minusHeight += 45;
|
12920
|
+
}
|
12885
12921
|
return containerHeight - minusHeight;
|
12886
12922
|
}, [globalConfig, containerHeight, tagList]);
|
12887
12923
|
const renderLogo = React.useMemo(() => {
|
@@ -13111,6 +13147,7 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
|
|
13111
13147
|
setOpenHashtag === null || setOpenHashtag === void 0 ? void 0 : setOpenHashtag(true);
|
13112
13148
|
} })),
|
13113
13149
|
renderLogo,
|
13150
|
+
React.createElement(Tagbar$1, { tagList: tagList, setActiveIndex: setActiveIndex }),
|
13114
13151
|
isShowFingerTip ? React.createElement(FingerSwipeTip, { imageUrl: globalConfig === null || globalConfig === void 0 ? void 0 : globalConfig.swipeTipIcon }) : null,
|
13115
13152
|
React.createElement(Swiper, { ref: swiperRef, onSlideChange: () => {
|
13116
13153
|
swiperRef.current.swiper.allowTouchMove = false;
|
@@ -13171,42 +13208,6 @@ const SxpPageRender = ({ globalConfig, descStyle, containerHeight = window.inner
|
|
13171
13208
|
React.createElement("div", { id: 'player-container-id-copy' }))));
|
13172
13209
|
};
|
13173
13210
|
|
13174
|
-
const DEFAULT_TAG = 'FOR U';
|
13175
|
-
const Tagbar = ({ tagList = [], setActiveIndex }) => {
|
13176
|
-
const [selectTag, setSelectTag] = React.useState(DEFAULT_TAG);
|
13177
|
-
const { getRecommendVideos, setRtcList, setCacheRtcList, setCacheActiveIndex, setLoading, swiperRef } = useSxpDataSource();
|
13178
|
-
const realTagList = React.useMemo(() => {
|
13179
|
-
return [DEFAULT_TAG, ...tagList];
|
13180
|
-
}, [tagList]);
|
13181
|
-
const handleSelectTag = (tag) => () => {
|
13182
|
-
if (tag === selectTag)
|
13183
|
-
return;
|
13184
|
-
let hashTag;
|
13185
|
-
if (tag !== DEFAULT_TAG) {
|
13186
|
-
hashTag = tag;
|
13187
|
-
}
|
13188
|
-
setLoading === null || setLoading === void 0 ? void 0 : setLoading(true);
|
13189
|
-
getRecommendVideos === null || getRecommendVideos === void 0 ? void 0 : getRecommendVideos({ hashTag }).then((res) => {
|
13190
|
-
var _a, _b, _c, _d;
|
13191
|
-
setRtcList === null || setRtcList === void 0 ? void 0 : setRtcList((_a = res === null || res === void 0 ? void 0 : res.recList) !== null && _a !== void 0 ? _a : []);
|
13192
|
-
setCacheRtcList === null || setCacheRtcList === void 0 ? void 0 : setCacheRtcList((_b = res === null || res === void 0 ? void 0 : res.recList) !== null && _b !== void 0 ? _b : []);
|
13193
|
-
setActiveIndex === null || setActiveIndex === void 0 ? void 0 : setActiveIndex(0);
|
13194
|
-
setCacheActiveIndex === null || setCacheActiveIndex === void 0 ? void 0 : setCacheActiveIndex(0);
|
13195
|
-
(_d = (_c = swiperRef === null || swiperRef === void 0 ? void 0 : swiperRef.current) === null || _c === void 0 ? void 0 : _c.swiper) === null || _d === void 0 ? void 0 : _d.slideTo(0);
|
13196
|
-
}).finally(() => {
|
13197
|
-
setLoading === null || setLoading === void 0 ? void 0 : setLoading(false);
|
13198
|
-
});
|
13199
|
-
setSelectTag(tag);
|
13200
|
-
};
|
13201
|
-
if (tagList.length <= 0)
|
13202
|
-
return null;
|
13203
|
-
return (React.createElement("div", { className: 'clc-sxp-tagbar' },
|
13204
|
-
React.createElement("ul", { className: 'clc-sxp-tagbar-list', style: { margin: 'auto', gap: 24 } }, realTagList.map((tag) => {
|
13205
|
-
return (React.createElement("li", { className: `clc-sxp-tagbar-list-item ${tag === selectTag ? 'clc-sxp-tagbar-list-item-active' : ''}`, key: tag, onClick: handleSelectTag(tag) }, tag));
|
13206
|
-
}))));
|
13207
|
-
};
|
13208
|
-
var Tagbar$1 = React.memo(Tagbar);
|
13209
|
-
|
13210
13211
|
const PictureGroup = ({ imgUrls, width, height, imgUrlsPostConfig, rec, index }) => {
|
13211
13212
|
return (React.createElement(Swiper, { defaultValue: 0, direction: 'horizontal', modules: [Pagination, Autoplay], pagination: { clickable: true, bulletActiveClass: 'swipe-item-active-bullet' }, height: height, style: { width }, loop: true, autoplay: false }, imgUrls === null || imgUrls === void 0 ? void 0 : imgUrls.map((url) => {
|
13212
13213
|
return (React.createElement(SwiperSlide, { key: url },
|