@xhsreds/reds-rn-next 0.9.1-beta202510291556 → 0.9.1-beta202512012032

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 (127) hide show
  1. package/coverage/.tmp/coverage-0.json +1 -1
  2. package/coverage/.tmp/coverage-1.json +1 -1
  3. package/coverage/.tmp/coverage-10.json +1 -1
  4. package/coverage/.tmp/coverage-12.json +1 -1
  5. package/coverage/.tmp/coverage-13.json +1 -1
  6. package/coverage/.tmp/coverage-14.json +1 -1
  7. package/coverage/.tmp/coverage-16.json +1 -1
  8. package/coverage/.tmp/coverage-17.json +1 -1
  9. package/coverage/.tmp/coverage-18.json +1 -1
  10. package/coverage/.tmp/coverage-19.json +1 -1
  11. package/coverage/.tmp/coverage-2.json +1 -1
  12. package/coverage/.tmp/coverage-20.json +1 -1
  13. package/coverage/.tmp/coverage-21.json +1 -1
  14. package/coverage/.tmp/coverage-22.json +1 -1
  15. package/coverage/.tmp/coverage-23.json +1 -1
  16. package/coverage/.tmp/coverage-25.json +1 -1
  17. package/coverage/.tmp/coverage-26.json +1 -1
  18. package/coverage/.tmp/coverage-27.json +1 -1
  19. package/coverage/.tmp/coverage-29.json +1 -1
  20. package/coverage/.tmp/coverage-3.json +1 -1
  21. package/coverage/.tmp/coverage-30.json +1 -1
  22. package/coverage/.tmp/coverage-33.json +1 -1
  23. package/coverage/.tmp/coverage-34.json +1 -1
  24. package/coverage/.tmp/coverage-35.json +1 -1
  25. package/coverage/.tmp/coverage-36.json +1 -1
  26. package/coverage/.tmp/coverage-37.json +1 -1
  27. package/coverage/.tmp/coverage-38.json +1 -1
  28. package/coverage/.tmp/coverage-39.json +1 -1
  29. package/coverage/.tmp/coverage-4.json +1 -1
  30. package/coverage/.tmp/coverage-40.json +1 -1
  31. package/coverage/.tmp/coverage-41.json +1 -1
  32. package/coverage/.tmp/coverage-42.json +1 -1
  33. package/coverage/.tmp/coverage-5.json +1 -1
  34. package/coverage/.tmp/coverage-6.json +1 -1
  35. package/coverage/.tmp/coverage-7.json +1 -1
  36. package/coverage/.tmp/coverage-8.json +1 -1
  37. package/lib/cjs/_chunks/{CIr5S84J.js → DUU5wf2f.js} +4 -2
  38. package/lib/cjs/_chunks/DUU5wf2f.js.map +1 -0
  39. package/lib/cjs/components/ActionablePopover/ActionablePopover.js +2 -2
  40. package/lib/cjs/components/ActionablePopover/ActionablePopover.js.map +1 -1
  41. package/lib/cjs/components/Divider/Divider.js +33 -12
  42. package/lib/cjs/components/Divider/Divider.js.map +1 -1
  43. package/lib/cjs/components/Divider/index.js +3 -3
  44. package/lib/cjs/components/Divider/styles.js +36 -30
  45. package/lib/cjs/components/Divider/styles.js.map +1 -1
  46. package/lib/cjs/components/Image/Image.js +29 -92
  47. package/lib/cjs/components/Image/Image.js.map +1 -1
  48. package/lib/cjs/components/Image/VisibilitySensor.js +1 -1
  49. package/lib/cjs/components/Image/VisibilitySensor.js.map +1 -1
  50. package/lib/cjs/components/Image/index.js +4 -3
  51. package/lib/cjs/components/Image/index.js.map +1 -1
  52. package/lib/cjs/components/Image/queryCacheBatcher.js +96 -0
  53. package/lib/cjs/components/Image/queryCacheBatcher.js.map +1 -0
  54. package/lib/cjs/components/PickerView/Wheel.js +38 -4
  55. package/lib/cjs/components/PickerView/Wheel.js.map +1 -1
  56. package/lib/cjs/components/PullRefresh/PullRefresh.js +104 -40
  57. package/lib/cjs/components/PullRefresh/PullRefresh.js.map +1 -1
  58. package/lib/cjs/components/PullRefresh/component.js +1 -1
  59. package/lib/cjs/components/PullRefresh/index.js +1 -1
  60. package/lib/cjs/components/PullRefresh/interface/index.js +1 -1
  61. package/lib/cjs/components/Radio/Radio.js +3 -2
  62. package/lib/cjs/components/Radio/Radio.js.map +1 -1
  63. package/lib/cjs/components/Radio/index.js +3 -2
  64. package/lib/cjs/components/Radio/index.js.map +1 -1
  65. package/lib/cjs/components/StatusBar/hook/getStatusHeight.js +14 -1
  66. package/lib/cjs/components/StatusBar/hook/getStatusHeight.js.map +1 -1
  67. package/lib/cjs/index.js +3 -2
  68. package/lib/cjs/index.js.map +1 -1
  69. package/lib/esm/_chunks/{CZtagXcj.js → gC9g4Fr_.js} +4 -2
  70. package/lib/esm/_chunks/gC9g4Fr_.js.map +1 -0
  71. package/lib/esm/components/ActionablePopover/ActionablePopover.js +1 -1
  72. package/lib/esm/components/ActionablePopover/ActionablePopover.js.map +1 -1
  73. package/lib/esm/components/Divider/Divider.js +35 -14
  74. package/lib/esm/components/Divider/Divider.js.map +1 -1
  75. package/lib/esm/components/Divider/index.js +3 -3
  76. package/lib/esm/components/Divider/styles.js +36 -30
  77. package/lib/esm/components/Divider/styles.js.map +1 -1
  78. package/lib/esm/components/Image/Image.js +31 -94
  79. package/lib/esm/components/Image/Image.js.map +1 -1
  80. package/lib/esm/components/Image/VisibilitySensor.js +1 -1
  81. package/lib/esm/components/Image/VisibilitySensor.js.map +1 -1
  82. package/lib/esm/components/Image/index.js +4 -3
  83. package/lib/esm/components/Image/index.js.map +1 -1
  84. package/lib/esm/components/Image/queryCacheBatcher.js +92 -0
  85. package/lib/esm/components/Image/queryCacheBatcher.js.map +1 -0
  86. package/lib/esm/components/PickerView/Wheel.js +38 -4
  87. package/lib/esm/components/PickerView/Wheel.js.map +1 -1
  88. package/lib/esm/components/PullRefresh/PullRefresh.js +105 -41
  89. package/lib/esm/components/PullRefresh/PullRefresh.js.map +1 -1
  90. package/lib/esm/components/PullRefresh/component.js +1 -1
  91. package/lib/esm/components/PullRefresh/index.js +1 -1
  92. package/lib/esm/components/PullRefresh/interface/index.js +1 -1
  93. package/lib/esm/components/Radio/Radio.js +3 -2
  94. package/lib/esm/components/Radio/Radio.js.map +1 -1
  95. package/lib/esm/components/Radio/index.js +3 -2
  96. package/lib/esm/components/Radio/index.js.map +1 -1
  97. package/lib/esm/components/StatusBar/hook/getStatusHeight.js +14 -2
  98. package/lib/esm/components/StatusBar/hook/getStatusHeight.js.map +1 -1
  99. package/lib/esm/index.js +3 -2
  100. package/lib/esm/index.js.map +1 -1
  101. package/lib/src/components/Divider/styles.d.ts +3 -2
  102. package/lib/src/components/Image/queryCacheBatcher.d.ts +5 -0
  103. package/lib/src/components/PullRefresh/PullRefresh.d.ts +2 -0
  104. package/lib/src/components/PullRefresh/interface/index.d.ts +5 -0
  105. package/lib/src/components/StatusBar/hook/getStatusHeight.d.ts +1 -0
  106. package/lib/types/components/Divider/styles.d.ts +3 -2
  107. package/lib/types/components/Image/queryCacheBatcher.d.ts +5 -0
  108. package/lib/types/components/PullRefresh/PullRefresh.d.ts +2 -0
  109. package/lib/types/components/PullRefresh/interface/index.d.ts +5 -0
  110. package/lib/types/components/StatusBar/hook/getStatusHeight.d.ts +1 -0
  111. package/package.json +2 -2
  112. package/src/components/ActionablePopover/ActionablePopover.tsx +10 -1
  113. package/src/components/Divider/Divider.tsx +29 -9
  114. package/src/components/Divider/demo/index.tsx +12 -6
  115. package/src/components/Divider/styles.ts +33 -30
  116. package/src/components/Image/Image.tsx +53 -115
  117. package/src/components/Image/VisibilitySensor.tsx +1 -2
  118. package/src/components/Image/queryCacheBatcher.ts +84 -0
  119. package/src/components/PickerView/Wheel.tsx +35 -0
  120. package/src/components/PullRefresh/PullRefresh.tsx +146 -55
  121. package/src/components/PullRefresh/doc/index.mdx +19 -16
  122. package/src/components/PullRefresh/interface/index.ts +6 -0
  123. package/src/components/StatusBar/hook/getStatusHeight.ts +20 -1
  124. package/src/i18n/@types/resources.d.ts +18 -18
  125. package/src/i18n/index.json +31 -31
  126. package/lib/cjs/_chunks/CIr5S84J.js.map +0 -1
  127. package/lib/esm/_chunks/CZtagXcj.js.map +0 -1
@@ -188,9 +188,10 @@ import '../Image/styles.js';
188
188
  import '../Image/hook/index.js';
189
189
  import '../Image/CircularProgress.js';
190
190
  import '../Image/utils.js';
191
- import '../Image/VisibilitySensor.js';
192
191
  import '../Image/apm.js';
192
+ import '../Image/queryCacheBatcher.js';
193
193
  import '../Image/Image69.js';
194
+ import '../Image/VisibilitySensor.js';
194
195
  import '../Popover/Popover.js';
195
196
  import '../Popover/component.js';
196
197
  import '../../_chunks/Da9cW8JG.js';
@@ -223,7 +224,7 @@ import '../../_chunks/BKS4Pa1R.js';
223
224
  import '../Result/styles.js';
224
225
  import '../Result/hooks/useDefaultIcon.js';
225
226
  import '../PullRefresh/PullRefresh.js';
226
- import '../../_chunks/CZtagXcj.js';
227
+ import '../../_chunks/gC9g4Fr_.js';
227
228
  import '../PullRefresh/component.js';
228
229
  import '../PullRefresh/Refresh.js';
229
230
  import '../Avatar/Avatar.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -25,6 +25,12 @@ var IPADPRO11_WIDTH = 834;
25
25
  var IPADPRO11_HEIGHT = 1194;
26
26
  var IPADPRO129_HEIGHT = 1024;
27
27
  var IPADPRO129_WIDTH = 1366;
28
+ var IPHONE17AIR_WIDTH = 420;
29
+ var IPHONE17AIR_HEIGHT = 912;
30
+ var IPHONE17_WIDTH = 402;
31
+ var IPHONE17_HEIGHT = 874;
32
+ var IPHONE17PROMAX_WIDTH = 440;
33
+ var IPHONE17PROMAX_HEIGHT = 956;
28
34
  var getResolvedDimensions = function getResolvedDimensions() {
29
35
  var _Dimensions$get = Dimensions.get("window"),
30
36
  width = _Dimensions$get.width,
@@ -58,6 +64,9 @@ var isIPhoneX = function () {
58
64
  if (Platform.OS === "web") return false;
59
65
  return Platform.OS === "ios" && (D_HEIGHT === X_HEIGHT && D_WIDTH === X_WIDTH || D_HEIGHT === X_WIDTH && D_WIDTH === X_HEIGHT) || D_HEIGHT === XSMAX_HEIGHT && D_WIDTH === XSMAX_WIDTH || D_HEIGHT === XSMAX_WIDTH && D_WIDTH === XSMAX_HEIGHT || isIPhone12;
60
66
  }();
67
+ var isIPhone17 = /* @__PURE__ */function () {
68
+ return D_HEIGHT === IPHONE17_HEIGHT && D_WIDTH === IPHONE17_WIDTH || D_HEIGHT === IPHONE17PROMAX_HEIGHT && D_WIDTH === IPHONE17PROMAX_WIDTH || D_HEIGHT === IPHONE17AIR_HEIGHT && D_WIDTH === IPHONE17AIR_WIDTH;
69
+ }();
61
70
  var isNewIPadPro = function () {
62
71
  if (Platform.OS !== "ios") return false;
63
72
  return D_HEIGHT === IPADPRO11_HEIGHT && D_WIDTH === IPADPRO11_WIDTH || D_HEIGHT === IPADPRO11_HEIGHT && D_WIDTH === IPADPRO11_WIDTH || D_HEIGHT === IPADPRO129_HEIGHT && D_WIDTH === IPADPRO129_WIDTH || D_HEIGHT === IPADPRO129_HEIGHT && D_WIDTH === IPADPRO129_WIDTH;
@@ -94,6 +103,9 @@ var statusBarHeight = function statusBarHeight(isLandscape) {
94
103
  if (isIPhoneX) {
95
104
  return isLandscape ? 0 : 44;
96
105
  }
106
+ if (isIPhone17) {
107
+ return isLandscape ? 0 : 34;
108
+ }
97
109
  if (isNewIPadPro) {
98
110
  return 24;
99
111
  }
@@ -106,7 +118,7 @@ var statusBarHeight = function statusBarHeight(isLandscape) {
106
118
  return isLandscape ? 0 : 20;
107
119
  };
108
120
  var safeAreaBottomInset = function safeAreaBottomInset() {
109
- if (isIPhoneX || isIPhone14Pro || isIPhone16Pro || isIPhoneAir) {
121
+ if (isIPhoneX || isIPhone14Pro || isIPhone16Pro || isIPhoneAir || isIPhone17) {
110
122
  return 34;
111
123
  }
112
124
  if (isNewIPadPro) {
@@ -151,5 +163,5 @@ function getStatusHeight() {
151
163
  return top;
152
164
  }
153
165
 
154
- export { getStatusHeight as default, getResolvedDimensions, getSafeAreaInsets, isIPhone12, isIPhone14Pro, isIPhone16Pro, isIPhoneAir, isIPhoneX, isNewIPadPro, safeAreaBottomInset, statusBarHeight };
166
+ export { getStatusHeight as default, getResolvedDimensions, getSafeAreaInsets, isIPhone12, isIPhone14Pro, isIPhone16Pro, isIPhone17, isIPhoneAir, isIPhoneX, isNewIPadPro, safeAreaBottomInset, statusBarHeight };
155
167
  //# sourceMappingURL=getStatusHeight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getStatusHeight.js","sources":["../../../../../src/components/StatusBar/hook/getStatusHeight.ts"],"sourcesContent":["import { Dimensions, Platform, StatusBar } from \"react-native\";\n\n// See https://mydevice.io/devices/ for device dimensions\nconst X_WIDTH = 375;\nconst X_HEIGHT = 812;\nconst XSMAX_WIDTH = 414;\nconst XSMAX_HEIGHT = 896;\nconst IPHOME12_WIDTH = 390;\nconst IPHOME12_HEIGHT = 844;\nconst IPHONE12MAX_WIDTH = 428;\nconst IPHONE12MAX_HEIGHT = 926;\nconst IPHONE14PRO_WIDTH = 393;\nconst IPHONE14PRO_HEIGHT = 852;\nconst IPHONE14PROMAX_WIDTH = 430;\nconst IPHONE14PROMAX_HEIGHT = 932;\nconst IPHONE16PRO_WIDTH = 402;\nconst IPHONE16PRO_HEIGHT = 874;\nconst IPHONE16PROMAX_WIDTH = 430;\nconst IPHONE16PROMAX_HEIGHT = 932;\n// 小红书客户端8.76版本及以上获取的16promax高度\nconst IPHONE16PROMAX_HEIGHT_876 = 956;\nconst IPHONE16PROMAX_WIDTH_876 = 440;\nconst IPHONEAIR_WIDTH = 420;\nconst IPHONEAIR_HEIGHT = 912;\n\nconst PAD_WIDTH = 768;\nconst IPADPRO11_WIDTH = 834;\nconst IPADPRO11_HEIGHT = 1194;\nconst IPADPRO129_HEIGHT = 1024;\nconst IPADPRO129_WIDTH = 1366;\n\nexport const getResolvedDimensions = () => {\n const { width, height } = Dimensions.get(\"window\");\n if (width === 0 && height === 0) return Dimensions.get(\"screen\");\n return { width, height };\n};\n\nconst { height: D_HEIGHT, width: D_WIDTH } = getResolvedDimensions();\n\nexport const isIPhone16Pro = (() => {\n if (Platform.OS === \"web\") return false;\n return (\n Platform.OS === \"ios\" &&\n ((D_HEIGHT === IPHONE16PROMAX_HEIGHT && D_WIDTH === IPHONE16PROMAX_WIDTH) ||\n (D_HEIGHT === IPHONE16PRO_HEIGHT && D_WIDTH === IPHONE16PRO_WIDTH) ||\n (D_HEIGHT === IPHONE16PROMAX_HEIGHT_876 && D_WIDTH === IPHONE16PROMAX_WIDTH_876)) // eslint-disable-line no-mixed-operators\n );\n})();\n\nexport const isIPhone14Pro = (() => {\n if (Platform.OS === \"web\") return false;\n\n return (\n (Platform.OS === \"ios\" && D_HEIGHT === IPHONE14PRO_HEIGHT && D_WIDTH === IPHONE14PRO_WIDTH) || // eslint-disable-line no-mixed-operators\n (D_HEIGHT === IPHONE14PROMAX_HEIGHT && D_WIDTH === IPHONE14PROMAX_WIDTH) // eslint-disable-line no-mixed-operators\n );\n})();\n\nexport const isIPhone12 = (() => {\n if (Platform.OS === \"web\") return false;\n\n return (\n (Platform.OS === \"ios\" && D_HEIGHT === IPHOME12_HEIGHT && D_WIDTH === IPHOME12_WIDTH) || // eslint-disable-line no-mixed-operators\n (D_HEIGHT === IPHONE12MAX_HEIGHT && D_WIDTH === IPHONE12MAX_WIDTH) // eslint-disable-line no-mixed-operators\n );\n})();\n\nexport const isIPhoneX = (() => {\n if (Platform.OS === \"web\") return false;\n\n return (\n (Platform.OS === \"ios\" &&\n ((D_HEIGHT === X_HEIGHT && D_WIDTH === X_WIDTH) || (D_HEIGHT === X_WIDTH && D_WIDTH === X_HEIGHT))) ||\n (D_HEIGHT === XSMAX_HEIGHT && D_WIDTH === XSMAX_WIDTH) ||\n (D_HEIGHT === XSMAX_WIDTH && D_WIDTH === XSMAX_HEIGHT) ||\n isIPhone12\n );\n})();\n\nexport const isNewIPadPro = (() => {\n if (Platform.OS !== \"ios\") return false;\n\n return (\n (D_HEIGHT === IPADPRO11_HEIGHT && D_WIDTH === IPADPRO11_WIDTH) ||\n (D_HEIGHT === IPADPRO11_HEIGHT && D_WIDTH === IPADPRO11_WIDTH) ||\n (D_HEIGHT === IPADPRO129_HEIGHT && D_WIDTH === IPADPRO129_WIDTH) ||\n (D_HEIGHT === IPADPRO129_HEIGHT && D_WIDTH === IPADPRO129_WIDTH)\n );\n})();\n\nexport const isIPhoneAir = (() => {\n if (Platform.OS === \"web\") return false;\n\n return Platform.OS === \"ios\" && D_HEIGHT === IPHONEAIR_HEIGHT && D_WIDTH === IPHONEAIR_WIDTH;\n})();\n\nconst isIPad = (() => {\n if (Platform.OS !== \"ios\" || isIPhoneX) return false;\n\n // if portrait and width is smaller than iPad width\n if (D_HEIGHT > D_WIDTH && D_WIDTH < PAD_WIDTH) {\n return false;\n }\n\n // if landscape and height is smaller that iPad height\n if (D_WIDTH > D_HEIGHT && D_HEIGHT < PAD_WIDTH) {\n return false;\n }\n\n return true;\n})();\n\nexport const statusBarHeight = (isLandscape: boolean, immersive: boolean = false) => {\n /**\n * This is a temporary workaround because we don't have a way to detect\n * if the status bar is translucent or opaque. If opaque, we don't need to\n * factor in the height here if translucent (content renders under it) then\n * we do.\n */\n if (Platform.OS === \"android\") {\n if (!immersive) {\n return 0;\n }\n\n // currentHeight d.ts 定义中可能是 undefined,这里做一个兼容,为了解决 ts 报错\n return StatusBar.currentHeight ?? 0;\n }\n\n if (isIPhone16Pro) {\n return isLandscape ? 0 : 59;\n }\n\n if (isIPhone14Pro) {\n return isLandscape ? 0 : 59;\n }\n\n if (isIPhoneX) {\n return isLandscape ? 0 : 44;\n }\n\n if (isNewIPadPro) {\n return 24;\n }\n\n if (isIPad) {\n return 20;\n }\n\n if (isIPhoneAir) {\n return isLandscape ? 0 : 68;\n }\n\n return isLandscape ? 0 : 20;\n};\n\nexport const safeAreaBottomInset = () => {\n if (isIPhoneX || isIPhone14Pro || isIPhone16Pro || isIPhoneAir) {\n return 34;\n }\n\n if (isNewIPadPro) {\n return 20;\n }\n\n if (Platform.OS === \"android\") {\n return 20;\n }\n\n return 0;\n};\n\n/**\n * 这里统一按照竖屏场景来处理,等后续 react-native 大版本升级,统计接入处理横竖屏、分屏、屏中屏等 case。\n *\n * @param immersive\n */\ntype insetsCacheKey = \"top\" | \"bottom\";\nconst insetsCache: Map<insetsCacheKey, number> = new Map();\n\nexport function getSafeAreaInsets(immersive: boolean = false): Record<insetsCacheKey, number> {\n // @ts-ignore\n if (Platform.OS === \"harmony\") {\n return {\n top: StatusBar.currentHeight || 0,\n bottom: 20,\n };\n }\n let top = 0;\n let bottom = 0;\n\n if (insetsCache.has(\"top\")) {\n top = insetsCache.get(\"top\") || 0;\n } else {\n top = statusBarHeight(false, immersive);\n }\n\n if (insetsCache.has(\"bottom\")) {\n bottom = insetsCache.get(\"bottom\") || 0;\n } else {\n bottom = safeAreaBottomInset();\n }\n\n return {\n top,\n bottom,\n };\n}\n\nexport default function getStatusHeight(): any {\n // @ts-ignore\n if (Platform.OS === \"harmony\") {\n return StatusBar.currentHeight || 0;\n }\n let top = statusBarHeight(false, true);\n\n return top;\n}\n"],"names":["X_WIDTH","X_HEIGHT","XSMAX_WIDTH","XSMAX_HEIGHT","IPHOME12_WIDTH","IPHOME12_HEIGHT","IPHONE12MAX_WIDTH","IPHONE12MAX_HEIGHT","IPHONE14PRO_WIDTH","IPHONE14PRO_HEIGHT","IPHONE14PROMAX_WIDTH","IPHONE14PROMAX_HEIGHT","IPHONE16PRO_WIDTH","IPHONE16PRO_HEIGHT","IPHONE16PROMAX_WIDTH","IPHONE16PROMAX_HEIGHT","IPHONE16PROMAX_HEIGHT_876","IPHONE16PROMAX_WIDTH_876","IPHONEAIR_WIDTH","IPHONEAIR_HEIGHT","PAD_WIDTH","IPADPRO11_WIDTH","IPADPRO11_HEIGHT","IPADPRO129_HEIGHT","IPADPRO129_WIDTH","getResolvedDimensions","_Dimensions$get","Dimensions","get","width","height","_getResolvedDimension","D_HEIGHT","D_WIDTH","isIPhone16Pro","Platform","OS","isIPhone14Pro","isIPhone12","isIPhoneX","isNewIPadPro","isIPhoneAir","isIPad","statusBarHeight","isLandscape","immersive","arguments","length","undefined","_StatusBar$currentHei","StatusBar","currentHeight","safeAreaBottomInset","insetsCache","Map","getSafeAreaInsets","top","bottom","has","getStatusHeight"],"mappings":"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"}
1
+ {"version":3,"file":"getStatusHeight.js","sources":["../../../../../src/components/StatusBar/hook/getStatusHeight.ts"],"sourcesContent":["import { Dimensions, Platform, StatusBar } from \"react-native\";\n\n// See https://mydevice.io/devices/ for device dimensions\nconst X_WIDTH = 375;\nconst X_HEIGHT = 812;\nconst XSMAX_WIDTH = 414;\nconst XSMAX_HEIGHT = 896;\nconst IPHOME12_WIDTH = 390;\nconst IPHOME12_HEIGHT = 844;\nconst IPHONE12MAX_WIDTH = 428;\nconst IPHONE12MAX_HEIGHT = 926;\nconst IPHONE14PRO_WIDTH = 393;\nconst IPHONE14PRO_HEIGHT = 852;\nconst IPHONE14PROMAX_WIDTH = 430;\nconst IPHONE14PROMAX_HEIGHT = 932;\nconst IPHONE16PRO_WIDTH = 402;\nconst IPHONE16PRO_HEIGHT = 874;\nconst IPHONE16PROMAX_WIDTH = 430;\nconst IPHONE16PROMAX_HEIGHT = 932;\n// 小红书客户端8.76版本及以上获取的16promax高度\nconst IPHONE16PROMAX_HEIGHT_876 = 956;\nconst IPHONE16PROMAX_WIDTH_876 = 440;\nconst IPHONEAIR_WIDTH = 420;\nconst IPHONEAIR_HEIGHT = 912;\n\nconst PAD_WIDTH = 768;\nconst IPADPRO11_WIDTH = 834;\nconst IPADPRO11_HEIGHT = 1194;\nconst IPADPRO129_HEIGHT = 1024;\nconst IPADPRO129_WIDTH = 1366;\n\nconst IPHONE17AIR_WIDTH = 420;\nconst IPHONE17AIR_HEIGHT = 912;\nconst IPHONE17_WIDTH = 402;\nconst IPHONE17_HEIGHT = 874;\nconst IPHONE17PROMAX_WIDTH = 440;\nconst IPHONE17PROMAX_HEIGHT = 956;\n\nexport const getResolvedDimensions = () => {\n const { width, height } = Dimensions.get(\"window\");\n if (width === 0 && height === 0) return Dimensions.get(\"screen\");\n return { width, height };\n};\n\nconst { height: D_HEIGHT, width: D_WIDTH } = getResolvedDimensions();\n\nexport const isIPhone16Pro = (() => {\n if (Platform.OS === \"web\") return false;\n return (\n Platform.OS === \"ios\" &&\n ((D_HEIGHT === IPHONE16PROMAX_HEIGHT && D_WIDTH === IPHONE16PROMAX_WIDTH) ||\n (D_HEIGHT === IPHONE16PRO_HEIGHT && D_WIDTH === IPHONE16PRO_WIDTH) ||\n (D_HEIGHT === IPHONE16PROMAX_HEIGHT_876 && D_WIDTH === IPHONE16PROMAX_WIDTH_876)) // eslint-disable-line no-mixed-operators\n );\n})();\n\nexport const isIPhone14Pro = (() => {\n if (Platform.OS === \"web\") return false;\n\n return (\n (Platform.OS === \"ios\" && D_HEIGHT === IPHONE14PRO_HEIGHT && D_WIDTH === IPHONE14PRO_WIDTH) || // eslint-disable-line no-mixed-operators\n (D_HEIGHT === IPHONE14PROMAX_HEIGHT && D_WIDTH === IPHONE14PROMAX_WIDTH) // eslint-disable-line no-mixed-operators\n );\n})();\n\nexport const isIPhone12 = (() => {\n if (Platform.OS === \"web\") return false;\n\n return (\n (Platform.OS === \"ios\" && D_HEIGHT === IPHOME12_HEIGHT && D_WIDTH === IPHOME12_WIDTH) || // eslint-disable-line no-mixed-operators\n (D_HEIGHT === IPHONE12MAX_HEIGHT && D_WIDTH === IPHONE12MAX_WIDTH) // eslint-disable-line no-mixed-operators\n );\n})();\n\nexport const isIPhoneX = (() => {\n if (Platform.OS === \"web\") return false;\n\n return (\n (Platform.OS === \"ios\" &&\n ((D_HEIGHT === X_HEIGHT && D_WIDTH === X_WIDTH) || (D_HEIGHT === X_WIDTH && D_WIDTH === X_HEIGHT))) ||\n (D_HEIGHT === XSMAX_HEIGHT && D_WIDTH === XSMAX_WIDTH) ||\n (D_HEIGHT === XSMAX_WIDTH && D_WIDTH === XSMAX_HEIGHT) ||\n isIPhone12\n );\n})();\n\nexport const isIPhone17 = (() => {\n return (\n (D_HEIGHT === IPHONE17_HEIGHT && D_WIDTH === IPHONE17_WIDTH) ||\n (D_HEIGHT === IPHONE17PROMAX_HEIGHT && D_WIDTH === IPHONE17PROMAX_WIDTH) ||\n (D_HEIGHT === IPHONE17AIR_HEIGHT && D_WIDTH === IPHONE17AIR_WIDTH)\n );\n})();\n\nexport const isNewIPadPro = (() => {\n if (Platform.OS !== \"ios\") return false;\n\n return (\n (D_HEIGHT === IPADPRO11_HEIGHT && D_WIDTH === IPADPRO11_WIDTH) ||\n (D_HEIGHT === IPADPRO11_HEIGHT && D_WIDTH === IPADPRO11_WIDTH) ||\n (D_HEIGHT === IPADPRO129_HEIGHT && D_WIDTH === IPADPRO129_WIDTH) ||\n (D_HEIGHT === IPADPRO129_HEIGHT && D_WIDTH === IPADPRO129_WIDTH)\n );\n})();\n\nexport const isIPhoneAir = (() => {\n if (Platform.OS === \"web\") return false;\n\n return Platform.OS === \"ios\" && D_HEIGHT === IPHONEAIR_HEIGHT && D_WIDTH === IPHONEAIR_WIDTH;\n})();\n\nconst isIPad = (() => {\n if (Platform.OS !== \"ios\" || isIPhoneX) return false;\n\n // if portrait and width is smaller than iPad width\n if (D_HEIGHT > D_WIDTH && D_WIDTH < PAD_WIDTH) {\n return false;\n }\n\n // if landscape and height is smaller that iPad height\n if (D_WIDTH > D_HEIGHT && D_HEIGHT < PAD_WIDTH) {\n return false;\n }\n\n return true;\n})();\n\nexport const statusBarHeight = (isLandscape: boolean, immersive: boolean = false) => {\n /**\n * This is a temporary workaround because we don't have a way to detect\n * if the status bar is translucent or opaque. If opaque, we don't need to\n * factor in the height here if translucent (content renders under it) then\n * we do.\n */\n if (Platform.OS === \"android\") {\n if (!immersive) {\n return 0;\n }\n\n // currentHeight d.ts 定义中可能是 undefined,这里做一个兼容,为了解决 ts 报错\n return StatusBar.currentHeight ?? 0;\n }\n\n if (isIPhone16Pro) {\n return isLandscape ? 0 : 59;\n }\n\n if (isIPhone14Pro) {\n return isLandscape ? 0 : 59;\n }\n\n if (isIPhoneX) {\n return isLandscape ? 0 : 44;\n }\n\n if (isIPhone17) {\n return isLandscape ? 0 : 34;\n }\n\n if (isNewIPadPro) {\n return 24;\n }\n\n if (isIPad) {\n return 20;\n }\n\n if (isIPhoneAir) {\n return isLandscape ? 0 : 68;\n }\n\n return isLandscape ? 0 : 20;\n};\n\nexport const safeAreaBottomInset = () => {\n if (isIPhoneX || isIPhone14Pro || isIPhone16Pro || isIPhoneAir || isIPhone17) {\n return 34;\n }\n\n if (isNewIPadPro) {\n return 20;\n }\n\n if (Platform.OS === \"android\") {\n return 20;\n }\n\n return 0;\n};\n\n/**\n * 这里统一按照竖屏场景来处理,等后续 react-native 大版本升级,统计接入处理横竖屏、分屏、屏中屏等 case。\n *\n * @param immersive\n */\ntype insetsCacheKey = \"top\" | \"bottom\";\nconst insetsCache: Map<insetsCacheKey, number> = new Map();\n\nexport function getSafeAreaInsets(immersive: boolean = false): Record<insetsCacheKey, number> {\n // @ts-ignore\n if (Platform.OS === \"harmony\") {\n return {\n top: StatusBar.currentHeight || 0,\n bottom: 20,\n };\n }\n let top = 0;\n let bottom = 0;\n\n if (insetsCache.has(\"top\")) {\n top = insetsCache.get(\"top\") || 0;\n } else {\n top = statusBarHeight(false, immersive);\n }\n\n if (insetsCache.has(\"bottom\")) {\n bottom = insetsCache.get(\"bottom\") || 0;\n } else {\n bottom = safeAreaBottomInset();\n }\n\n return {\n top,\n bottom,\n };\n}\n\nexport default function getStatusHeight(): any {\n // @ts-ignore\n if (Platform.OS === \"harmony\") {\n return StatusBar.currentHeight || 0;\n }\n let top = statusBarHeight(false, true);\n\n return top;\n}\n"],"names":["X_WIDTH","X_HEIGHT","XSMAX_WIDTH","XSMAX_HEIGHT","IPHOME12_WIDTH","IPHOME12_HEIGHT","IPHONE12MAX_WIDTH","IPHONE12MAX_HEIGHT","IPHONE14PRO_WIDTH","IPHONE14PRO_HEIGHT","IPHONE14PROMAX_WIDTH","IPHONE14PROMAX_HEIGHT","IPHONE16PRO_WIDTH","IPHONE16PRO_HEIGHT","IPHONE16PROMAX_WIDTH","IPHONE16PROMAX_HEIGHT","IPHONE16PROMAX_HEIGHT_876","IPHONE16PROMAX_WIDTH_876","IPHONEAIR_WIDTH","IPHONEAIR_HEIGHT","PAD_WIDTH","IPADPRO11_WIDTH","IPADPRO11_HEIGHT","IPADPRO129_HEIGHT","IPADPRO129_WIDTH","IPHONE17AIR_WIDTH","IPHONE17AIR_HEIGHT","IPHONE17_WIDTH","IPHONE17_HEIGHT","IPHONE17PROMAX_WIDTH","IPHONE17PROMAX_HEIGHT","getResolvedDimensions","_Dimensions$get","Dimensions","get","width","height","_getResolvedDimension","D_HEIGHT","D_WIDTH","isIPhone16Pro","Platform","OS","isIPhone14Pro","isIPhone12","isIPhoneX","isIPhone17","isNewIPadPro","isIPhoneAir","isIPad","statusBarHeight","isLandscape","immersive","arguments","length","undefined","_StatusBar$currentHei","StatusBar","currentHeight","safeAreaBottomInset","insetsCache","Map","getSafeAreaInsets","top","bottom","has","getStatusHeight"],"mappings":"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"}
package/lib/esm/index.js CHANGED
@@ -114,7 +114,7 @@ export { i as EmptyType } from './_chunks/BoucDqUg.js';
114
114
  export { default as Result } from './components/Result/Result.js';
115
115
  export { i as ResultType } from './_chunks/BKS4Pa1R.js';
116
116
  export { default as PullRefresh } from './components/PullRefresh/PullRefresh.js';
117
- export { i as PullRefreshType } from './_chunks/CZtagXcj.js';
117
+ export { i as PullRefreshType } from './_chunks/gC9g4Fr_.js';
118
118
  export { default as Icon } from './components/Icon/Icon.js';
119
119
  export { a as IconType } from './_chunks/xi-gXLIR.js';
120
120
  export { default as Badge } from './components/Badge/Badge.js';
@@ -230,8 +230,9 @@ import './components/Image/styles.js';
230
230
  import './components/Image/hook/index.js';
231
231
  import './components/Image/CircularProgress.js';
232
232
  import './components/Image/utils.js';
233
- import './components/Image/VisibilitySensor.js';
234
233
  import './components/Image/apm.js';
234
+ import './components/Image/queryCacheBatcher.js';
235
+ import './components/Image/VisibilitySensor.js';
235
236
  import './components/Popover/component.js';
236
237
  import './components/Switch/styles.js';
237
238
  import './components/Text/hooks/cloneContainer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,14 +1,15 @@
1
1
  import { ViewStyle, TextStyle } from "react-native";
2
2
  import { RedsDivider } from "./interface";
3
- declare const getStyles: (p: RedsDivider) => {
3
+ declare const getStyles: (p: RedsDivider, textWidth: number, containerWidth: number, themeColor: any, typography: any) => {
4
4
  divider: ViewStyle;
5
5
  horizontal: ViewStyle;
6
6
  vertical: ViewStyle;
7
7
  primary: TextStyle;
8
8
  secondary: TextStyle;
9
- textContainer: TextStyle;
9
+ textContainer: ViewStyle;
10
10
  text: TextStyle;
11
11
  before: ViewStyle;
12
12
  after: ViewStyle;
13
+ noTextBorderStyle: ViewStyle;
13
14
  };
14
15
  export { getStyles };
@@ -0,0 +1,5 @@
1
+ export declare function setQueryCacheBatchingEnabled(v: boolean): void;
2
+ export declare function configureQueryCacheBatching(options?: {
3
+ flushMs?: number;
4
+ }): void;
5
+ export declare function queryCacheBatched(url: string): Promise<boolean>;
@@ -11,6 +11,8 @@ declare namespace PullRefresh {
11
11
  showText: boolean;
12
12
  initRefresh: boolean;
13
13
  refresh: boolean;
14
+ nativeAndroidPullRefresh: boolean;
15
+ androidRefreshProps: {};
14
16
  };
15
17
  }
16
18
  export default PullRefresh;
@@ -16,6 +16,9 @@ export interface RedsPullRefresh {
16
16
  showText?: boolean;
17
17
  initRefresh?: boolean;
18
18
  refresh?: boolean;
19
+ nativeAndroidPullRefresh?: boolean;
20
+ androidRefreshProps?: Object;
21
+ androidColors?: string[];
19
22
  }
20
23
  export declare enum PullState {
21
24
  INIT = 0,// 初始化
@@ -35,4 +38,6 @@ export declare const PullRefreshDefaultProps: {
35
38
  showText: boolean;
36
39
  initRefresh: boolean;
37
40
  refresh: boolean;
41
+ nativeAndroidPullRefresh: boolean;
42
+ androidRefreshProps: {};
38
43
  };
@@ -6,6 +6,7 @@ export declare const isIPhone16Pro: boolean;
6
6
  export declare const isIPhone14Pro: boolean;
7
7
  export declare const isIPhone12: boolean;
8
8
  export declare const isIPhoneX: boolean;
9
+ export declare const isIPhone17: boolean;
9
10
  export declare const isNewIPadPro: boolean;
10
11
  export declare const isIPhoneAir: boolean;
11
12
  export declare const statusBarHeight: (isLandscape: boolean, immersive?: boolean) => number;
@@ -1,14 +1,15 @@
1
1
  import { ViewStyle, TextStyle } from "react-native";
2
2
  import { RedsDivider } from "./interface";
3
- declare const getStyles: (p: RedsDivider) => {
3
+ declare const getStyles: (p: RedsDivider, textWidth: number, containerWidth: number, themeColor: any, typography: any) => {
4
4
  divider: ViewStyle;
5
5
  horizontal: ViewStyle;
6
6
  vertical: ViewStyle;
7
7
  primary: TextStyle;
8
8
  secondary: TextStyle;
9
- textContainer: TextStyle;
9
+ textContainer: ViewStyle;
10
10
  text: TextStyle;
11
11
  before: ViewStyle;
12
12
  after: ViewStyle;
13
+ noTextBorderStyle: ViewStyle;
13
14
  };
14
15
  export { getStyles };
@@ -0,0 +1,5 @@
1
+ export declare function setQueryCacheBatchingEnabled(v: boolean): void;
2
+ export declare function configureQueryCacheBatching(options?: {
3
+ flushMs?: number;
4
+ }): void;
5
+ export declare function queryCacheBatched(url: string): Promise<boolean>;
@@ -11,6 +11,8 @@ declare namespace PullRefresh {
11
11
  showText: boolean;
12
12
  initRefresh: boolean;
13
13
  refresh: boolean;
14
+ nativeAndroidPullRefresh: boolean;
15
+ androidRefreshProps: {};
14
16
  };
15
17
  }
16
18
  export default PullRefresh;
@@ -16,6 +16,9 @@ export interface RedsPullRefresh {
16
16
  showText?: boolean;
17
17
  initRefresh?: boolean;
18
18
  refresh?: boolean;
19
+ nativeAndroidPullRefresh?: boolean;
20
+ androidRefreshProps?: Object;
21
+ androidColors?: string[];
19
22
  }
20
23
  export declare enum PullState {
21
24
  INIT = 0,// 初始化
@@ -35,4 +38,6 @@ export declare const PullRefreshDefaultProps: {
35
38
  showText: boolean;
36
39
  initRefresh: boolean;
37
40
  refresh: boolean;
41
+ nativeAndroidPullRefresh: boolean;
42
+ androidRefreshProps: {};
38
43
  };
@@ -6,6 +6,7 @@ export declare const isIPhone16Pro: boolean;
6
6
  export declare const isIPhone14Pro: boolean;
7
7
  export declare const isIPhone12: boolean;
8
8
  export declare const isIPhoneX: boolean;
9
+ export declare const isIPhone17: boolean;
9
10
  export declare const isNewIPadPro: boolean;
10
11
  export declare const isIPhoneAir: boolean;
11
12
  export declare const statusBarHeight: (isLandscape: boolean, immersive?: boolean) => number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xhsreds/reds-rn-next",
3
- "version": "0.9.1-beta202510291556",
3
+ "version": "0.9.1-beta202512012032",
4
4
  "author": "贾斌(呀哈) <jiabin@xiaohongshu.com>",
5
5
  "license": "ISC",
6
6
  "dependencies": {
@@ -26,7 +26,7 @@
26
26
  "react-native-fs": "2.20.0",
27
27
  "react-native-svg": "13.14.0",
28
28
  "@xhs/react-native-harmony": "*",
29
- "@xhsreds/reds-token-next": "0.9.1-beta202510291556"
29
+ "@xhsreds/reds-token-next": "0.9.1-beta202512012032"
30
30
  },
31
31
  "peerDependenciesMeta": {
32
32
  "ozone-schema-web": {
@@ -1,5 +1,14 @@
1
1
  import React, { useState, useMemo, isValidElement, useEffect, useRef } from "react";
2
- import { Text, View, TouchableWithoutFeedback, GestureResponderEvent, Animated, Image, Dimensions } from "react-native";
2
+ import {
3
+ Text,
4
+ View,
5
+ TouchableWithoutFeedback,
6
+ GestureResponderEvent,
7
+ Animated,
8
+ Image,
9
+ Dimensions,
10
+ Platform,
11
+ } from "react-native";
3
12
  import { RedsActionablePopover, ActionablePopoverData } from "./interface/index";
4
13
  import { ModalWrapper } from "./component";
5
14
  import useMounted from "../../pvCount/useUnmountedProcess";
@@ -1,28 +1,48 @@
1
- import React from "react";
1
+ import React, { useState, useMemo } from "react";
2
2
  import { View, Text } from "react-native";
3
3
  import { RedsDivider, DividerDefaultProps } from "./interface";
4
4
  import { getStyles } from "./styles";
5
5
  import useMounted from "../../pvCount/useUnmountedProcess";
6
+ import { useThemeColor, useThemeTypography } from "../ConfigProvider";
6
7
 
7
8
  const Divider = (props: RedsDivider) => {
9
+ const [textWidth, setTextWidth] = useState(0);
10
+ const [containerWidth, setContainerWidth] = useState(0);
11
+ const themeColor = useThemeColor("Divider");
12
+ const typography = useThemeTypography("Divider");
8
13
  useMounted("Divider");
9
14
  const finalProps: RedsDivider = {
10
15
  ...DividerDefaultProps,
11
16
  ...props,
12
- direction: props.direction as RedsDivider["direction"],
13
- orientation: props.orientation as RedsDivider["orientation"],
17
+ direction: (props.direction || DividerDefaultProps.direction) as RedsDivider["direction"],
18
+ orientation: (props.orientation || DividerDefaultProps.orientation) as RedsDivider["orientation"],
14
19
  };
15
20
 
16
- const styles = getStyles(finalProps);
17
- const isPrimary = finalProps.direction === "primary" || finalProps.direction === "secondary";
21
+ const styles = useMemo(() => {
22
+ return getStyles(finalProps, textWidth, containerWidth, themeColor, typography);
23
+ }, [textWidth, containerWidth, themeColor, typography]);
24
+
25
+ const handleLayout = (e: any) => {
26
+ setTextWidth(e.nativeEvent.layout.width);
27
+ };
28
+
29
+ const handlerContainerWidth = (e: any) => {
30
+ setContainerWidth(e.nativeEvent.layout.width);
31
+ };
18
32
 
19
33
  return (
20
- <View style={[styles.divider, styles[finalProps.direction!]]}>
34
+ <View style={[styles.divider, styles[finalProps.direction!]]} onLayout={handlerContainerWidth}>
21
35
  {finalProps.orientation && finalProps.direction !== "vertical" && (
22
36
  <View style={styles.textContainer}>
23
- {isPrimary && <View style={styles.before} />}
24
- {props.children && <Text style={styles.text}>{props.children}</Text>}
25
- {isPrimary && <View style={styles.after} />}
37
+ <View style={styles.before} />
38
+ {props.children ? (
39
+ <Text style={styles.text} onLayout={handleLayout}>
40
+ {props.children}
41
+ </Text>
42
+ ) : (
43
+ <Text style={styles.noTextBorderStyle}></Text>
44
+ )}
45
+ <View style={styles.after} />
26
46
  </View>
27
47
  )}
28
48
  </View>
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from "react";
2
- import { View, Text, StyleSheet } from "react-native";
2
+ import { View, Text, StyleSheet, ScrollView } from "react-native";
3
3
  import { Divider } from "@xhs/reds-rn-next";
4
4
 
5
5
  const styles = StyleSheet.create({
@@ -21,23 +21,29 @@ const Br = (props: { height?: number }) => <View style={{ height: props.height |
21
21
 
22
22
  export default function App() {
23
23
  return (
24
- <View>
24
+ <ScrollView>
25
+ <Br />
26
+ <Br />
25
27
  <Desc>默认用法</Desc>
26
28
  <Divider>测试</Divider>
27
29
  <Br />
28
- <Desc>direction 类型用法</Desc>
30
+ <Desc>direction="primary"</Desc>
29
31
  <Divider direction="primary" orientation={"center"}>
30
32
  测试
31
33
  </Divider>
32
34
  <Br />
33
- <Divider direction="secondary">测试 </Divider>
35
+ <Desc>direction="secondary"</Desc>
36
+ <Divider direction="secondary" orientation={"center"}>
37
+ 测试
38
+ </Divider>
34
39
  <Br />
35
40
 
41
+ <Desc>direction="vertical"</Desc>
36
42
  <View style={styles.itemBox}>
37
43
  <Divider direction="vertical">测试</Divider>
38
44
  </View>
45
+ <Desc>direction="horizontal"</Desc>
39
46
  <Divider direction="horizontal">测试</Divider>
40
- <Divider direction="horizontal"></Divider>
41
47
  <Br />
42
48
  <Br />
43
49
 
@@ -67,6 +73,6 @@ export default function App() {
67
73
  <Desc>margin 数组:horizontal / [上下,左右] vertical / [左右]</Desc>
68
74
  <Divider margin={[10, 20]} stroke={2} direction="horizontal" />
69
75
  <Divider margin={[10, 0]} stroke={2} direction="vertical" />
70
- </View>
76
+ </ScrollView>
71
77
  );
72
78
  }
@@ -1,38 +1,30 @@
1
1
  import { StyleSheet, ViewStyle, TextStyle, DimensionValue } from "react-native";
2
2
  import { RedsDivider, DividerDefaultProps } from "./interface";
3
- import { useThemeColor, useThemeTypography } from "../ConfigProvider";
4
3
 
5
4
  const baseDivider: ViewStyle = {
6
5
  position: "relative",
7
6
  };
8
7
 
9
- const baseText: TextStyle = {
10
- paddingVertical: 0,
11
- paddingHorizontal: 16,
12
- position: "absolute",
13
- backgroundColor: "#fff",
14
- lineHeight: 18,
15
- };
16
-
17
- const getStyles = (p: RedsDivider) => {
8
+ const getStyles = (p: RedsDivider, textWidth: number, containerWidth: number, themeColor: any, typography: any) => {
18
9
  const props = { ...DividerDefaultProps, ...p };
19
- const themeColor = useThemeColor("Divider");
20
- const typography = useThemeTypography("Divider");
21
10
  const isHorizontal = props.direction === "horizontal";
11
+ const hasTextContent = p.children;
12
+
13
+ const remainingWidth = containerWidth - textWidth;
14
+
22
15
  const beforeAfterCommon: ViewStyle = {
23
16
  borderStyle: "solid",
24
- borderTopWidth: 0.5,
17
+ borderTopWidth: props.stroke || 0.5,
25
18
  borderColor: props.color || themeColor.Separator2,
26
- width: 8,
27
19
  };
28
20
 
29
21
  const dividerStyle: ViewStyle = {
30
22
  ...baseDivider,
31
- borderBottomWidth: isHorizontal ? (props.stroke ? props.stroke : StyleSheet.hairlineWidth) : 0,
32
- borderLeftWidth: isHorizontal ? 0 : props.stroke ? props.stroke : StyleSheet.hairlineWidth,
33
- borderBottomColor: isHorizontal ? props.color || themeColor.Separator2 : undefined,
34
- borderLeftColor: isHorizontal ? undefined : props.color || themeColor.Separator2,
35
- borderStyle: "solid",
23
+ // borderBottomWidth: isHorizontal && hasTextContent ? 0 : (isHorizontal ? (props.stroke ? props.stroke : StyleSheet.hairlineWidth) : 0),
24
+ // borderLeftWidth: isHorizontal ? 0 : props.stroke ? props.stroke : StyleSheet.hairlineWidth,
25
+ // borderBottomColor: isHorizontal && !hasTextContent ? props.color || themeColor.Separator2 : undefined,
26
+ // borderLeftColor: isHorizontal ? undefined : props.color || themeColor.Separator2,
27
+ // borderStyle: "solid",
36
28
  marginVertical: (props.margin && props.margin[0] && Number(props.margin[0])) || (isHorizontal ? 20 : 0),
37
29
  marginHorizontal: (props.margin && props.margin[1] && Number(props.margin[1])) || (isHorizontal ? 0 : 12),
38
30
  marginLeft:
@@ -47,17 +39,11 @@ const getStyles = (p: RedsDivider) => {
47
39
  width: (isHorizontal ? props.size : "auto") as DimensionValue,
48
40
  };
49
41
 
50
- const textContainer: TextStyle = {
51
- paddingVertical: 0,
52
- paddingHorizontal: 16,
53
- position: "absolute",
54
- lineHeight: 18,
55
- left: props.orientation === "left" ? 24 : undefined,
56
- right: props.orientation === "right" ? 24 : undefined,
57
- alignSelf: props.orientation === "center" ? "center" : undefined,
42
+ const textContainer: ViewStyle = {
58
43
  flexDirection: "row",
59
44
  alignItems: "center",
60
- top: (isHorizontal && -9) || 0,
45
+ width: "100%",
46
+ // 移除 position absolute,改为正常布局
61
47
  };
62
48
 
63
49
  const textStyle: TextStyle = {
@@ -78,13 +64,29 @@ const getStyles = (p: RedsDivider) => {
78
64
 
79
65
  const beforeStyle: ViewStyle = {
80
66
  ...beforeAfterCommon,
81
- marginRight: 8,
67
+ marginRight: props.children ? 8 : 0,
68
+ ...(isHorizontal
69
+ ? props.orientation === "center"
70
+ ? { flex: 1 }
71
+ : { width: props.orientation === "left" ? remainingWidth * 0.15 : remainingWidth * 0.85 }
72
+ : { width: 8 }),
82
73
  borderColor: props.direction === "secondary" ? "rgba(51, 51, 51, .3)" : props.color || themeColor.Separator2,
83
74
  };
84
75
 
85
76
  const afterStyle: ViewStyle = {
86
77
  ...beforeAfterCommon,
87
- marginLeft: 8,
78
+ marginLeft: props.children ? 8 : 0,
79
+ ...(isHorizontal
80
+ ? props.orientation === "center"
81
+ ? { flex: 1 }
82
+ : { width: props.orientation === "right" ? remainingWidth * 0.15 : remainingWidth * 0.85 }
83
+ : { width: 8 }),
84
+ borderColor: props.direction === "secondary" ? "rgba(51, 51, 51, .3)" : props.color || themeColor.Separator2,
85
+ };
86
+
87
+ const noTextBorderStyle: ViewStyle = {
88
+ ...beforeAfterCommon,
89
+ width: "auto",
88
90
  borderColor: props.direction === "secondary" ? "rgba(51, 51, 51, .3)" : props.color || themeColor.Separator2,
89
91
  };
90
92
 
@@ -104,6 +106,7 @@ const getStyles = (p: RedsDivider) => {
104
106
  text: textStyle,
105
107
  before: beforeStyle,
106
108
  after: afterStyle,
109
+ noTextBorderStyle: noTextBorderStyle,
107
110
  });
108
111
  };
109
112