pb-sxp-ui 1.0.2 → 1.0.3-alpha.2

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 (182) hide show
  1. package/dist/index.cjs +3624 -1460
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.css +143 -245
  4. package/dist/index.js +3625 -1461
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.min.cjs +3 -5
  7. package/dist/index.min.cjs.map +1 -1
  8. package/dist/index.min.js +3 -5
  9. package/dist/index.min.js.map +1 -1
  10. package/dist/pb-ui.js +3624 -1460
  11. package/dist/pb-ui.js.map +1 -1
  12. package/dist/pb-ui.min.js +3 -5
  13. package/dist/pb-ui.min.js.map +1 -1
  14. package/es/core/components/SxpPageCore/index.d.ts +1 -0
  15. package/es/core/components/SxpPageCore/index.js +2 -2
  16. package/es/core/components/SxpPageRender/ExpandableText.d.ts +1 -0
  17. package/es/core/components/SxpPageRender/ExpandableText.js +17 -10
  18. package/es/core/components/SxpPageRender/Hashtag/index.d.ts +2 -1
  19. package/es/core/components/SxpPageRender/Hashtag/index.js +3 -3
  20. package/es/core/components/SxpPageRender/Modal/index.d.ts +2 -0
  21. package/es/core/components/SxpPageRender/Modal/index.js +7 -4
  22. package/es/core/components/SxpPageRender/Navbar.d.ts +1 -0
  23. package/es/core/components/SxpPageRender/Navbar.js +3 -2
  24. package/es/core/components/SxpPageRender/Nudge/index.d.ts +24 -0
  25. package/es/core/components/SxpPageRender/Nudge/index.js +13 -0
  26. package/es/core/components/SxpPageRender/PictureGroup/index.js +11 -7
  27. package/es/core/components/SxpPageRender/Popup/index.js +3 -3
  28. package/es/core/components/SxpPageRender/VideoWidget/index.js +30 -21
  29. package/es/core/components/SxpPageRender/WaterFall/List.d.ts +2 -1
  30. package/es/core/components/SxpPageRender/WaterFall/List.js +24 -14
  31. package/es/core/components/SxpPageRender/WaterFall/WaterfallList.d.ts +2 -1
  32. package/es/core/components/SxpPageRender/WaterFall/WaterfallList.js +17 -14
  33. package/es/core/components/SxpPageRender/WaterFall/index.d.ts +2 -1
  34. package/es/core/components/SxpPageRender/WaterFall/index.js +4 -3
  35. package/es/core/components/SxpPageRender/WaterFall/preview.json +1242 -0
  36. package/es/core/components/SxpPageRender/index.d.ts +22 -1
  37. package/es/core/components/SxpPageRender/index.js +22 -19
  38. package/es/core/components/SxpPageRender/typing.d.ts +1 -0
  39. package/es/core/components/SxpPageRender/useIconLink.d.ts +1 -1
  40. package/es/core/components/SxpPageRender/useIconLink.js +8 -3
  41. package/es/core/context/EditorContext.d.ts +5 -0
  42. package/es/core/context/EditorContext.js +21 -3
  43. package/es/core/context/EditorDataProvider.d.ts +3 -1
  44. package/es/core/context/EditorDataProvider.js +5 -2
  45. package/es/core/context/SxpDataSourceProvider.d.ts +2 -0
  46. package/es/core/context/SxpDataSourceProvider.js +8 -4
  47. package/es/core/create.d.ts +1 -1
  48. package/es/materials/sxp/HashTag/index.d.ts +14 -0
  49. package/es/materials/sxp/HashTag/index.js +6 -0
  50. package/es/materials/sxp/HashTag/material.d.ts +2 -0
  51. package/es/materials/sxp/HashTag/material.js +52 -0
  52. package/es/materials/sxp/HashTag/settingRender.d.ts +122 -0
  53. package/es/materials/sxp/HashTag/settingRender.js +153 -0
  54. package/es/materials/sxp/index.d.ts +1 -0
  55. package/es/materials/sxp/index.js +1 -0
  56. package/es/materials/sxp/popup/CommodityDetail/index.d.ts +20 -1
  57. package/es/materials/sxp/popup/CommodityDetail/index.js +44 -21
  58. package/es/materials/sxp/popup/CommodityDetail/material.js +36 -1
  59. package/es/materials/sxp/popup/CommodityDetail/settingRender.d.ts +134 -0
  60. package/es/materials/sxp/popup/CommodityDetail/settingRender.js +167 -0
  61. package/es/materials/sxp/popup/CommodityDetailDiroNew/index.d.ts +13 -1
  62. package/es/materials/sxp/popup/CommodityDetailDiroNew/index.js +20 -17
  63. package/es/materials/sxp/popup/CommodityDetailDiroNew/material.js +46 -1
  64. package/es/materials/sxp/popup/CommodityDetailDiroNew/settingRender.d.ts +134 -0
  65. package/es/materials/sxp/popup/CommodityDetailDiroNew/settingRender.js +171 -0
  66. package/es/materials/sxp/popup/index.d.ts +0 -1
  67. package/es/materials/sxp/popup/index.js +0 -1
  68. package/es/materials/sxp/template/Appoint/index.d.ts +2 -0
  69. package/es/materials/sxp/template/Appoint/index.js +4 -18
  70. package/es/materials/sxp/template/Appoint/material.js +22 -6
  71. package/es/materials/sxp/template/Commodity/index.d.ts +2 -0
  72. package/es/materials/sxp/template/Commodity/index.js +5 -22
  73. package/es/materials/sxp/template/Commodity/material.js +31 -6
  74. package/es/materials/sxp/template/CommodityDiro/index.d.ts +2 -0
  75. package/es/materials/sxp/template/CommodityDiro/index.js +5 -24
  76. package/es/materials/sxp/template/CommodityDiro/material.js +30 -5
  77. package/es/materials/sxp/template/CommodityDiroNew/index.d.ts +2 -0
  78. package/es/materials/sxp/template/CommodityDiroNew/index.js +5 -24
  79. package/es/materials/sxp/template/CommodityDiroNew/material.js +32 -6
  80. package/es/materials/sxp/template/Link/index.d.ts +2 -0
  81. package/es/materials/sxp/template/Link/index.js +4 -13
  82. package/es/materials/sxp/template/Link/material.js +22 -5
  83. package/es/materials/sxp/template/MultiCommodity/index.d.ts +2 -0
  84. package/es/materials/sxp/template/MultiCommodity/index.js +8 -24
  85. package/es/materials/sxp/template/MultiCommodity/material.js +30 -5
  86. package/es/materials/sxp/template/MultiCommodityDiro/index.d.ts +2 -0
  87. package/es/materials/sxp/template/MultiCommodityDiro/index.js +8 -27
  88. package/es/materials/sxp/template/MultiCommodityDiro/material.js +31 -6
  89. package/es/materials/sxp/template/MultiCommodityDiroNew/index.d.ts +2 -0
  90. package/es/materials/sxp/template/MultiCommodityDiroNew/index.js +8 -25
  91. package/es/materials/sxp/template/MultiCommodityDiroNew/material.js +32 -6
  92. package/es/materials/sxp/template/components/EventProvider.d.ts +2 -1
  93. package/es/materials/sxp/template/components/EventProvider.js +5 -4
  94. package/es/materials/sxp/template/components/settingRender.d.ts +123 -0
  95. package/es/materials/sxp/template/components/settingRender.js +215 -0
  96. package/es/materials/sxp/template/components/typing.d.ts +6 -0
  97. package/es/materials/sxp/template/components/typing.js +1 -0
  98. package/lib/core/components/SxpPageCore/index.d.ts +1 -0
  99. package/lib/core/components/SxpPageCore/index.js +2 -2
  100. package/lib/core/components/SxpPageRender/ExpandableText.d.ts +1 -0
  101. package/lib/core/components/SxpPageRender/ExpandableText.js +17 -10
  102. package/lib/core/components/SxpPageRender/Hashtag/index.d.ts +2 -1
  103. package/lib/core/components/SxpPageRender/Hashtag/index.js +3 -3
  104. package/lib/core/components/SxpPageRender/Modal/index.d.ts +2 -0
  105. package/lib/core/components/SxpPageRender/Modal/index.js +7 -4
  106. package/lib/core/components/SxpPageRender/Navbar.d.ts +1 -0
  107. package/lib/core/components/SxpPageRender/Navbar.js +3 -2
  108. package/lib/core/components/SxpPageRender/Nudge/index.d.ts +24 -0
  109. package/lib/core/components/SxpPageRender/Nudge/index.js +16 -0
  110. package/lib/core/components/SxpPageRender/PictureGroup/index.js +10 -6
  111. package/lib/core/components/SxpPageRender/Popup/index.js +3 -3
  112. package/lib/core/components/SxpPageRender/VideoWidget/index.js +30 -21
  113. package/lib/core/components/SxpPageRender/WaterFall/List.d.ts +2 -1
  114. package/lib/core/components/SxpPageRender/WaterFall/List.js +23 -14
  115. package/lib/core/components/SxpPageRender/WaterFall/WaterfallList.d.ts +2 -1
  116. package/lib/core/components/SxpPageRender/WaterFall/WaterfallList.js +15 -13
  117. package/lib/core/components/SxpPageRender/WaterFall/index.d.ts +2 -1
  118. package/lib/core/components/SxpPageRender/WaterFall/index.js +4 -3
  119. package/lib/core/components/SxpPageRender/WaterFall/preview.json +1242 -0
  120. package/lib/core/components/SxpPageRender/index.d.ts +22 -1
  121. package/lib/core/components/SxpPageRender/index.js +22 -19
  122. package/lib/core/components/SxpPageRender/typing.d.ts +1 -0
  123. package/lib/core/components/SxpPageRender/useIconLink.d.ts +1 -1
  124. package/lib/core/components/SxpPageRender/useIconLink.js +8 -3
  125. package/lib/core/context/EditorContext.d.ts +5 -0
  126. package/lib/core/context/EditorContext.js +21 -3
  127. package/lib/core/context/EditorDataProvider.d.ts +3 -1
  128. package/lib/core/context/EditorDataProvider.js +4 -1
  129. package/lib/core/context/SxpDataSourceProvider.d.ts +2 -0
  130. package/lib/core/context/SxpDataSourceProvider.js +8 -4
  131. package/lib/core/create.d.ts +1 -1
  132. package/lib/materials/sxp/HashTag/index.d.ts +14 -0
  133. package/lib/materials/sxp/HashTag/index.js +9 -0
  134. package/lib/materials/sxp/HashTag/material.d.ts +2 -0
  135. package/lib/materials/sxp/HashTag/material.js +56 -0
  136. package/lib/materials/sxp/HashTag/settingRender.d.ts +122 -0
  137. package/lib/materials/sxp/HashTag/settingRender.js +155 -0
  138. package/lib/materials/sxp/index.d.ts +1 -0
  139. package/lib/materials/sxp/index.js +1 -0
  140. package/lib/materials/sxp/popup/CommodityDetail/index.d.ts +20 -1
  141. package/lib/materials/sxp/popup/CommodityDetail/index.js +43 -20
  142. package/lib/materials/sxp/popup/CommodityDetail/material.js +36 -1
  143. package/lib/materials/sxp/popup/CommodityDetail/settingRender.d.ts +134 -0
  144. package/lib/materials/sxp/popup/CommodityDetail/settingRender.js +169 -0
  145. package/lib/materials/sxp/popup/CommodityDetailDiroNew/index.d.ts +13 -1
  146. package/lib/materials/sxp/popup/CommodityDetailDiroNew/index.js +20 -17
  147. package/lib/materials/sxp/popup/CommodityDetailDiroNew/material.js +46 -1
  148. package/lib/materials/sxp/popup/CommodityDetailDiroNew/settingRender.d.ts +134 -0
  149. package/lib/materials/sxp/popup/CommodityDetailDiroNew/settingRender.js +173 -0
  150. package/lib/materials/sxp/popup/index.d.ts +0 -1
  151. package/lib/materials/sxp/popup/index.js +0 -1
  152. package/lib/materials/sxp/template/Appoint/index.d.ts +2 -0
  153. package/lib/materials/sxp/template/Appoint/index.js +4 -18
  154. package/lib/materials/sxp/template/Appoint/material.js +22 -6
  155. package/lib/materials/sxp/template/Commodity/index.d.ts +2 -0
  156. package/lib/materials/sxp/template/Commodity/index.js +5 -22
  157. package/lib/materials/sxp/template/Commodity/material.js +31 -6
  158. package/lib/materials/sxp/template/CommodityDiro/index.d.ts +2 -0
  159. package/lib/materials/sxp/template/CommodityDiro/index.js +5 -24
  160. package/lib/materials/sxp/template/CommodityDiro/material.js +30 -5
  161. package/lib/materials/sxp/template/CommodityDiroNew/index.d.ts +2 -0
  162. package/lib/materials/sxp/template/CommodityDiroNew/index.js +5 -24
  163. package/lib/materials/sxp/template/CommodityDiroNew/material.js +32 -6
  164. package/lib/materials/sxp/template/Link/index.d.ts +2 -0
  165. package/lib/materials/sxp/template/Link/index.js +4 -13
  166. package/lib/materials/sxp/template/Link/material.js +22 -5
  167. package/lib/materials/sxp/template/MultiCommodity/index.d.ts +2 -0
  168. package/lib/materials/sxp/template/MultiCommodity/index.js +7 -23
  169. package/lib/materials/sxp/template/MultiCommodity/material.js +30 -5
  170. package/lib/materials/sxp/template/MultiCommodityDiro/index.d.ts +2 -0
  171. package/lib/materials/sxp/template/MultiCommodityDiro/index.js +7 -26
  172. package/lib/materials/sxp/template/MultiCommodityDiro/material.js +31 -6
  173. package/lib/materials/sxp/template/MultiCommodityDiroNew/index.d.ts +2 -0
  174. package/lib/materials/sxp/template/MultiCommodityDiroNew/index.js +7 -24
  175. package/lib/materials/sxp/template/MultiCommodityDiroNew/material.js +32 -6
  176. package/lib/materials/sxp/template/components/EventProvider.d.ts +2 -1
  177. package/lib/materials/sxp/template/components/EventProvider.js +4 -3
  178. package/lib/materials/sxp/template/components/settingRender.d.ts +123 -0
  179. package/lib/materials/sxp/template/components/settingRender.js +217 -0
  180. package/lib/materials/sxp/template/components/typing.d.ts +6 -0
  181. package/lib/materials/sxp/template/components/typing.js +2 -0
  182. package/package.json +1 -1
@@ -6,6 +6,7 @@ export interface ISxpPageCoreProps {
6
6
  defaultSize?: number;
7
7
  hashTagSize?: number;
8
8
  loadingImage?: string;
9
+ appDomain?: string;
9
10
  }
10
11
  declare const _default: React.NamedExoticComponent<ISxpPageCoreProps>;
11
12
  export default _default;
@@ -8,7 +8,7 @@ const RESOLVER = {};
8
8
  Object.values(_materials_).forEach((v) => {
9
9
  RESOLVER[v.extend.type] = v;
10
10
  });
11
- const SxpPageCore = ({ data, maxSize = 10, defaultSize = 10, hashTagSize = 20, loadingImage }) => {
11
+ const SxpPageCore = ({ data, maxSize = 10, defaultSize = 10, hashTagSize = 20, loadingImage, appDomain }) => {
12
12
  var _a, _b, _c, _d, _e, _f;
13
13
  const utmVal = useMemo(() => {
14
14
  var _a;
@@ -16,7 +16,7 @@ const SxpPageCore = ({ data, maxSize = 10, defaultSize = 10, hashTagSize = 20, l
16
16
  return searchParams;
17
17
  }, []);
18
18
  return (React.createElement(EditorCore, { resolver: RESOLVER, enableDataSource: false, schema: data === null || data === void 0 ? void 0 : data.data, utmVal: utmVal },
19
- React.createElement(SxpDataSourceProvider, { 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, render: ({ rtcList }) => {
19
+ React.createElement(SxpDataSourceProvider, { 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, render: ({ rtcList }) => {
20
20
  var _a;
21
21
  return (React.createElement(React.Fragment, null,
22
22
  React.createElement(SxpPageRender, Object.assign({}, (_a = data === null || data === void 0 ? void 0 : data.data) === null || _a === void 0 ? void 0 : _a.sxpPageConf, { data: rtcList, resolver: RESOLVER })),
@@ -7,6 +7,7 @@ interface IExpandableTextProps {
7
7
  onClick?: () => void;
8
8
  foldText?: string;
9
9
  unfoldText?: string;
10
+ isPost?: boolean;
10
11
  }
11
12
  declare const _default: React.NamedExoticComponent<IExpandableTextProps>;
12
13
  export default _default;
@@ -15,7 +15,7 @@ const limitTextLastWholeWord = (originalText = '', limit) => {
15
15
  const _words = newWords.length > 1 && newWords.length < words.length ? newWords.slice(0, newWords.length - 1) : newWords;
16
16
  return _words.join(' ') + ' ';
17
17
  };
18
- const ExpandableText = ({ text, maxStr = 108, style, className, onClick, foldText, unfoldText }) => {
18
+ const ExpandableText = ({ text, maxStr = 108, style, className, onClick, foldText, unfoldText, isPost }) => {
19
19
  const [isShowMore, setIsShowMore] = useState(true);
20
20
  const [isShow, setIsShow] = useState(false);
21
21
  const lineClamp = Number((style === null || style === void 0 ? void 0 : style.lineClamp) || 2);
@@ -27,20 +27,27 @@ const ExpandableText = ({ text, maxStr = 108, style, className, onClick, foldTex
27
27
  return !isShowMore && text.length > maxStr ? limitTextLastWholeWord(text, maxStr) + '...' : text;
28
28
  }, [text, maxStr, isShowMore]);
29
29
  useEffect(() => {
30
- if (multiRow.current) {
30
+ if (multiRow.current && isPost) {
31
31
  setIsShowMore(true);
32
32
  setTimeout(() => {
33
+ var _a;
33
34
  setIsShow(false);
34
- const height = parseInt(getComputedStyle(multiRow.current).height);
35
- const lineHeight = parseInt(getComputedStyle(multiRow === null || multiRow === void 0 ? void 0 : multiRow.current).lineHeight);
36
- if (text && height > lineHeight * lineClamp) {
37
- setIsShowMore(false);
38
- setIsShow(true);
35
+ try {
36
+ const cs = (_a = window === null || window === void 0 ? void 0 : window.getComputedStyle) === null || _a === void 0 ? void 0 : _a.call(window, multiRow.current);
37
+ const height = parseFloat(cs === null || cs === void 0 ? void 0 : cs.height);
38
+ const lh = parseFloat(cs === null || cs === void 0 ? void 0 : cs.lineHeight);
39
+ const fs = parseFloat(cs === null || cs === void 0 ? void 0 : cs.fontSize) + 4;
40
+ const lineHeight = isNaN(lh) ? fs : lh;
41
+ if (text && height > lineHeight * lineClamp) {
42
+ setIsShowMore(false);
43
+ setIsShow(true);
44
+ }
39
45
  }
46
+ catch (_b) { }
40
47
  }, 100);
41
48
  }
42
- }, [multiRow, text, lineClamp, style]);
43
- return (React.createElement("div", { className: className, style: Object.assign({}, style) },
49
+ }, [multiRow, text, lineClamp, style, isPost]);
50
+ return (React.createElement("div", { className: className, style: Object.assign({}, style), hidden: !text || text === '' },
44
51
  React.createElement("div", { ref: multiRow, style: {
45
52
  overflow: 'hidden',
46
53
  WebkitLineClamp: !isShowMore ? lineClamp : '',
@@ -48,7 +55,7 @@ const ExpandableText = ({ text, maxStr = 108, style, className, onClick, foldTex
48
55
  display: '-webkit-box',
49
56
  WebkitBoxOrient: 'vertical',
50
57
  wordBreak: 'break-word'
51
- } }, text),
58
+ }, dangerouslySetInnerHTML: { __html: text === null || text === void 0 ? void 0 : text.replace(/\n/g, '</br>') } }),
52
59
  isShow && text && (React.createElement("span", { style: { textDecoration: 'underline', cursor: 'pointer' }, onClick: onClick !== null && onClick !== void 0 ? onClick : handleClick }, isShowMore ? unfoldText || 'show less' : foldText || 'show more'))));
53
60
  };
54
61
  export default memo(ExpandableText);
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { CSSProperties } from 'react';
2
2
  import { RecItemType } from '../typing';
3
3
  interface IHashtagProps {
4
4
  tags: string[];
@@ -6,6 +6,7 @@ interface IHashtagProps {
6
6
  itemType: 'VIDEO' | 'PRODUCT' | null;
7
7
  index: number;
8
8
  rec: RecItemType;
9
+ hashTagStyle?: CSSProperties;
9
10
  }
10
11
  declare const _default: React.NamedExoticComponent<IHashtagProps>;
11
12
  export default _default;
@@ -2,9 +2,9 @@ import React, { memo, useMemo, useState } from 'react';
2
2
  import { SwiperSlide } from 'swiper/react';
3
3
  import { useSxpDataSource } from '../../../../core/hooks';
4
4
  import Scroll from '../../../../materials/sxp/template/components/Scroll';
5
- const Hashtag = ({ tags, itemId, itemType, index, rec }) => {
5
+ const Hashtag = ({ tags, itemId, itemType, index, rec, hashTagStyle }) => {
6
6
  const [isShowMore, setIsShowMore] = useState(false);
7
- const { setWaterFallData, setOpenHashtag, setCacheRtcList, setCacheActiveIndex, waterFallData, setIsFromHashtag } = useSxpDataSource();
7
+ const { setWaterFallData, setOpenHashtag, setCacheActiveIndex, waterFallData, setIsFromHashtag } = useSxpDataSource();
8
8
  const handleClickTag = (data) => {
9
9
  if (!waterFallData) {
10
10
  setCacheActiveIndex === null || setCacheActiveIndex === void 0 ? void 0 : setCacheActiveIndex(index);
@@ -35,6 +35,6 @@ const Hashtag = ({ tags, itemId, itemType, index, rec }) => {
35
35
  return (React.createElement("span", { style: { textDecoration: 'underline', cursor: 'pointer', color: '#fff' }, onClick: () => setIsShowMore(!isShowMore) }, isShowMore ? 'show less' : 'show more'));
36
36
  }, [isShowMore, tags]);
37
37
  return (React.createElement("div", { className: 'clc-sxp-bottom-hashtag' },
38
- React.createElement(Scroll, null, tags === null || tags === void 0 ? void 0 : tags.map((item, index) => (React.createElement(SwiperSlide, { key: index, hidden: !isShowMore ? index >= 6 : false, className: 'clc-sxp-bottom-hashtag-item', onClick: () => handleClickTag(item) }, `#${item}`))))));
38
+ React.createElement(Scroll, null, tags === null || tags === void 0 ? void 0 : tags.map((item, index) => (React.createElement(SwiperSlide, { key: index, hidden: !isShowMore ? index >= 6 : false, className: 'clc-sxp-bottom-hashtag-item', style: hashTagStyle, onClick: () => handleClickTag(item) }, `#${item}`))))));
39
39
  };
40
40
  export default memo(Hashtag);
@@ -1,8 +1,10 @@
1
1
  import React, { CSSProperties } from 'react';
2
+ import { IPopupAniType } from '../../../../core/context/EditorContext';
2
3
  interface IModalProps {
3
4
  visible?: boolean;
4
5
  padding?: number | string;
5
6
  modalStyle?: CSSProperties;
7
+ popupAniData?: IPopupAniType;
6
8
  onClose?: () => void;
7
9
  }
8
10
  declare const _default: React.NamedExoticComponent<React.PropsWithChildren<IModalProps>>;
@@ -1,8 +1,11 @@
1
1
  import { debounce } from 'lodash';
2
2
  import React, { memo, useEffect, useRef, useState } from 'react';
3
3
  import * as ReactDOM from 'react-dom';
4
+ import { useEditor } from '../../../../core/hooks';
4
5
  const closeIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAjhJREFUWEfFlztOw0AQhmeWiJ4CCmpQ5DiRQsIJyAWg5A0lR0AIChDiCJS8ER0cADgBeRSxt4CCDgkaKiq8i+zYeWx2413HEWmiJJv9v535Z2aN8M8vFPT9z3zETD0aAUChUJjwvPFHAJhBhB3Hqd6OAsK2yyucwykAvP38eJX398Z3AJDLlVYR8ToU9Rhj25TWr9KEsKy5dULIGQCMtfZly45TvwsAstm56UwG6wA4FUFwzrdctxZBDcWSy5XWEPG8I84/GcMipdWPtgcsaz5PCHtKG0IuTiqUvjT9U/WYMG2IOPE+AP+LtCB0xKUAAyA2Xbd2o2OG0NQXvTnvhL17D7EPtH9TRCIWwkRcGYGIQgYBABuqPuHXOQBc6pw80lBGwBQiiXhsBHQhkoprA6iM6acjhDQKu5YJZW6XeOI3XJdpvfsdTu52VfXEekD8owQiXGIubpSCbhDbLu8DwKEAd+A41SOdPpE4BS0viFOtvV2iKWqUgn5x/tmS70xR01GuDSCKc86/OCcLgTyyZ0ScDGNhFAktAJV4NFJ9YyaFiAWIE+9uVkkgBgLoig8DMWAa9ro9ynkUdlW5maZDCmB6clmz0k1HH4Cs1Ezbq2p2yEpUuBOKTSZZex00RUWIrltxuuK6EOGDSbGIOPZicpMx6fny650377qNRgBgWeVFQuA+6UjVgREhGIMlSqsPUQqIbZdOOIdZQmCv2axRnU1N1+TzJYsxOEaEV8ep7frPZ7Gd0FTEdP0ft0/kMNdg0eoAAAAASUVORK5CYII=';
5
- const Modal = ({ visible, onClose, children, modalStyle, padding }) => {
6
+ const Modal = ({ visible, onClose, children, modalStyle, padding, popupAniData }) => {
7
+ const { popupAni } = useEditor();
8
+ const cssAni = popupAniData !== null && popupAniData !== void 0 ? popupAniData : popupAni;
6
9
  const [isShow, setIsShow] = useState(false);
7
10
  const modalEleRef = useRef(null);
8
11
  useEffect(() => {
@@ -24,16 +27,16 @@ const Modal = ({ visible, onClose, children, modalStyle, padding }) => {
24
27
  else {
25
28
  setTimeout(() => {
26
29
  setIsShow(false);
27
- }, 1200);
30
+ }, cssAni === null || cssAni === void 0 ? void 0 : cssAni.duration);
28
31
  }
29
- }, [visible]);
32
+ }, [visible, cssAni]);
30
33
  if (!modalEleRef.current)
31
34
  return null;
32
35
  const handleClose = debounce(() => {
33
36
  onClose === null || onClose === void 0 ? void 0 : onClose();
34
37
  }, 300);
35
38
  return ReactDOM.createPortal(React.createElement("div", { className: 'modal-bg', style: Object.assign({ display: isShow ? 'flex' : 'none', backgroundColor: visible ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0)' }, modalStyle), onClick: handleClose },
36
- React.createElement("div", { className: `modal-container ${visible ? 'modal-popIn' : 'modal-popOut'}`, style: { padding }, onClick: (e) => {
39
+ React.createElement("div", { className: `modal-container ${visible ? 'modal-popIn' : 'modal-popOut'}`, style: { padding, animationDuration: (cssAni === null || cssAni === void 0 ? void 0 : cssAni.duration) / 1000 + 's' }, onClick: (e) => {
37
40
  e.stopPropagation();
38
41
  e.preventDefault();
39
42
  } },
@@ -2,6 +2,7 @@ import React, { CSSProperties } from 'react';
2
2
  interface INavbarProps {
3
3
  icon?: string;
4
4
  styles?: CSSProperties;
5
+ textStyle?: CSSProperties;
5
6
  onClose?: () => void;
6
7
  }
7
8
  declare const _default: React.NamedExoticComponent<INavbarProps>;
@@ -1,9 +1,10 @@
1
1
  import React, { memo } from 'react';
2
2
  import { useSxpDataSource } from '../../../core/hooks';
3
- const Navbar = ({ icon, styles, onClose }) => {
3
+ const Navbar = ({ icon, styles, textStyle, onClose }) => {
4
+ var _a;
4
5
  const { waterFallData, setOpenHashtag } = useSxpDataSource();
5
6
  return (React.createElement("div", { className: 'clc-sxp-nav', style: styles },
6
7
  React.createElement("img", { className: 'clc-sxp-nav-left', src: icon, alt: '', onClick: onClose }),
7
- React.createElement("div", { className: 'clc-sxp-nav-title' }, `#${waterFallData === null || waterFallData === void 0 ? void 0 : waterFallData.hashTag}`)));
8
+ React.createElement("div", { className: 'clc-sxp-nav-title', style: textStyle }, `#${(_a = waterFallData === null || waterFallData === void 0 ? void 0 : waterFallData.hashTag) !== null && _a !== void 0 ? _a : '标题'}`)));
8
9
  };
9
10
  export default memo(Navbar);
@@ -0,0 +1,24 @@
1
+ import { FC } from 'react';
2
+ interface IProps {
3
+ nudge?: {
4
+ isOpen: boolean;
5
+ icon?: string;
6
+ backgroundColor: string;
7
+ content?: string;
8
+ marginBottom: number;
9
+ borderRadius: number;
10
+ size: {
11
+ height: number;
12
+ width: number;
13
+ };
14
+ textStyle: {
15
+ color: string;
16
+ fontFamily: string;
17
+ fontSize: number;
18
+ fontStyle: string;
19
+ textAlign: string;
20
+ };
21
+ };
22
+ }
23
+ declare const Nudge: FC<IProps>;
24
+ export default Nudge;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ const Nudge = ({ nudge }) => {
3
+ return (React.createElement("div", { hidden: !(nudge === null || nudge === void 0 ? void 0 : nudge.isOpen), className: 'clc-sxp-bottom-nudge', style: {
4
+ marginBottom: nudge === null || nudge === void 0 ? void 0 : nudge.marginBottom,
5
+ width: nudge === null || nudge === void 0 ? void 0 : nudge.size.width,
6
+ height: nudge === null || nudge === void 0 ? void 0 : nudge.size.height,
7
+ backgroundColor: nudge === null || nudge === void 0 ? void 0 : nudge.backgroundColor,
8
+ borderRadius: nudge === null || nudge === void 0 ? void 0 : nudge.borderRadius
9
+ } },
10
+ (nudge === null || nudge === void 0 ? void 0 : nudge.icon) ? React.createElement("img", { src: nudge.icon, style: { height: '100%', objectFit: 'cover' } }) : null,
11
+ React.createElement("p", { style: Object.assign({}, nudge === null || nudge === void 0 ? void 0 : nudge.textStyle) }, nudge === null || nudge === void 0 ? void 0 : nudge.content)));
12
+ };
13
+ export default Nudge;
@@ -1,4 +1,4 @@
1
- import React, { memo, useEffect } from 'react';
1
+ import React, { memo, useEffect, useState } from 'react';
2
2
  import { Autoplay, Pagination } from 'swiper/modules';
3
3
  import { Swiper, SwiperSlide, useSwiperSlide } from 'swiper/react';
4
4
  import Picture from './Picture';
@@ -6,16 +6,20 @@ import { useSxpDataSource } from '../../../../core/hooks';
6
6
  const PictureGroup = ({ imgUrls, width, height, rec, index, onReportViewImageEnd, onViewImageStartEvent }) => {
7
7
  const { isActive } = useSwiperSlide();
8
8
  const { sxpParameter, openHashtag } = useSxpDataSource();
9
+ const [isLoad, setIsLoad] = useState(false);
9
10
  useEffect(() => {
10
- if (!isActive)
11
- return;
12
- if (openHashtag) {
13
- onReportViewImageEnd(rec);
11
+ if (isLoad && isActive) {
12
+ if (openHashtag) {
13
+ onReportViewImageEnd(rec);
14
+ }
15
+ else {
16
+ onViewImageStartEvent(index);
17
+ }
14
18
  }
15
19
  else {
16
- onViewImageStartEvent(index);
20
+ setIsLoad(true);
17
21
  }
18
- }, [rec, isActive, onReportViewImageEnd, openHashtag, index, onViewImageStartEvent]);
22
+ }, [rec, isActive, onReportViewImageEnd, openHashtag, index, onViewImageStartEvent, isLoad]);
19
23
  if (!isActive) {
20
24
  return React.createElement("img", { src: sxpParameter === null || sxpParameter === void 0 ? void 0 : sxpParameter.placeholder_image, style: { width, height, objectFit: 'cover' } });
21
25
  }
@@ -4,7 +4,7 @@ import { useEditor, useSxpDataSource } from '../../../../core/hooks';
4
4
  import withBindDataSource from '../../../../core/hoc/withBindDataSource';
5
5
  import { useEventReport } from '../../../../core/hooks/useEventReport';
6
6
  const Popup = () => {
7
- const { schema, resolver, popup } = useEditor();
7
+ const { schema, resolver, popup, popupAni } = useEditor();
8
8
  const { setPopupDetailData, popupDetailData, bffEventReport } = useSxpDataSource();
9
9
  const { productView } = useEventReport();
10
10
  const [visible, setVisible] = useState(false);
@@ -27,7 +27,7 @@ const Popup = () => {
27
27
  }, [popup]);
28
28
  const handleClose = () => {
29
29
  var _a, _b, _c;
30
- if (!popup || popup === '' || !visible || new Date() - curTimeRef.current < 1200) {
30
+ if (!popup || popup === '' || !visible || new Date() - curTimeRef.current < (popupAni === null || popupAni === void 0 ? void 0 : popupAni.duration)) {
31
31
  return;
32
32
  }
33
33
  setVisible(false);
@@ -40,7 +40,7 @@ const Popup = () => {
40
40
  setTimeout(() => {
41
41
  window === null || window === void 0 ? void 0 : window.sxpPopup('');
42
42
  setPopupDetailData === null || setPopupDetailData === void 0 ? void 0 : setPopupDetailData(null);
43
- }, 1200);
43
+ }, popupAni === null || popupAni === void 0 ? void 0 : popupAni.duration);
44
44
  };
45
45
  const renderPopupDetail = useMemo(() => {
46
46
  var _a, _b, _c;
@@ -16,8 +16,10 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex }) => {
16
16
  videoRef.current.muted = muted;
17
17
  }, [muted]);
18
18
  const handleVideoStart = useCallback(() => {
19
- var _a;
20
- (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.play();
19
+ var _a, _b;
20
+ if (!(videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) || ((_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.readyState) < 2)
21
+ return;
22
+ (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.play();
21
23
  }, []);
22
24
  const PAUSE_ICON = useIconLink('/pb_static/06f28a2025c74c1cb49be6767316d827.png');
23
25
  const handlePlaying = useCallback(() => {
@@ -74,37 +76,38 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex }) => {
74
76
  });
75
77
  }
76
78
  setTimeout(() => {
77
- var _a;
78
- (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.play();
79
+ var _a, _b;
80
+ if (!(videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) || ((_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.readyState) < 2)
81
+ return;
82
+ (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.play();
79
83
  }, 0);
80
84
  }, [index, bffEventReport, data, isLoad]);
81
85
  const handleClickVideo = useCallback((type) => () => {
82
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
86
+ var _a, _b, _c, _d, _e, _f;
87
+ if (!(videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) || ((_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.readyState) < 2)
88
+ return;
83
89
  if (!isLoad)
84
90
  return;
85
- const item = data[index];
86
- const videoDuration = ((_b = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.duration) !== null && _b !== void 0 ? _b : 0).toFixed(2);
87
- const videoCurrentTime = ((_d = (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.currentTime) !== null && _d !== void 0 ? _d : 0).toFixed(2);
88
- const isPause = (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.paused;
91
+ const isPause = (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.paused;
89
92
  switch (type) {
90
93
  case 'start':
91
94
  if (!isPause)
92
95
  return;
93
- (_f = videoRef.current) === null || _f === void 0 ? void 0 : _f.play();
96
+ (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.play();
94
97
  setIsPauseVideo(false);
95
98
  break;
96
99
  case 'pause':
97
100
  if (isPause)
98
101
  return;
99
- (_g = videoRef.current) === null || _g === void 0 ? void 0 : _g.pause();
102
+ (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.pause();
100
103
  setIsPauseVideo(true);
101
104
  break;
102
105
  default:
103
106
  if (isPause) {
104
- (_h = videoRef.current) === null || _h === void 0 ? void 0 : _h.play();
107
+ (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.play();
105
108
  }
106
109
  else {
107
- (_j = videoRef.current) === null || _j === void 0 ? void 0 : _j.pause();
110
+ (_f = videoRef.current) === null || _f === void 0 ? void 0 : _f.pause();
108
111
  }
109
112
  setIsPauseVideo(!isPause);
110
113
  break;
@@ -135,14 +138,16 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex }) => {
135
138
  }
136
139
  }, [data, index, bffEventReport]);
137
140
  useEffect(() => {
138
- var _a, _b, _c;
141
+ var _a, _b, _c, _d, _e, _f;
139
142
  if (data.length <= 0)
140
143
  return;
141
144
  if (!videoRef.current)
142
145
  return;
146
+ const isPause = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.paused;
143
147
  setIsPauseVideo(false);
144
148
  if (!isActive) {
145
- (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.pause();
149
+ if (!isPause && ((_b = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _b === void 0 ? void 0 : _b.readyState) >= 2)
150
+ (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.pause();
146
151
  return;
147
152
  }
148
153
  if (!videoRef.current.src) {
@@ -152,10 +157,12 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex }) => {
152
157
  videoRef.current.setAttribute('webkit-playsinline', 'true');
153
158
  }
154
159
  else {
160
+ if (((_d = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _d === void 0 ? void 0 : _d.readyState) < 2)
161
+ return;
155
162
  videoRef.current.play();
156
163
  }
157
- (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('canplay', handleLoadedMetadata);
158
- (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.addEventListener('playing', handlePlaying);
164
+ (_e = videoRef.current) === null || _e === void 0 ? void 0 : _e.addEventListener('canplay', handleLoadedMetadata);
165
+ (_f = videoRef.current) === null || _f === void 0 ? void 0 : _f.addEventListener('playing', handlePlaying);
159
166
  return () => {
160
167
  var _a, _b;
161
168
  (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('canplay', handleLoadedMetadata);
@@ -163,15 +170,17 @@ const VideoWidget = ({ rec, index, height, data, muted, activeIndex }) => {
163
170
  };
164
171
  }, [data, handleLoadedMetadata, handlePlaying, isActive, isLoad, rec.video]);
165
172
  useEffect(() => {
166
- var _a, _b, _c;
167
- const isPause = (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.paused;
173
+ var _a, _b, _c, _d;
174
+ if (!(videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) || ((_a = videoRef === null || videoRef === void 0 ? void 0 : videoRef.current) === null || _a === void 0 ? void 0 : _a.readyState) < 2)
175
+ return;
176
+ const isPause = (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.paused;
168
177
  if (!isActive)
169
178
  return;
170
179
  if (!isPause && openHashtag) {
171
- (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.pause();
180
+ (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.pause();
172
181
  }
173
182
  else if (!openHashtag) {
174
- (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.play();
183
+ (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.play();
175
184
  }
176
185
  }, [openHashtag, isActive]);
177
186
  useEffect(() => {
@@ -1,3 +1,4 @@
1
1
  import React from 'react';
2
2
  import './List.less';
3
- export default function WaterfallList({ reportTagsView }: any): React.JSX.Element;
3
+ import { IHashTagProps } from '../../../../materials/sxp/HashTag';
4
+ export default function WaterfallList({ reportTagsView, ...props }: any & IHashTagProps): React.JSX.Element;
@@ -1,8 +1,10 @@
1
+ import { __rest } from "tslib";
1
2
  import React, { useState, useEffect, useMemo, useRef, useCallback } from 'react';
2
3
  import './List.less';
4
+ import previewData from './preview.json';
3
5
  import { useSxpDataSource } from '../../../../core/hooks';
4
6
  const WaterfallFlowItem = (props) => {
5
- const { rec, index, list, reportTagsView } = props;
7
+ const { rec, index, list, reportTagsView, textStyles, space } = props;
6
8
  const { swiperRef, setRtcList, setOpenHashtag, bffEventReport, sxpParameter } = useSxpDataSource();
7
9
  const [showVideo, setShowVideo] = useState(false);
8
10
  const imgDom = useRef(null);
@@ -102,19 +104,20 @@ const WaterfallFlowItem = (props) => {
102
104
  setOpenHashtag === null || setOpenHashtag === void 0 ? void 0 : setOpenHashtag(false);
103
105
  }, 0);
104
106
  };
105
- return (React.createElement("div", { className: 'list-content-listItem', key: index, onClick: handleClickToDetail },
107
+ return (React.createElement("div", { className: 'list-content-listItem', key: index, onClick: handleClickToDetail, style: { marginBottom: space } },
106
108
  React.createElement("div", { className: 'list-content-listItem-picture' },
107
109
  showVideo && (React.createElement("div", { style: { display: 'none' } },
108
110
  React.createElement("video", { ref: videoDom, crossOrigin: 'anonymous', className: 'list-content-listItem-picture-img' }),
109
111
  React.createElement("canvas", { ref: canvasRef }))),
110
112
  React.createElement("img", { className: 'list-content-listItem-picture-img', loading: 'lazy', ref: imgDom })),
111
113
  React.createElement("div", { className: 'list-content-listItem-info' },
112
- React.createElement("div", { className: `${'list-content-listItem-info-title'} ${priceText ? 'list-content-listItem-info-nowrap' : ''}` }, title && title),
113
- React.createElement("div", { className: 'list-content-listItem-info-price', hidden: !priceText }, priceText))));
114
+ React.createElement("div", { className: `${'list-content-listItem-info-title'} ${priceText ? 'list-content-listItem-info-nowrap' : ''}`, style: textStyles === null || textStyles === void 0 ? void 0 : textStyles.title }, title && title),
115
+ React.createElement("div", { className: 'list-content-listItem-info-price', style: textStyles.price, hidden: !priceText }, priceText))));
114
116
  };
115
- export default function WaterfallList({ reportTagsView }) {
116
- var _a, _b, _c, _d, _e, _f;
117
- const { waterFallData, getRecommendVideos, hashTagSize, loadingImage } = useSxpDataSource();
117
+ export default function WaterfallList(_a) {
118
+ var _b, _c, _d, _e, _f, _g, _h;
119
+ var { reportTagsView } = _a, props = __rest(_a, ["reportTagsView"]);
120
+ const { waterFallData, getRecommendVideos, hashTagSize, loadingImage, isOpenHashTag } = useSxpDataSource();
118
121
  const [list, setList] = useState();
119
122
  const [data, setData] = useState();
120
123
  const [isLoadingData, setIsLoadingData] = useState(false);
@@ -136,6 +139,7 @@ export default function WaterfallList({ reportTagsView }) {
136
139
  }));
137
140
  }, [waterFallData, getRecommendVideos, list, isLoadMore]);
138
141
  useEffect(() => {
142
+ var _a, _b;
139
143
  setIsLoadingData(true);
140
144
  waterFallData &&
141
145
  (getRecommendVideos === null || getRecommendVideos === void 0 ? void 0 : getRecommendVideos({
@@ -149,7 +153,13 @@ export default function WaterfallList({ reportTagsView }) {
149
153
  setList((_b = (_a = res === null || res === void 0 ? void 0 : res.recList) === null || _a === void 0 ? void 0 : _a.filter((item) => (item === null || item === void 0 ? void 0 : item.video) !== null || (item === null || item === void 0 ? void 0 : item.product) !== null)) !== null && _b !== void 0 ? _b : []);
150
154
  setIsLoadingData(false);
151
155
  }));
152
- }, [waterFallData, getRecommendVideos, hashTagSize]);
156
+ if (isOpenHashTag) {
157
+ const res = previewData;
158
+ setData(res);
159
+ setList((_b = (_a = res === null || res === void 0 ? void 0 : res.recList) === null || _a === void 0 ? void 0 : _a.filter((item) => (item === null || item === void 0 ? void 0 : item.video) !== null || (item === null || item === void 0 ? void 0 : item.product) !== null)) !== null && _b !== void 0 ? _b : []);
160
+ setIsLoadingData(false);
161
+ }
162
+ }, [waterFallData, getRecommendVideos, hashTagSize, isOpenHashTag]);
153
163
  const handleClickLink = () => {
154
164
  var _a, _b;
155
165
  if ((_a = data === null || data === void 0 ? void 0 : data.tag) === null || _a === void 0 ? void 0 : _a.link) {
@@ -160,14 +170,14 @@ export default function WaterfallList({ reportTagsView }) {
160
170
  return (React.createElement(React.Fragment, null, isLoadingData ? (React.createElement("div", { style: { height: '100%', width: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center' } },
161
171
  React.createElement("img", { width: 64, height: 64, src: loadingImage, alt: 'loading...', style: { objectFit: 'contain' } }))) : (React.createElement("div", { className: 'list' },
162
172
  React.createElement("div", { className: 'list-scroll', ref: containerRef, style: {
163
- bottom: ((_a = data === null || data === void 0 ? void 0 : data.tag) === null || _a === void 0 ? void 0 : _a.link) ? '100px' : 0
173
+ bottom: ((_b = data === null || data === void 0 ? void 0 : data.tag) === null || _b === void 0 ? void 0 : _b.link) ? '100px' : 0
164
174
  } },
165
- React.createElement("div", { className: 'list-info' }, (_b = data === null || data === void 0 ? void 0 : data.tag) === null || _b === void 0 ? void 0 : _b.info),
166
- React.createElement("div", { hidden: !((_c = data === null || data === void 0 ? void 0 : data.tag) === null || _c === void 0 ? void 0 : _c.link), className: 'list-collection', onClick: handleClickLink }, ((_d = data === null || data === void 0 ? void 0 : data.tag) === null || _d === void 0 ? void 0 : _d.linkTitle) || 'Shop the collection'),
175
+ React.createElement("div", { className: 'list-info', style: (_c = props === null || props === void 0 ? void 0 : props.textStyles) === null || _c === void 0 ? void 0 : _c.hashTagDesc }, (_d = data === null || data === void 0 ? void 0 : data.tag) === null || _d === void 0 ? void 0 : _d.info),
176
+ React.createElement("div", { hidden: !((_e = data === null || data === void 0 ? void 0 : data.tag) === null || _e === void 0 ? void 0 : _e.link), className: 'list-collection', onClick: handleClickLink, style: { marginBottom: props === null || props === void 0 ? void 0 : props.space } }, ((_f = data === null || data === void 0 ? void 0 : data.tag) === null || _f === void 0 ? void 0 : _f.linkTitle) || 'Shop the collection'),
167
177
  React.createElement("div", { className: 'list-content' }, list === null || list === void 0 ? void 0 : list.map((item, ind) => {
168
- return (React.createElement(WaterfallFlowItem, { key: ind, index: ind, rec: item, list: list, reportTagsView: reportTagsView }));
178
+ return (React.createElement(WaterfallFlowItem, Object.assign({ key: ind, index: ind, rec: item, list: list, reportTagsView: reportTagsView }, props)));
169
179
  })),
170
180
  React.createElement("div", { hidden: !isLoadMore, style: { textAlign: 'center' } }, "loading...")),
171
- React.createElement("div", { className: 'list-bottom', hidden: !((_e = data === null || data === void 0 ? void 0 : data.tag) === null || _e === void 0 ? void 0 : _e.link) },
172
- React.createElement("button", { className: 'list-bottom-btn', onClick: handleClickLink }, ((_f = data === null || data === void 0 ? void 0 : data.tag) === null || _f === void 0 ? void 0 : _f.linkTitle) || 'Shop the collection'))))));
181
+ React.createElement("div", { className: 'list-bottom', hidden: !((_g = data === null || data === void 0 ? void 0 : data.tag) === null || _g === void 0 ? void 0 : _g.link) },
182
+ React.createElement("button", { className: 'list-bottom-btn', style: props === null || props === void 0 ? void 0 : props.buttonStyle, onClick: handleClickLink }, ((_h = data === null || data === void 0 ? void 0 : data.tag) === null || _h === void 0 ? void 0 : _h.linkTitle) || 'Shop the collection'))))));
173
183
  }
@@ -1,3 +1,4 @@
1
1
  import React from 'react';
2
2
  import './WaterfallList.less';
3
- export default function WaterfallList({ reportTagsView }: any): React.JSX.Element;
3
+ import { IHashTagProps } from '../../../../materials/sxp/HashTag';
4
+ export default function WaterfallList({ reportTagsView, ...props }: any & IHashTagProps): React.JSX.Element;
@@ -1,8 +1,9 @@
1
+ import { __rest } from "tslib";
1
2
  import React, { useState, useEffect, useRef, useMemo, useCallback } from 'react';
2
- import { useSxpDataSource } from '../../../../core/hooks';
3
+ import { useEditor, useSxpDataSource } from '../../../../core/hooks';
3
4
  import './WaterfallList.less';
4
5
  const WaterfallFlowItem = (props) => {
5
- const { rec, style = {}, sizeChange = () => { }, unitWidth, index, showBorder, list, reportTagsView } = props;
6
+ const { rec, style = {}, sizeChange = () => { }, unitWidth, index, showBorder, list, reportTagsView, textStyles, lineClamp } = props;
6
7
  const { swiperRef, setRtcList, setOpenHashtag, sxpParameter } = useSxpDataSource();
7
8
  const [showVideo, setShowVideo] = useState(false);
8
9
  const [isLoading, setIsLoading] = useState(false);
@@ -138,11 +139,13 @@ const WaterfallFlowItem = (props) => {
138
139
  visibility: isLoading ? 'visible' : 'hidden'
139
140
  } })),
140
141
  React.createElement("div", { className: 'waterFallList-content-listItem-info' },
141
- React.createElement("div", { className: `${'waterFallList-content-listItem-info-title'} ${priceText ? 'waterFallList-content-listItem-info-nowrap' : ''}` }, title && title),
142
- React.createElement("div", { className: 'waterFallList-content-listItem-info-price', hidden: !priceText }, priceText))));
142
+ React.createElement("div", { className: `${'waterFallList-content-listItem-info-title'} ${priceText ? 'waterFallList-content-listItem-info-nowrap' : ''}`, style: Object.assign({}, textStyles === null || textStyles === void 0 ? void 0 : textStyles.title) }, title && title),
143
+ React.createElement("div", { className: 'waterFallList-content-listItem-info-price', hidden: !priceText, style: textStyles.price }, priceText))));
143
144
  };
144
- export default function WaterfallList({ reportTagsView }) {
145
- var _a, _b, _c, _d, _e, _f;
145
+ export default function WaterfallList(_a) {
146
+ var _b, _c, _d, _e, _f, _g, _h;
147
+ var { reportTagsView } = _a, props = __rest(_a, ["reportTagsView"]);
148
+ const { popupAni } = useEditor();
146
149
  const { waterFallData, getRecommendVideos, loadingImage } = useSxpDataSource();
147
150
  const scrollParent = useRef(null);
148
151
  const [scrollTop, setScrollTop] = useState(0);
@@ -160,7 +163,7 @@ export default function WaterfallList({ reportTagsView }) {
160
163
  const [frameInfo, setFrameInfoInfo] = useState({ width: 0 });
161
164
  const rowsNum = useMemo(() => {
162
165
  const width = frameInfo.width || 0;
163
- if (width >= 1200) {
166
+ if (width >= (popupAni === null || popupAni === void 0 ? void 0 : popupAni.duration)) {
164
167
  return 6;
165
168
  }
166
169
  else if (width >= 768 && width <= 1199) {
@@ -169,7 +172,7 @@ export default function WaterfallList({ reportTagsView }) {
169
172
  else {
170
173
  return 2;
171
174
  }
172
- }, [frameInfo]);
175
+ }, [frameInfo, popupAni]);
173
176
  const unitWidth = useMemo(() => {
174
177
  return frameInfo.width / rowsNum - 2;
175
178
  }, [rowsNum, frameInfo]);
@@ -305,13 +308,13 @@ export default function WaterfallList({ reportTagsView }) {
305
308
  React.createElement("img", { width: 64, height: 64, src: loadingImage, alt: 'loading...', style: { objectFit: 'contain' } })),
306
309
  React.createElement("div", { className: 'waterFallList', hidden: isLoadingData },
307
310
  React.createElement("div", { className: 'waterFallList-scroll', ref: scrollParent, style: {
308
- bottom: ((_a = data === null || data === void 0 ? void 0 : data.tag) === null || _a === void 0 ? void 0 : _a.link) ? '100px' : 0
311
+ bottom: ((_b = data === null || data === void 0 ? void 0 : data.tag) === null || _b === void 0 ? void 0 : _b.link) ? '100px' : 0
309
312
  } },
310
- React.createElement("div", { className: 'waterFallList-info' }, (_b = data === null || data === void 0 ? void 0 : data.tag) === null || _b === void 0 ? void 0 : _b.info),
311
- React.createElement("div", { hidden: !((_c = data === null || data === void 0 ? void 0 : data.tag) === null || _c === void 0 ? void 0 : _c.link), className: 'waterFallList-collection', onClick: handleClickLink }, ((_d = data === null || data === void 0 ? void 0 : data.tag) === null || _d === void 0 ? void 0 : _d.linkTitle) || 'Shop the collection'),
313
+ React.createElement("div", { className: 'waterFallList-info', style: (_c = props === null || props === void 0 ? void 0 : props.textStyles) === null || _c === void 0 ? void 0 : _c.hashTagDesc }, (_d = data === null || data === void 0 ? void 0 : data.tag) === null || _d === void 0 ? void 0 : _d.info),
314
+ React.createElement("div", { hidden: !((_e = data === null || data === void 0 ? void 0 : data.tag) === null || _e === void 0 ? void 0 : _e.link), className: 'waterFallList-collection', onClick: handleClickLink }, ((_f = data === null || data === void 0 ? void 0 : data.tag) === null || _f === void 0 ? void 0 : _f.linkTitle) || 'Shop the collection'),
312
315
  React.createElement("div", { className: 'waterFallList-content', ref: waterfallFlowDom }, list === null || list === void 0 ? void 0 : list.map((item, ind) => {
313
- return (React.createElement(WaterfallFlowItem, { key: ind, index: ind, rec: item, list: list, showBorder: scrollTop + scrollParent.current.clientHeight, style: styleList[ind], sizeChange: onSizeChange, unitWidth: unitWidth, reportTagsView: reportTagsView }));
316
+ return (React.createElement(WaterfallFlowItem, Object.assign({ key: ind, index: ind, rec: item, list: list, showBorder: scrollTop + scrollParent.current.clientHeight, style: styleList[ind], sizeChange: onSizeChange, unitWidth: unitWidth, reportTagsView: reportTagsView }, props)));
314
317
  }))),
315
- React.createElement("div", { className: 'waterFallList-bottom', hidden: !((_e = data === null || data === void 0 ? void 0 : data.tag) === null || _e === void 0 ? void 0 : _e.link) },
316
- React.createElement("button", { className: 'waterFallList-bottom-btn', onClick: handleClickLink }, ((_f = data === null || data === void 0 ? void 0 : data.tag) === null || _f === void 0 ? void 0 : _f.linkTitle) || 'Shop the collection')))));
318
+ React.createElement("div", { className: 'waterFallList-bottom', hidden: !((_g = data === null || data === void 0 ? void 0 : data.tag) === null || _g === void 0 ? void 0 : _g.link) },
319
+ React.createElement("button", { className: 'waterFallList-bottom-btn', style: props === null || props === void 0 ? void 0 : props.buttonStyle, onClick: handleClickLink }, ((_h = data === null || data === void 0 ? void 0 : data.tag) === null || _h === void 0 ? void 0 : _h.linkTitle) || 'Shop the collection')))));
317
320
  }
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import './index.less';
3
+ import { IHashTagProps } from '../../../../materials/sxp/HashTag';
3
4
  interface IWaterFallProps {
4
5
  }
5
- declare const _default: React.NamedExoticComponent<IWaterFallProps>;
6
+ declare const _default: React.NamedExoticComponent<IWaterFallProps & IHashTagProps>;
6
7
  export default _default;