@unif/react-native-design 0.31.2 → 0.32.0

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 (169) hide show
  1. package/README.md +6 -0
  2. package/lib/module/components/ui/Avatar/Avatar.js +2 -1
  3. package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
  4. package/lib/module/components/ui/Avatar/geometry.js +43 -0
  5. package/lib/module/components/ui/Avatar/geometry.js.map +1 -0
  6. package/lib/module/components/ui/Avatar/styles.js +1 -41
  7. package/lib/module/components/ui/Avatar/styles.js.map +1 -1
  8. package/lib/module/components/ui/AvatarGroup/AvatarGroup.js +1 -1
  9. package/lib/module/components/ui/AvatarGroup/AvatarGroup.js.map +1 -1
  10. package/lib/module/components/ui/BorderBeam/normalizeBorderBeam.js +2 -2
  11. package/lib/module/components/ui/CircularProgress/CircularProgress.js +14 -25
  12. package/lib/module/components/ui/CircularProgress/CircularProgress.js.map +1 -1
  13. package/lib/module/components/ui/CircularProgress/normalizeCircularProgress.js.map +1 -1
  14. package/lib/module/components/ui/CircularProgress/styles.js +24 -0
  15. package/lib/module/components/ui/CircularProgress/styles.js.map +1 -0
  16. package/lib/module/components/ui/Pulse/PulseDot.js +5 -5
  17. package/lib/module/components/ui/Pulse/PulseDot.js.map +1 -1
  18. package/lib/module/components/ui/Pulse/constants.js +15 -0
  19. package/lib/module/components/ui/Pulse/constants.js.map +1 -0
  20. package/lib/module/components/ui/Pulse/usePulse.js +4 -62
  21. package/lib/module/components/ui/Pulse/usePulse.js.map +1 -1
  22. package/lib/module/components/ui/Skeleton/Skeleton.js +6 -2
  23. package/lib/module/components/ui/Skeleton/Skeleton.js.map +1 -1
  24. package/lib/module/components/ui/Skeleton/constants.js +9 -0
  25. package/lib/module/components/ui/Skeleton/constants.js.map +1 -0
  26. package/lib/module/components/ui/TextField/TextFieldBase.js +21 -4
  27. package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
  28. package/lib/module/components/ui/TextField/constants.js +7 -0
  29. package/lib/module/components/ui/TextField/constants.js.map +1 -0
  30. package/lib/module/components/ui/TextField/styles.js +10 -2
  31. package/lib/module/components/ui/TextField/styles.js.map +1 -1
  32. package/lib/module/components/ui/TextField/useMultilineLayout.js +18 -0
  33. package/lib/module/components/ui/TextField/useMultilineLayout.js.map +1 -0
  34. package/lib/module/components/ui/TextField/useMultilineLayout.web.js +44 -0
  35. package/lib/module/components/ui/TextField/useMultilineLayout.web.js.map +1 -0
  36. package/lib/module/components/ui/Thumbnail/Thumbnail.js +13 -6
  37. package/lib/module/components/ui/Thumbnail/Thumbnail.js.map +1 -1
  38. package/lib/module/components/ui/Thumbnail/constants.js +22 -0
  39. package/lib/module/components/ui/Thumbnail/constants.js.map +1 -0
  40. package/lib/module/components/ui/Thumbnail/normalize.js +30 -1
  41. package/lib/module/components/ui/Thumbnail/normalize.js.map +1 -1
  42. package/lib/module/components/ui/Thumbnail/styles.js +5 -28
  43. package/lib/module/components/ui/Thumbnail/styles.js.map +1 -1
  44. package/lib/module/components/ui/index.js.map +1 -1
  45. package/lib/module/components/ui/shared/pulse/constants.js +5 -0
  46. package/lib/module/components/ui/shared/pulse/constants.js.map +1 -0
  47. package/lib/module/components/ui/{Pulse → shared/pulse}/normalizePulseOptions.js +2 -12
  48. package/lib/module/components/ui/shared/pulse/normalizePulseOptions.js.map +1 -0
  49. package/lib/module/components/ui/shared/pulse/types.js +2 -0
  50. package/lib/module/components/ui/shared/pulse/types.js.map +1 -0
  51. package/lib/module/components/ui/shared/pulse/usePulseAnimation.js +30 -0
  52. package/lib/module/components/ui/shared/pulse/usePulseAnimation.js.map +1 -0
  53. package/lib/module/components/ui/{Pulse → shared/pulse}/usePulseDriver.js +1 -1
  54. package/lib/module/components/ui/shared/pulse/usePulseDriver.js.map +1 -0
  55. package/lib/module/components/ui/{Pulse → shared/pulse}/usePulseDriver.web.js +2 -17
  56. package/lib/module/components/ui/shared/pulse/usePulseDriver.web.js.map +1 -0
  57. package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts.map +1 -1
  58. package/lib/typescript/src/components/ui/Avatar/geometry.d.ts +7 -0
  59. package/lib/typescript/src/components/ui/Avatar/geometry.d.ts.map +1 -0
  60. package/lib/typescript/src/components/ui/Avatar/styles.d.ts +1 -9
  61. package/lib/typescript/src/components/ui/Avatar/styles.d.ts.map +1 -1
  62. package/lib/typescript/src/components/ui/Avatar/types.d.ts +7 -2
  63. package/lib/typescript/src/components/ui/Avatar/types.d.ts.map +1 -1
  64. package/lib/typescript/src/components/ui/BorderBeam/types.d.ts +2 -2
  65. package/lib/typescript/src/components/ui/CircularProgress/CircularProgress.d.ts.map +1 -1
  66. package/lib/typescript/src/components/ui/CircularProgress/normalizeCircularProgress.d.ts +2 -14
  67. package/lib/typescript/src/components/ui/CircularProgress/normalizeCircularProgress.d.ts.map +1 -1
  68. package/lib/typescript/src/components/ui/CircularProgress/styles.d.ts +19 -0
  69. package/lib/typescript/src/components/ui/CircularProgress/styles.d.ts.map +1 -0
  70. package/lib/typescript/src/components/ui/CircularProgress/types.d.ts +17 -2
  71. package/lib/typescript/src/components/ui/CircularProgress/types.d.ts.map +1 -1
  72. package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts.map +1 -1
  73. package/lib/typescript/src/components/ui/Pulse/constants.d.ts +4 -0
  74. package/lib/typescript/src/components/ui/Pulse/constants.d.ts.map +1 -0
  75. package/lib/typescript/src/components/ui/Pulse/types.d.ts +6 -6
  76. package/lib/typescript/src/components/ui/Pulse/types.d.ts.map +1 -1
  77. package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts +0 -9
  78. package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts.map +1 -1
  79. package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts.map +1 -1
  80. package/lib/typescript/src/components/ui/Skeleton/constants.d.ts +3 -0
  81. package/lib/typescript/src/components/ui/Skeleton/constants.d.ts.map +1 -0
  82. package/lib/typescript/src/components/ui/Skeleton/types.d.ts +2 -2
  83. package/lib/typescript/src/components/ui/Skeleton/types.d.ts.map +1 -1
  84. package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
  85. package/lib/typescript/src/components/ui/TextField/constants.d.ts +4 -0
  86. package/lib/typescript/src/components/ui/TextField/constants.d.ts.map +1 -0
  87. package/lib/typescript/src/components/ui/TextField/styles.d.ts +6 -0
  88. package/lib/typescript/src/components/ui/TextField/styles.d.ts.map +1 -1
  89. package/lib/typescript/src/components/ui/TextField/types.d.ts +36 -11
  90. package/lib/typescript/src/components/ui/TextField/types.d.ts.map +1 -1
  91. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts +4 -0
  92. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts.map +1 -0
  93. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts +4 -0
  94. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts.map +1 -0
  95. package/lib/typescript/src/components/ui/Textarea/types.d.ts +4 -2
  96. package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
  97. package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts.map +1 -1
  98. package/lib/typescript/src/components/ui/Thumbnail/constants.d.ts +4 -0
  99. package/lib/typescript/src/components/ui/Thumbnail/constants.d.ts.map +1 -0
  100. package/lib/typescript/src/components/ui/Thumbnail/index.d.ts +1 -1
  101. package/lib/typescript/src/components/ui/Thumbnail/index.d.ts.map +1 -1
  102. package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts +2 -6
  103. package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts.map +1 -1
  104. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts +9 -8
  105. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts.map +1 -1
  106. package/lib/typescript/src/components/ui/Thumbnail/types.d.ts +23 -5
  107. package/lib/typescript/src/components/ui/Thumbnail/types.d.ts.map +1 -1
  108. package/lib/typescript/src/components/ui/index.d.ts +1 -1
  109. package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
  110. package/lib/typescript/src/components/ui/shared/pulse/constants.d.ts +2 -0
  111. package/lib/typescript/src/components/ui/shared/pulse/constants.d.ts.map +1 -0
  112. package/lib/typescript/src/components/ui/shared/pulse/normalizePulseOptions.d.ts +7 -0
  113. package/lib/typescript/src/components/ui/shared/pulse/normalizePulseOptions.d.ts.map +1 -0
  114. package/lib/typescript/src/components/ui/shared/pulse/types.d.ts +17 -0
  115. package/lib/typescript/src/components/ui/shared/pulse/types.d.ts.map +1 -0
  116. package/lib/typescript/src/components/ui/shared/pulse/usePulseAnimation.d.ts +8 -0
  117. package/lib/typescript/src/components/ui/shared/pulse/usePulseAnimation.d.ts.map +1 -0
  118. package/lib/typescript/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.d.ts +1 -1
  119. package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.d.ts.map +1 -0
  120. package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.web.d.ts +7 -0
  121. package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.web.d.ts.map +1 -0
  122. package/package.json +1 -1
  123. package/src/components/ui/Avatar/Avatar.tsx +2 -6
  124. package/src/components/ui/Avatar/geometry.ts +30 -0
  125. package/src/components/ui/Avatar/styles.ts +2 -30
  126. package/src/components/ui/Avatar/types.ts +8 -2
  127. package/src/components/ui/AvatarGroup/AvatarGroup.tsx +1 -1
  128. package/src/components/ui/BorderBeam/normalizeBorderBeam.ts +2 -2
  129. package/src/components/ui/BorderBeam/types.ts +2 -2
  130. package/src/components/ui/CircularProgress/CircularProgress.tsx +20 -26
  131. package/src/components/ui/CircularProgress/normalizeCircularProgress.ts +7 -15
  132. package/src/components/ui/CircularProgress/styles.ts +13 -0
  133. package/src/components/ui/CircularProgress/types.ts +19 -2
  134. package/src/components/ui/Pulse/PulseDot.tsx +6 -5
  135. package/src/components/ui/Pulse/constants.ts +14 -0
  136. package/src/components/ui/Pulse/types.ts +6 -6
  137. package/src/components/ui/Pulse/usePulse.ts +4 -81
  138. package/src/components/ui/Skeleton/Skeleton.tsx +6 -6
  139. package/src/components/ui/Skeleton/constants.ts +8 -0
  140. package/src/components/ui/Skeleton/types.ts +2 -2
  141. package/src/components/ui/TextField/TextFieldBase.tsx +28 -4
  142. package/src/components/ui/TextField/constants.ts +6 -0
  143. package/src/components/ui/TextField/styles.ts +8 -2
  144. package/src/components/ui/TextField/types.ts +41 -11
  145. package/src/components/ui/TextField/useMultilineLayout.ts +20 -0
  146. package/src/components/ui/TextField/useMultilineLayout.web.ts +59 -0
  147. package/src/components/ui/Textarea/types.ts +9 -6
  148. package/src/components/ui/Thumbnail/Thumbnail.tsx +19 -5
  149. package/src/components/ui/Thumbnail/constants.ts +24 -0
  150. package/src/components/ui/Thumbnail/index.ts +1 -0
  151. package/src/components/ui/Thumbnail/normalize.ts +38 -19
  152. package/src/components/ui/Thumbnail/styles.ts +6 -17
  153. package/src/components/ui/Thumbnail/types.ts +27 -5
  154. package/src/components/ui/index.ts +1 -0
  155. package/src/components/ui/shared/pulse/constants.ts +2 -0
  156. package/src/components/ui/shared/pulse/normalizePulseOptions.ts +48 -0
  157. package/src/components/ui/shared/pulse/types.ts +18 -0
  158. package/src/components/ui/shared/pulse/usePulseAnimation.ts +29 -0
  159. package/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.ts +2 -2
  160. package/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.web.ts +4 -19
  161. package/lib/module/components/ui/Pulse/normalizePulseOptions.js.map +0 -1
  162. package/lib/module/components/ui/Pulse/usePulseDriver.js.map +0 -1
  163. package/lib/module/components/ui/Pulse/usePulseDriver.web.js.map +0 -1
  164. package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts +0 -32
  165. package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts.map +0 -1
  166. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.d.ts.map +0 -1
  167. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts +0 -18
  168. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts.map +0 -1
  169. package/src/components/ui/Pulse/normalizePulseOptions.ts +0 -76
package/README.md CHANGED
@@ -128,6 +128,12 @@ invalid-image fixture
128
128
  Jest 只证明 source wiring 以及合成 load/error event 后的组件状态;真实 HTTPS、缓存和 native
129
129
  decode 仍按 `example/README.md` 的 Android/iOS 手工矩阵标记为待执行。
130
130
 
131
+ ## 多行输入与媒体消费
132
+
133
+ Textarea 的 `minHeight` / `maxHeight` 约束完整输入表面,随内容、宽度和应用字号测量,支持缩短及外部清空;键盘避让与发送由消费者负责。Thumbnail 保留原三档默认,新增 `Readonly<ThumbnailDimensions>` 实际尺寸与失败 `fallback`。CircularProgress 百分比随应用字号缩放一次,小环配大字时外层自然增大,环与描边不变。
134
+
135
+ 详细契约和可操作样例见 Website 的 Textarea、Thumbnail、Loading 页面;本地验证依据见 [Design 契约验证](docs/design-contract-verification.md)。
136
+
131
137
  ## 文档
132
138
 
133
139
  - **文档站**(快速开始 · 组件 API · 设计令牌 · 设计原则):https://unif-design.github.io/react-native-design/
@@ -5,7 +5,8 @@ import { Text, View } from 'react-native';
5
5
  import { scaleFontMetric, useColors, useFontScale } from "../../../theme/index.js";
6
6
  import { resolveImageSource } from "../../../utils/imageSource.js";
7
7
  import { ImageAttempt } from "../shared/ImageAttempt.js";
8
- import { paletteFor, resolveAvatarBorderRadius, sizingFor, styles } from "./styles.js";
8
+ import { paletteFor, styles } from "./styles.js";
9
+ import { resolveAvatarBorderRadius, sizingFor } from "./geometry.js";
9
10
  import { jsx as _jsx } from "react/jsx-runtime";
10
11
  /**
11
12
  * 头像 —— 2 种形态 × 5 档尺寸 × 4 种配色 × 可选图片 source。
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","View","scaleFontMetric","useColors","useFontScale","resolveImageSource","ImageAttempt","paletteFor","resolveAvatarBorderRadius","sizingFor","styles","jsx","_jsx","Avatar","label","size","shape","variant","source","style","testID","c","fontScale","dims","palette","labelFontSize","fs","resolvedSource","fallback","fontSize","color","fg","numberOfLines","children","base","width","box","height","borderRadius","backgroundColor","bg","accessible","accessibilityLabel","undefined","image","resizeMode","key"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/Avatar.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,eAAe,EAAEC,SAAS,EAAEC,YAAY,QAAQ,yBAAgB;AACzE,SAASC,kBAAkB,QAAQ,+BAA4B;AAC/D,SAASC,YAAY,QAAQ,2BAAwB;AACrD,SACEC,UAAU,EACVC,yBAAyB,EACzBC,SAAS,EACTC,MAAM,QACD,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,IAAI,GAAG,IAAI;EACXC,KAAK,GAAG,QAAQ;EAChBC,OAAO,GAAG,SAAS;EACnBC,MAAM;EACNC,KAAK;EACLC;AACW,CAAC,EAAqB;EACjC,MAAMC,CAAC,GAAGlB,SAAS,CAAC,CAAC;EACrB,MAAMmB,SAAS,GAAGlB,YAAY,CAAC,CAAC;EAChC,MAAMmB,IAAI,GAAGd,SAAS,CAACM,IAAI,CAAC;EAC5B,MAAMS,OAAO,GAAGjB,UAAU,CAACU,OAAO,EAAEI,CAAC,CAAC;EACtC,MAAMI,aAAa,GAAGvB,eAAe,CAACqB,IAAI,CAACG,EAAE,EAAEJ,SAAS,CAAC;EACzD,MAAMK,cAAc,GAAGtB,kBAAkB,CAACa,MAAM,CAAC;EACjD,MAAMU,QAAQ,gBACZhB,IAAA,CAACZ,IAAI;IACHmB,KAAK,EAAE,CAACT,MAAM,CAACI,KAAK,EAAE;MAAEe,QAAQ,EAAEJ,aAAa;MAAEK,KAAK,EAAEN,OAAO,CAACO;IAAG,CAAC,CAAE;IACtEC,aAAa,EAAE,CAAE;IAAAC,QAAA,EAEhBnB;EAAK,CACF,CACP;EAED,oBACEF,IAAA,CAACX,IAAI;IACHkB,KAAK,EAAE,CACLT,MAAM,CAACwB,IAAI,EACX;MACEC,KAAK,EAAEZ,IAAI,CAACa,GAAG;MACfC,MAAM,EAAEd,IAAI,CAACa,GAAG;MAChBE,YAAY,EAAE9B,yBAAyB,CAACO,IAAI,EAAEC,KAAK,CAAC;MACpDuB,eAAe,EAAEf,OAAO,CAACgB;IAC3B,CAAC,EACDrB,KAAK,CACL;IACFsB,UAAU,EAAE,CAAC,CAAC3B,KAAM;IACpB4B,kBAAkB,EAAE5B,KAAM;IAC1BM,MAAM,EAAEA,MAAO;IAAAa,QAAA,EAEdN,cAAc,KAAKgB,SAAS,GAC3Bf,QAAQ,gBAERhB,IAAA,CAACN,YAAY;MAEXY,MAAM,EAAES,cAAc,CAACT,MAAO;MAC9BU,QAAQ,EAAEA,QAAS;MACnBT,KAAK,EAAET,MAAM,CAACkC,KAAM;MACpBC,UAAU,EAAC;IAAO,GAJblB,cAAc,CAACmB,GAKrB;EACF,CACG,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["React","Text","View","scaleFontMetric","useColors","useFontScale","resolveImageSource","ImageAttempt","paletteFor","styles","resolveAvatarBorderRadius","sizingFor","jsx","_jsx","Avatar","label","size","shape","variant","source","style","testID","c","fontScale","dims","palette","labelFontSize","fs","resolvedSource","fallback","fontSize","color","fg","numberOfLines","children","base","width","box","height","borderRadius","backgroundColor","bg","accessible","accessibilityLabel","undefined","image","resizeMode","key"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/Avatar.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,eAAe,EAAEC,SAAS,EAAEC,YAAY,QAAQ,yBAAgB;AACzE,SAASC,kBAAkB,QAAQ,+BAA4B;AAC/D,SAASC,YAAY,QAAQ,2BAAwB;AACrD,SAASC,UAAU,EAAEC,MAAM,QAAQ,aAAU;AAC7C,SAASC,yBAAyB,EAAEC,SAAS,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,IAAI,GAAG,IAAI;EACXC,KAAK,GAAG,QAAQ;EAChBC,OAAO,GAAG,SAAS;EACnBC,MAAM;EACNC,KAAK;EACLC;AACW,CAAC,EAAqB;EACjC,MAAMC,CAAC,GAAGlB,SAAS,CAAC,CAAC;EACrB,MAAMmB,SAAS,GAAGlB,YAAY,CAAC,CAAC;EAChC,MAAMmB,IAAI,GAAGb,SAAS,CAACK,IAAI,CAAC;EAC5B,MAAMS,OAAO,GAAGjB,UAAU,CAACU,OAAO,EAAEI,CAAC,CAAC;EACtC,MAAMI,aAAa,GAAGvB,eAAe,CAACqB,IAAI,CAACG,EAAE,EAAEJ,SAAS,CAAC;EACzD,MAAMK,cAAc,GAAGtB,kBAAkB,CAACa,MAAM,CAAC;EACjD,MAAMU,QAAQ,gBACZhB,IAAA,CAACZ,IAAI;IACHmB,KAAK,EAAE,CAACX,MAAM,CAACM,KAAK,EAAE;MAAEe,QAAQ,EAAEJ,aAAa;MAAEK,KAAK,EAAEN,OAAO,CAACO;IAAG,CAAC,CAAE;IACtEC,aAAa,EAAE,CAAE;IAAAC,QAAA,EAEhBnB;EAAK,CACF,CACP;EAED,oBACEF,IAAA,CAACX,IAAI;IACHkB,KAAK,EAAE,CACLX,MAAM,CAAC0B,IAAI,EACX;MACEC,KAAK,EAAEZ,IAAI,CAACa,GAAG;MACfC,MAAM,EAAEd,IAAI,CAACa,GAAG;MAChBE,YAAY,EAAE7B,yBAAyB,CAACM,IAAI,EAAEC,KAAK,CAAC;MACpDuB,eAAe,EAAEf,OAAO,CAACgB;IAC3B,CAAC,EACDrB,KAAK,CACL;IACFsB,UAAU,EAAE,CAAC,CAAC3B,KAAM;IACpB4B,kBAAkB,EAAE5B,KAAM;IAC1BM,MAAM,EAAEA,MAAO;IAAAa,QAAA,EAEdN,cAAc,KAAKgB,SAAS,GAC3Bf,QAAQ,gBAERhB,IAAA,CAACN,YAAY;MAEXY,MAAM,EAAES,cAAc,CAACT,MAAO;MAC9BU,QAAQ,EAAEA,QAAS;MACnBT,KAAK,EAAEX,MAAM,CAACoC,KAAM;MACpBC,UAAU,EAAC;IAAO,GAJblB,cAAc,CAACmB,GAKrB;EACF,CACG,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ import { avatar, radius, rf } from "../../../theme/index.js";
4
+ /** Avatar 尺寸推导:5 档 size → { box, fs }。box 走 avatar.<size> token。
5
+ * 新增 size 在 types.ts 加 union + 这里加 case + tokens.ts 补 avatar.<key>。 */
6
+ export function sizingFor(size) {
7
+ switch (size) {
8
+ case 'xs':
9
+ return {
10
+ box: avatar.xs,
11
+ fs: rf(10)
12
+ };
13
+ case 'sm':
14
+ return {
15
+ box: avatar.sm,
16
+ fs: rf(12)
17
+ };
18
+ case 'md':
19
+ return {
20
+ box: avatar.md,
21
+ fs: rf(13)
22
+ };
23
+ case 'lg':
24
+ return {
25
+ box: avatar.lg,
26
+ fs: rf(15)
27
+ };
28
+ case 'xl':
29
+ return {
30
+ box: avatar.xl,
31
+ fs: rf(20)
32
+ };
33
+ }
34
+ }
35
+
36
+ /** circle 保留直径一半的现有视觉;square 按尺寸使用既有圆角 token。 */
37
+ export function resolveAvatarBorderRadius(size, shape) {
38
+ if (shape === 'circle') return sizingFor(size).box / 2;
39
+ if (size === 'xs' || size === 'sm') return radius.xs;
40
+ if (size === 'xl') return radius.md;
41
+ return radius.sm;
42
+ }
43
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["avatar","radius","rf","sizingFor","size","box","xs","fs","sm","md","lg","xl","resolveAvatarBorderRadius","shape"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/geometry.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,MAAM,EAAEC,EAAE,QAAQ,yBAAgB;AAGnD;AACA;AACA,OAAO,SAASC,SAASA,CAACC,IAAgB,EAAkB;EAC1D,QAAQA,IAAI;IACV,KAAK,IAAI;MACP,OAAO;QAAEC,GAAG,EAAEL,MAAM,CAACM,EAAE;QAAEC,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEG,GAAG,EAAEL,MAAM,CAACQ,EAAE;QAAED,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEG,GAAG,EAAEL,MAAM,CAACS,EAAE;QAAEF,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEG,GAAG,EAAEL,MAAM,CAACU,EAAE;QAAEH,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEG,GAAG,EAAEL,MAAM,CAACW,EAAE;QAAEJ,EAAE,EAAEL,EAAE,CAAC,EAAE;MAAE,CAAC;EACzC;AACF;;AAEA;AACA,OAAO,SAASU,yBAAyBA,CACvCR,IAAgB,EAChBS,KAAkB,EACV;EACR,IAAIA,KAAK,KAAK,QAAQ,EAAE,OAAOV,SAAS,CAACC,IAAI,CAAC,CAACC,GAAG,GAAG,CAAC;EACtD,IAAID,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,IAAI,EAAE,OAAOH,MAAM,CAACK,EAAE;EACpD,IAAIF,IAAI,KAAK,IAAI,EAAE,OAAOH,MAAM,CAACQ,EAAE;EACnC,OAAOR,MAAM,CAACO,EAAE;AAClB","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { StyleSheet } from 'react-native';
4
- import { avatar, fw, radius, rf } from "../../../theme/index.js";
4
+ import { fw } from "../../../theme/index.js";
5
5
  /** Avatar 静态 base —— 容器圆角 / 尺寸由 resolver 派生。 */
6
6
  export const styles = StyleSheet.create({
7
7
  base: {
@@ -19,46 +19,6 @@ export const styles = StyleSheet.create({
19
19
  }
20
20
  });
21
21
 
22
- /** Avatar 尺寸推导:5 档 size → { box, fs }。box 走 avatar.<size> token。
23
- * 新增 size 在 types.ts 加 union + 这里加 case + tokens.ts 补 avatar.<key>。 */
24
- export function sizingFor(size) {
25
- switch (size) {
26
- case 'xs':
27
- return {
28
- box: avatar.xs,
29
- fs: rf(10)
30
- };
31
- case 'sm':
32
- return {
33
- box: avatar.sm,
34
- fs: rf(12)
35
- };
36
- case 'md':
37
- return {
38
- box: avatar.md,
39
- fs: rf(13)
40
- };
41
- case 'lg':
42
- return {
43
- box: avatar.lg,
44
- fs: rf(15)
45
- };
46
- case 'xl':
47
- return {
48
- box: avatar.xl,
49
- fs: rf(20)
50
- };
51
- }
52
- }
53
-
54
- /** circle 保留直径一半的现有视觉;square 按尺寸使用既有圆角 token。 */
55
- export function resolveAvatarBorderRadius(size, shape) {
56
- if (shape === 'circle') return sizingFor(size).box / 2;
57
- if (size === 'xs' || size === 'sm') return radius.xs;
58
- if (size === 'xl') return radius.md;
59
- return radius.sm;
60
- }
61
-
62
22
  /** Avatar 配色推导:4 种 variant → { bg, fg }。签名与 Tag/Button 的 paletteFor 一致。 */
63
23
  export function paletteFor(variant, c) {
64
24
  switch (variant) {
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","avatar","fw","radius","rf","styles","create","base","alignItems","justifyContent","overflow","label","fontWeight","semi","lineHeight","undefined","image","width","height","sizingFor","size","box","xs","fs","sm","md","lg","xl","resolveAvatarBorderRadius","shape","paletteFor","variant","c","bg","primary","fg","onPrimary","info","onInfo","primaryContainer","surfaceContainerHighest","foreground"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,MAAM,EAAEC,EAAE,EAAEC,MAAM,EAAEC,EAAE,QAA0B,yBAAgB;AAGzE;AACA,OAAO,MAAMC,MAAM,GAAGL,UAAU,CAACM,MAAM,CAAC;EACtCC,IAAI,EAAE;IACJC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,QAAQ,EAAE;EACZ,CAAC;EACDC,KAAK,EAAE;IACLC,UAAU,EAAEV,EAAE,CAACW,IAAI;IACnBC,UAAU,EAAEC;EACd,CAAC;EACDC,KAAK,EAAE;IACLC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV;AACF,CAAC,CAAC;;AAEF;AACA;AACA,OAAO,SAASC,SAASA,CAACC,IAAgB,EAA+B;EACvE,QAAQA,IAAI;IACV,KAAK,IAAI;MACP,OAAO;QAAEC,GAAG,EAAEpB,MAAM,CAACqB,EAAE;QAAEC,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEpB,MAAM,CAACuB,EAAE;QAAED,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEpB,MAAM,CAACwB,EAAE;QAAEF,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEpB,MAAM,CAACyB,EAAE;QAAEH,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;IACvC,KAAK,IAAI;MACP,OAAO;QAAEiB,GAAG,EAAEpB,MAAM,CAAC0B,EAAE;QAAEJ,EAAE,EAAEnB,EAAE,CAAC,EAAE;MAAE,CAAC;EACzC;AACF;;AAEA;AACA,OAAO,SAASwB,yBAAyBA,CACvCR,IAAgB,EAChBS,KAAkB,EACV;EACR,IAAIA,KAAK,KAAK,QAAQ,EAAE,OAAOV,SAAS,CAACC,IAAI,CAAC,CAACC,GAAG,GAAG,CAAC;EACtD,IAAID,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,IAAI,EAAE,OAAOjB,MAAM,CAACmB,EAAE;EACpD,IAAIF,IAAI,KAAK,IAAI,EAAE,OAAOjB,MAAM,CAACsB,EAAE;EACnC,OAAOtB,MAAM,CAACqB,EAAE;AAClB;;AAEA;AACA,OAAO,SAASM,UAAUA,CACxBC,OAAsB,EACtBC,CAAc,EACc;EAC5B,QAAQD,OAAO;IACb,KAAK,OAAO;MACV,OAAO;QAAEE,EAAE,EAAED,CAAC,CAACE,OAAO;QAAEC,EAAE,EAAEH,CAAC,CAACI;MAAU,CAAC;IAC3C,KAAK,MAAM;MACT,OAAO;QAAEH,EAAE,EAAED,CAAC,CAACK,IAAI;QAAEF,EAAE,EAAEH,CAAC,CAACM;MAAO,CAAC;IACrC,KAAK,MAAM;MACT,OAAO;QAAEL,EAAE,EAAED,CAAC,CAACO,gBAAgB;QAAEJ,EAAE,EAAEH,CAAC,CAACE;MAAQ,CAAC;IAClD,KAAK,SAAS;MACZ,OAAO;QAAED,EAAE,EAAED,CAAC,CAACQ,uBAAuB;QAAEL,EAAE,EAAEH,CAAC,CAACS;MAAW,CAAC;EAC9D;AACF","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","fw","styles","create","base","alignItems","justifyContent","overflow","label","fontWeight","semi","lineHeight","undefined","image","width","height","paletteFor","variant","c","bg","primary","fg","onPrimary","info","onInfo","primaryContainer","surfaceContainerHighest","foreground"],"sourceRoot":"../../../../../src","sources":["components/ui/Avatar/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,EAAE,QAA0B,yBAAgB;AAGrD;AACA,OAAO,MAAMC,MAAM,GAAGF,UAAU,CAACG,MAAM,CAAC;EACtCC,IAAI,EAAE;IACJC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,QAAQ,EAAE;EACZ,CAAC;EACDC,KAAK,EAAE;IACLC,UAAU,EAAER,EAAE,CAACS,IAAI;IACnBC,UAAU,EAAEC;EACd,CAAC;EACDC,KAAK,EAAE;IACLC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV;AACF,CAAC,CAAC;;AAEF;AACA,OAAO,SAASC,UAAUA,CACxBC,OAAsB,EACtBC,CAAc,EACc;EAC5B,QAAQD,OAAO;IACb,KAAK,OAAO;MACV,OAAO;QAAEE,EAAE,EAAED,CAAC,CAACE,OAAO;QAAEC,EAAE,EAAEH,CAAC,CAACI;MAAU,CAAC;IAC3C,KAAK,MAAM;MACT,OAAO;QAAEH,EAAE,EAAED,CAAC,CAACK,IAAI;QAAEF,EAAE,EAAEH,CAAC,CAACM;MAAO,CAAC;IACrC,KAAK,MAAM;MACT,OAAO;QAAEL,EAAE,EAAED,CAAC,CAACO,gBAAgB;QAAEJ,EAAE,EAAEH,CAAC,CAACE;MAAQ,CAAC;IAClD,KAAK,SAAS;MACZ,OAAO;QAAED,EAAE,EAAED,CAAC,CAACQ,uBAAuB;QAAEL,EAAE,EAAEH,CAAC,CAACS;MAAW,CAAC;EAC9D;AACF","ignoreList":[]}
@@ -7,7 +7,7 @@ import { pressedOpacity, scaleFontMetric, useColors, useFontScale, useThemedStyl
7
7
  import { createLogger } from "../../../utils/logger/index.js";
8
8
  import { childTestID } from "../../../utils/testID/index.js";
9
9
  import { Avatar } from "../Avatar/index.js";
10
- import { resolveAvatarBorderRadius, sizingFor } from "../Avatar/styles.js";
10
+ import { resolveAvatarBorderRadius, sizingFor } from "../Avatar/geometry.js";
11
11
  import { normalizeNonBlankText } from "../shared/accessibilityName.js";
12
12
  import { resolveAvatarGroupLayout } from "./layout.js";
13
13
  import { normalizeAvatarGroup } from "./normalize.js";
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","Text","View","Pressable","pressedOpacity","scaleFontMetric","useColors","useFontScale","useThemedStyles","createLogger","childTestID","Avatar","resolveAvatarBorderRadius","sizingFor","normalizeNonBlankText","resolveAvatarGroupLayout","normalizeAvatarGroup","makeStyles","jsx","_jsx","jsxs","_jsxs","log","warned","Set","warnOnce","key","message","has","add","warn","AvatarGroup","items","size","shape","max","style","testID","onOverflowPress","overflowAccessibilityLabel","overflowAccessibilityHint","colors","fontScale","styles","normalized","layout","avatarSizing","overflowFontSize","fs","customOverflowLabel","hasBlankOverflowLabel","overflowCount","undefined","__DEV__","invalidMax","String","length","slotStyle","index","borderColor","surface","borderWidth","marginStart","overlap","zIndex","overflowLabel","overflowA11yLabel","overflowStyle","visibleItems","width","box","height","borderRadius","backgroundColor","primaryContainer","overflowText","color","primary","fontSize","numberOfLines","children","root","map","item","label","source","variant","accessible","accessibilityLabel","overflow","accessibilityRole","accessibilityHint","onPress","hitSlop","pressed","opacity"],"sourceRoot":"../../../../../src","sources":["components/ui/AvatarGroup/AvatarGroup.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","Text","View","Pressable","pressedOpacity","scaleFontMetric","useColors","useFontScale","useThemedStyles","createLogger","childTestID","Avatar","resolveAvatarBorderRadius","sizingFor","normalizeNonBlankText","resolveAvatarGroupLayout","normalizeAvatarGroup","makeStyles","jsx","_jsx","jsxs","_jsxs","log","warned","Set","warnOnce","key","message","has","add","warn","AvatarGroup","items","size","shape","max","style","testID","onOverflowPress","overflowAccessibilityLabel","overflowAccessibilityHint","colors","fontScale","styles","normalized","layout","avatarSizing","overflowFontSize","fs","customOverflowLabel","hasBlankOverflowLabel","overflowCount","undefined","__DEV__","invalidMax","String","length","slotStyle","index","borderColor","surface","borderWidth","marginStart","overlap","zIndex","overflowLabel","overflowA11yLabel","overflowStyle","visibleItems","width","box","height","borderRadius","backgroundColor","primaryContainer","overflowText","color","primary","fontSize","numberOfLines","children","root","map","item","label","source","variant","accessible","accessibilityLabel","overflow","accessibilityRole","accessibilityHint","onPress","hitSlop","pressed","opacity"],"sourceRoot":"../../../../../src","sources":["components/ui/AvatarGroup/AvatarGroup.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  export const BORDER_BEAM_DEFAULTS = {
4
- duration: 6000,
5
- lineWidth: 1,
4
+ duration: 2400,
5
+ lineWidth: 2,
6
6
  size: 40,
7
7
  borderRadius: 12
8
8
  };
@@ -2,24 +2,11 @@
2
2
 
3
3
  import { Text, View } from 'react-native';
4
4
  import Svg, { Circle } from 'react-native-svg';
5
- import { r, type, useColors } from "../../../theme/index.js";
5
+ import { r, type, useColors, useFontScale, scaleFontMetric } from "../../../theme/index.js";
6
6
  import { A11Y_HIDDEN_PROPS } from "../shared/a11y.js";
7
7
  import { normalizeCircularProgress } from "./normalizeCircularProgress.js";
8
+ import { styles } from "./styles.js";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- const OUTER_CENTER_STYLE = {
10
- alignItems: 'center',
11
- justifyContent: 'center'
12
- };
13
- const VISUAL_CONTAINER_STYLE = {
14
- position: 'relative'
15
- };
16
- const LABEL_CENTER_STYLE = {
17
- fontWeight: '600',
18
- left: 0,
19
- position: 'absolute',
20
- textAlign: 'center',
21
- top: 0
22
- };
23
10
  export function CircularProgress({
24
11
  value,
25
12
  size = r(32),
@@ -33,6 +20,7 @@ export function CircularProgress({
33
20
  testID
34
21
  }) {
35
22
  const colors = useColors();
23
+ const fontScale = useFontScale();
36
24
  const normalized = normalizeCircularProgress({
37
25
  value,
38
26
  size,
@@ -57,20 +45,24 @@ export function CircularProgress({
57
45
  now: percentage,
58
46
  text: `${percentage}%`
59
47
  },
60
- style: [{
48
+ style: [showLabel ? [styles.contentSize, {
49
+ minHeight: safeSize,
50
+ minWidth: safeSize
51
+ }] : {
61
52
  height: safeSize,
62
53
  width: safeSize
63
- }, style, OUTER_CENTER_STYLE],
54
+ }, style, styles.center],
64
55
  testID: testID,
65
56
  children: /*#__PURE__*/_jsxs(View, {
66
57
  style: [{
67
- height: safeSize,
68
- width: safeSize
69
- }, VISUAL_CONTAINER_STYLE],
58
+ minHeight: safeSize,
59
+ minWidth: safeSize
60
+ }, styles.center],
70
61
  ...A11Y_HIDDEN_PROPS,
71
62
  children: [/*#__PURE__*/_jsxs(Svg, {
72
63
  height: safeSize,
73
64
  width: safeSize,
65
+ style: styles.ring,
74
66
  children: [/*#__PURE__*/_jsx(Circle, {
75
67
  cx: center,
76
68
  cy: center,
@@ -95,11 +87,8 @@ export function CircularProgress({
95
87
  }), showLabel ? /*#__PURE__*/_jsx(Text, {
96
88
  style: [{
97
89
  color: labelColor ?? colors.foreground,
98
- fontSize: type.nano,
99
- height: safeSize,
100
- lineHeight: safeSize,
101
- width: safeSize
102
- }, LABEL_CENTER_STYLE],
90
+ fontSize: scaleFontMetric(type.nano, fontScale)
91
+ }, styles.label],
103
92
  children: `${percentage}%`
104
93
  }) : null]
105
94
  })
@@ -1 +1 @@
1
- {"version":3,"names":["Text","View","Svg","Circle","r","type","useColors","A11Y_HIDDEN_PROPS","normalizeCircularProgress","jsx","_jsx","jsxs","_jsxs","OUTER_CENTER_STYLE","alignItems","justifyContent","VISUAL_CONTAINER_STYLE","position","LABEL_CENTER_STYLE","fontWeight","left","textAlign","top","CircularProgress","value","size","thickness","color","trackColor","showLabel","labelColor","accessibilityLabel","style","testID","colors","normalized","circumference","dashOffset","percentage","radius","safeSize","safeThickness","center","accessible","accessibilityRole","accessibilityValue","min","max","now","text","height","width","children","cx","cy","fill","stroke","outline","strokeWidth","rotation","originX","originY","primary","strokeDasharray","strokeDashoffset","strokeLinecap","foreground","fontSize","nano","lineHeight"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/CircularProgress.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Text","View","Svg","Circle","r","type","useColors","useFontScale","scaleFontMetric","A11Y_HIDDEN_PROPS","normalizeCircularProgress","styles","jsx","_jsx","jsxs","_jsxs","CircularProgress","value","size","thickness","color","trackColor","showLabel","labelColor","accessibilityLabel","style","testID","colors","fontScale","normalized","circumference","dashOffset","percentage","radius","safeSize","safeThickness","center","accessible","accessibilityRole","accessibilityValue","min","max","now","text","contentSize","minHeight","minWidth","height","width","children","ring","cx","cy","fill","stroke","outline","strokeWidth","rotation","originX","originY","primary","strokeDasharray","strokeDashoffset","strokeLinecap","foreground","fontSize","nano","label"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/CircularProgress.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["createLogger","log","warnedKeys","Set","warnOnce","key","message","has","add","warn","normalizeCircularProgress","input","value","size","thickness","Number","isFinite","safeValue","Math","min","max","safeSize","fallbackThickness","safeThickness","radius","circumference","PI","percentage","round","dashOffset"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/normalizeCircularProgress.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,gCAAuB;AAEpD,MAAMC,GAAG,GAAGD,YAAY,CAAC,kBAAkB,CAAC;AAC5C,MAAME,UAAU,GAAG,IAAIC,GAAG,CAAS,CAAC;AAYpC,SAASC,QAAQA,CAACC,GAAW,EAAEC,OAAe,EAAQ;EACpD,IAAIJ,UAAU,CAACK,GAAG,CAACF,GAAG,CAAC,EAAE;EACzBH,UAAU,CAACM,GAAG,CAACH,GAAG,CAAC;EACnBJ,GAAG,CAACQ,IAAI,CAACH,OAAO,CAAC;AACnB;AAEA,OAAO,SAASI,yBAAyBA,CAACC,KAIzC,EAA8B;EAC7B,MAAM;IAAEC,KAAK;IAAEC,IAAI;IAAEC;EAAU,CAAC,GAAGH,KAAK;EAExC,IAAI,CAACI,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;IACrDR,QAAQ,CACN,SAASQ,KAAK,EAAE,EAChB,yBAAyBA,KAAK,WAChC,CAAC;EACH;EACA,IAAI,CAACG,MAAM,CAACC,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,GAAG,EAAE,EAAE;IACvCT,QAAQ,CAAC,QAAQS,IAAI,EAAE,EAAE,uBAAuBA,IAAI,SAAS,CAAC;EAChE;EACA,IAAI,CAACE,MAAM,CAACC,QAAQ,CAACF,SAAS,CAAC,IAAIA,SAAS,IAAI,CAAC,EAAE;IACjDV,QAAQ,CACN,aAAaU,SAAS,EAAE,EACxB,uBAAuBA,SAAS,iBAClC,CAAC;EACH;EAEA,MAAMG,SAAS,GAAGF,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,GACpCM,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,CAAC,EAAER,KAAK,CAAC,CAAC,GAC/B,CAAC;EACL,MAAMS,QAAQ,GAAGN,MAAM,CAACC,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,IAAI,EAAE,GAAGA,IAAI,GAAG,EAAE;EAChE,MAAMS,iBAAiB,GACrBP,MAAM,CAACC,QAAQ,CAACF,SAAS,CAAC,IAAIA,SAAS,GAAG,CAAC,GAAGA,SAAS,GAAG,CAAC;EAC7D,MAAMS,aAAa,GAAGL,IAAI,CAACC,GAAG,CAACG,iBAAiB,EAAED,QAAQ,GAAG,CAAC,CAAC;EAC/D,MAAMG,MAAM,GAAG,CAACH,QAAQ,GAAGE,aAAa,IAAI,CAAC;EAC7C,MAAME,aAAa,GAAG,CAAC,GAAGP,IAAI,CAACQ,EAAE,GAAGF,MAAM;EAE1C,OAAO;IACLP,SAAS;IACTU,UAAU,EAAET,IAAI,CAACU,KAAK,CAACX,SAAS,GAAG,GAAG,CAAC;IACvCI,QAAQ;IACRE,aAAa;IACbC,MAAM;IACNC,aAAa;IACbI,UAAU,EAAEJ,aAAa,IAAI,CAAC,GAAGR,SAAS;EAC5C,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["createLogger","log","warnedKeys","Set","warnOnce","key","message","has","add","warn","normalizeCircularProgress","input","value","size","thickness","Number","isFinite","safeValue","Math","min","max","safeSize","fallbackThickness","safeThickness","radius","circumference","PI","percentage","round","dashOffset"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/normalizeCircularProgress.ts"],"mappings":";;AAIA,SAASA,YAAY,QAAQ,gCAAuB;AAEpD,MAAMC,GAAG,GAAGD,YAAY,CAAC,kBAAkB,CAAC;AAC5C,MAAME,UAAU,GAAG,IAAIC,GAAG,CAAS,CAAC;AAEpC,SAASC,QAAQA,CAACC,GAAW,EAAEC,OAAe,EAAQ;EACpD,IAAIJ,UAAU,CAACK,GAAG,CAACF,GAAG,CAAC,EAAE;EACzBH,UAAU,CAACM,GAAG,CAACH,GAAG,CAAC;EACnBJ,GAAG,CAACQ,IAAI,CAACH,OAAO,CAAC;AACnB;AAEA,OAAO,SAASI,yBAAyBA,CACvCC,KAA4B,EACA;EAC5B,MAAM;IAAEC,KAAK;IAAEC,IAAI;IAAEC;EAAU,CAAC,GAAGH,KAAK;EAExC,IAAI,CAACI,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;IACrDR,QAAQ,CACN,SAASQ,KAAK,EAAE,EAChB,yBAAyBA,KAAK,WAChC,CAAC;EACH;EACA,IAAI,CAACG,MAAM,CAACC,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,GAAG,EAAE,EAAE;IACvCT,QAAQ,CAAC,QAAQS,IAAI,EAAE,EAAE,uBAAuBA,IAAI,SAAS,CAAC;EAChE;EACA,IAAI,CAACE,MAAM,CAACC,QAAQ,CAACF,SAAS,CAAC,IAAIA,SAAS,IAAI,CAAC,EAAE;IACjDV,QAAQ,CACN,aAAaU,SAAS,EAAE,EACxB,uBAAuBA,SAAS,iBAClC,CAAC;EACH;EAEA,MAAMG,SAAS,GAAGF,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,GACpCM,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,CAAC,EAAER,KAAK,CAAC,CAAC,GAC/B,CAAC;EACL,MAAMS,QAAQ,GAAGN,MAAM,CAACC,QAAQ,CAACH,IAAI,CAAC,IAAIA,IAAI,IAAI,EAAE,GAAGA,IAAI,GAAG,EAAE;EAChE,MAAMS,iBAAiB,GACrBP,MAAM,CAACC,QAAQ,CAACF,SAAS,CAAC,IAAIA,SAAS,GAAG,CAAC,GAAGA,SAAS,GAAG,CAAC;EAC7D,MAAMS,aAAa,GAAGL,IAAI,CAACC,GAAG,CAACG,iBAAiB,EAAED,QAAQ,GAAG,CAAC,CAAC;EAC/D,MAAMG,MAAM,GAAG,CAACH,QAAQ,GAAGE,aAAa,IAAI,CAAC;EAC7C,MAAME,aAAa,GAAG,CAAC,GAAGP,IAAI,CAACQ,EAAE,GAAGF,MAAM;EAE1C,OAAO;IACLP,SAAS;IACTU,UAAU,EAAET,IAAI,CAACU,KAAK,CAACX,SAAS,GAAG,GAAG,CAAC;IACvCI,QAAQ;IACRE,aAAa;IACbC,MAAM;IACNC,aAAa;IACbI,UAAU,EAAEJ,aAAa,IAAI,CAAC,GAAGR,SAAS;EAC5C,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet } from 'react-native';
4
+ export const styles = StyleSheet.create({
5
+ center: {
6
+ alignItems: 'center',
7
+ justifyContent: 'center'
8
+ },
9
+ // 固有尺寸避免父级 stretch 拉宽圆环,文字按自然尺寸占位。
10
+ contentSize: {
11
+ width: 'max-content',
12
+ height: 'max-content'
13
+ },
14
+ // 环不参与文字测量,保持显式直径;文字自然撑开最小容器。
15
+ ring: {
16
+ position: 'absolute'
17
+ },
18
+ label: {
19
+ fontWeight: '600',
20
+ textAlign: 'center',
21
+ flexShrink: 0
22
+ }
23
+ });
24
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","styles","create","center","alignItems","justifyContent","contentSize","width","height","ring","position","label","fontWeight","textAlign","flexShrink"],"sourceRoot":"../../../../../src","sources":["components/ui/CircularProgress/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,OAAO,MAAMC,MAAM,GAAGD,UAAU,CAACE,MAAM,CAAC;EACtCC,MAAM,EAAE;IAAEC,UAAU,EAAE,QAAQ;IAAEC,cAAc,EAAE;EAAS,CAAC;EAC1D;EACAC,WAAW,EAAE;IACXC,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAE;EACV,CAAC;EACD;EACAC,IAAI,EAAE;IAAEC,QAAQ,EAAE;EAAW,CAAC;EAC9BC,KAAK,EAAE;IAAEC,UAAU,EAAE,KAAK;IAAEC,SAAS,EAAE,QAAQ;IAAEC,UAAU,EAAE;EAAE;AACjE,CAAC,CAAC","ignoreList":[]}
@@ -3,8 +3,11 @@
3
3
  import React from 'react';
4
4
  import Animated from 'react-native-reanimated';
5
5
  import { r, useColors } from "../../../theme/index.js";
6
- import { DOT_DEFAULTS, usePulseWithDefaults } from "./usePulse.js";
6
+ import { createLogger } from "../../../utils/logger/index.js";
7
+ import { usePulseAnimation } from "../shared/pulse/usePulseAnimation.js";
8
+ import { PULSE_DOT_DEFAULTS } from "./constants.js";
7
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
+ const log = createLogger('PulseDot');
8
11
  export function PulseDot({
9
12
  size = r(6),
10
13
  color,
@@ -14,10 +17,7 @@ export function PulseDot({
14
17
  } = {}) {
15
18
  const c = useColors();
16
19
  const fill = color ?? c.primary;
17
- // [L-93] 圆点的 from 默认 0.5(比 <Pulse> 的 0.6 更淡)。默认值交给共享的
18
- // DOT_DEFAULTS,不再在解构里写 `from = 0.5` —— 那样 from 会先被默认值填满,
19
- // 归一化层再也分不清「调用方没传」和「调用方传了 0.5」。
20
- const animatedStyle = usePulseWithDefaults(opts, DOT_DEFAULTS, 'PulseDot');
20
+ const animatedStyle = usePulseAnimation(opts, PULSE_DOT_DEFAULTS, log);
21
21
  return /*#__PURE__*/_jsx(Animated.View, {
22
22
  style: [{
23
23
  width: size,
@@ -1 +1 @@
1
- {"version":3,"names":["React","Animated","r","useColors","DOT_DEFAULTS","usePulseWithDefaults","jsx","_jsx","PulseDot","size","color","style","testID","opts","c","fill","primary","animatedStyle","View","width","height","borderRadius","backgroundColor","accessibilityElementsHidden","importantForAccessibility"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/PulseDot.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,CAAC,EAAEC,SAAS,QAAQ,yBAAgB;AAC7C,SAASC,YAAY,EAAEC,oBAAoB,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGhE,OAAO,SAASC,QAAQA,CAAC;EACvBC,IAAI,GAAGP,CAAC,CAAC,CAAC,CAAC;EACXQ,KAAK;EACLC,KAAK;EACLC,MAAM;EACN,GAAGC;AACU,CAAC,GAAG,CAAC,CAAC,EAAqB;EACxC,MAAMC,CAAC,GAAGX,SAAS,CAAC,CAAC;EACrB,MAAMY,IAAI,GAAGL,KAAK,IAAII,CAAC,CAACE,OAAO;EAC/B;EACA;EACA;EACA,MAAMC,aAAa,GAAGZ,oBAAoB,CAACQ,IAAI,EAAET,YAAY,EAAE,UAAU,CAAC;EAC1E,oBACEG,IAAA,CAACN,QAAQ,CAACiB,IAAI;IACZP,KAAK,EAAE,CACL;MACEQ,KAAK,EAAEV,IAAI;MACXW,MAAM,EAAEX,IAAI;MACZY,YAAY,EAAEZ,IAAI,GAAG,CAAC;MACtBa,eAAe,EAAEP;IACnB,CAAC,EACDE,aAAa,EACbN,KAAK,CACL;IACFC,MAAM,EAAEA,MAAO;IACfW,2BAA2B;IAC3BC,yBAAyB,EAAC;EAAqB,CAChD,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["React","Animated","r","useColors","createLogger","usePulseAnimation","PULSE_DOT_DEFAULTS","jsx","_jsx","log","PulseDot","size","color","style","testID","opts","c","fill","primary","animatedStyle","View","width","height","borderRadius","backgroundColor","accessibilityElementsHidden","importantForAccessibility"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/PulseDot.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,CAAC,EAAEC,SAAS,QAAQ,yBAAgB;AAC7C,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SAASC,iBAAiB,QAAQ,sCAAmC;AACrE,SAASC,kBAAkB,QAAQ,gBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGjD,MAAMC,GAAG,GAAGL,YAAY,CAAC,UAAU,CAAC;AAEpC,OAAO,SAASM,QAAQA,CAAC;EACvBC,IAAI,GAAGT,CAAC,CAAC,CAAC,CAAC;EACXU,KAAK;EACLC,KAAK;EACLC,MAAM;EACN,GAAGC;AACU,CAAC,GAAG,CAAC,CAAC,EAAqB;EACxC,MAAMC,CAAC,GAAGb,SAAS,CAAC,CAAC;EACrB,MAAMc,IAAI,GAAGL,KAAK,IAAII,CAAC,CAACE,OAAO;EAC/B,MAAMC,aAAa,GAAGd,iBAAiB,CAACU,IAAI,EAAET,kBAAkB,EAAEG,GAAG,CAAC;EACtE,oBACED,IAAA,CAACP,QAAQ,CAACmB,IAAI;IACZP,KAAK,EAAE,CACL;MACEQ,KAAK,EAAEV,IAAI;MACXW,MAAM,EAAEX,IAAI;MACZY,YAAY,EAAEZ,IAAI,GAAG,CAAC;MACtBa,eAAe,EAAEP;IACnB,CAAC,EACDE,aAAa,EACbN,KAAK,CACL;IACFC,MAAM,EAAEA,MAAO;IACfW,2BAA2B;IAC3BC,yBAAyB,EAAC;EAAqB,CAChD,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ export const PULSE_DEFAULTS = {
4
+ duration: 700,
5
+ delay: 0,
6
+ from: 0.6,
7
+ to: 1
8
+ };
9
+ export const PULSE_DOT_DEFAULTS = {
10
+ duration: 700,
11
+ delay: 0,
12
+ from: 0.5,
13
+ to: 1
14
+ };
15
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PULSE_DEFAULTS","duration","delay","from","to","PULSE_DOT_DEFAULTS"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/constants.ts"],"mappings":";;AAEA,OAAO,MAAMA,cAAuC,GAAG;EACrDC,QAAQ,EAAE,GAAG;EACbC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,GAAG;EACTC,EAAE,EAAE;AACN,CAAC;AACD,OAAO,MAAMC,kBAA2C,GAAG;EACzDJ,QAAQ,EAAE,GAAG;EACbC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,GAAG;EACTC,EAAE,EAAE;AACN,CAAC","ignoreList":[]}
@@ -1,68 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import { useEffect, useMemo } from 'react';
4
3
  import { createLogger } from "../../../utils/logger/index.js";
5
- import { normalizePulseOptions } from "./normalizePulseOptions.js";
6
- import { usePulseDriver } from './usePulseDriver';
7
- /**
8
- * 在两个 opacity 值之间无限循环,返回可直接拼到 Animated.View 上的 style。
9
- *
10
- * 这是**唯一**的公共实现:参数校验、默认值与 dev 诊断全在这里完成,平台差异只下沉到
11
- * `usePulseDriver(.web).ts`。此前 native / web 各有一份 `usePulse`,两边各自读原始
12
- * props、各自解释默认值,web 侧还把未校验的 duration 直接喂给 `setInterval`。
13
- */
14
-
15
- const BASE_DEFAULTS = {
16
- duration: 700,
17
- delay: 0,
18
- from: 0.6,
19
- to: 1
20
- };
21
-
22
- /** PulseDot / Skeleton 的默认值 —— 只有 from 更低,圆点 / 骨架淡到 0.5。 */
23
- export const DOT_DEFAULTS = {
24
- duration: 700,
25
- delay: 0,
26
- from: 0.5,
27
- to: 1
28
- };
29
-
30
- // logger 在模块加载时一次性建好 —— render 期创建每次都会产生新对象。
31
- const pulseLog = createLogger('Pulse');
32
- const pulseDotLog = createLogger('PulseDot');
33
- const skeletonLog = createLogger('Skeleton');
34
-
35
- /** 诊断告警的固定 scope 集合。 */
36
-
37
- function loggerForScope(scope) {
38
- switch (scope) {
39
- case 'Pulse':
40
- return pulseLog;
41
- case 'PulseDot':
42
- return pulseDotLog;
43
- case 'Skeleton':
44
- return skeletonLog;
45
- }
46
- }
47
-
48
- /** 内部:让 PulseDot / Skeleton 复用同一条归一化 + 诊断 + driver 链路。 */
49
- export function usePulseWithDefaults(options, defaults, scope) {
50
- // 依赖列表**故意**拆到 primitive:options / defaults 对象每次 render 都可能是新引用
51
- // (调用方常写内联字面量),直接依赖对象会让 memo 恒失效、并连带每帧重启 driver 的 effect。
52
- // 这八个 primitive 就是归一化的全部输入,拆开后覆盖完整、无遗漏。
53
- const normalized = useMemo(() => normalizePulseOptions(options, defaults),
54
- // eslint-disable-next-line react-hooks/exhaustive-deps
55
- [options?.duration, options?.delay, options?.from, options?.to, defaults.duration, defaults.delay, defaults.from, defaults.to]);
56
- useEffect(() => {
57
- if (typeof __DEV__ !== 'undefined' && __DEV__) {
58
- for (const item of normalized.diagnostics) {
59
- loggerForScope(scope).warn(`${item.field}=${String(item.received)} 无效,已回退为 ${item.fallback}`);
60
- }
61
- }
62
- }, [normalized.diagnostics, scope]);
63
- return usePulseDriver(normalized);
64
- }
4
+ import { usePulseAnimation } from "../shared/pulse/usePulseAnimation.js";
5
+ import { PULSE_DEFAULTS } from "./constants.js";
6
+ const log = createLogger('Pulse');
65
7
  export function usePulse(options = {}) {
66
- return usePulseWithDefaults(options, BASE_DEFAULTS, 'Pulse');
8
+ return usePulseAnimation(options, PULSE_DEFAULTS, log);
67
9
  }
68
10
  //# sourceMappingURL=usePulse.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useMemo","createLogger","normalizePulseOptions","usePulseDriver","BASE_DEFAULTS","duration","delay","from","to","DOT_DEFAULTS","pulseLog","pulseDotLog","skeletonLog","loggerForScope","scope","usePulseWithDefaults","options","defaults","normalized","__DEV__","item","diagnostics","warn","field","String","received","fallback","usePulse"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/usePulse.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAC1C,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SAASC,qBAAqB,QAAQ,4BAAyB;AAE/D,SAASC,cAAc,QAAQ,kBAAkB;AAGjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,aAA4B,GAAG;EACnCC,QAAQ,EAAE,GAAG;EACbC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,GAAG;EACTC,EAAE,EAAE;AACN,CAAC;;AAED;AACA,OAAO,MAAMC,YAA2B,GAAG;EACzCJ,QAAQ,EAAE,GAAG;EACbC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,GAAG;EACTC,EAAE,EAAE;AACN,CAAC;;AAED;AACA,MAAME,QAAQ,GAAGT,YAAY,CAAC,OAAO,CAAC;AACtC,MAAMU,WAAW,GAAGV,YAAY,CAAC,UAAU,CAAC;AAC5C,MAAMW,WAAW,GAAGX,YAAY,CAAC,UAAU,CAAC;;AAE5C;;AAGA,SAASY,cAAcA,CAACC,KAAiB,EAAE;EACzC,QAAQA,KAAK;IACX,KAAK,OAAO;MACV,OAAOJ,QAAQ;IACjB,KAAK,UAAU;MACb,OAAOC,WAAW;IACpB,KAAK,UAAU;MACb,OAAOC,WAAW;EACtB;AACF;;AAEA;AACA,OAAO,SAASG,oBAAoBA,CAClCC,OAAiC,EACjCC,QAAuB,EACvBH,KAAiB,EACjB;EACA;EACA;EACA;EACA,MAAMI,UAAU,GAAGlB,OAAO,CACxB,MAAME,qBAAqB,CAACc,OAAO,EAAEC,QAAQ,CAAC;EAC9C;EACA,CACED,OAAO,EAAEX,QAAQ,EACjBW,OAAO,EAAEV,KAAK,EACdU,OAAO,EAAET,IAAI,EACbS,OAAO,EAAER,EAAE,EACXS,QAAQ,CAACZ,QAAQ,EACjBY,QAAQ,CAACX,KAAK,EACdW,QAAQ,CAACV,IAAI,EACbU,QAAQ,CAACT,EAAE,CAEf,CAAC;EACDT,SAAS,CAAC,MAAM;IACd,IAAI,OAAOoB,OAAO,KAAK,WAAW,IAAIA,OAAO,EAAE;MAC7C,KAAK,MAAMC,IAAI,IAAIF,UAAU,CAACG,WAAW,EAAE;QACzCR,cAAc,CAACC,KAAK,CAAC,CAACQ,IAAI,CACxB,GAAGF,IAAI,CAACG,KAAK,IAAIC,MAAM,CAACJ,IAAI,CAACK,QAAQ,CAAC,YAAYL,IAAI,CAACM,QAAQ,EACjE,CAAC;MACH;IACF;EACF,CAAC,EAAE,CAACR,UAAU,CAACG,WAAW,EAAEP,KAAK,CAAC,CAAC;EACnC,OAAOX,cAAc,CAACe,UAAU,CAAC;AACnC;AAEA,OAAO,SAASS,QAAQA,CAACX,OAAqB,GAAG,CAAC,CAAC,EAAE;EACnD,OAAOD,oBAAoB,CAACC,OAAO,EAAEZ,aAAa,EAAE,OAAO,CAAC;AAC9D","ignoreList":[]}
1
+ {"version":3,"names":["createLogger","usePulseAnimation","PULSE_DEFAULTS","log","usePulse","options"],"sourceRoot":"../../../../../src","sources":["components/ui/Pulse/usePulse.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,gCAAuB;AACpD,SAASC,iBAAiB,QAAQ,sCAAmC;AACrE,SAASC,cAAc,QAAQ,gBAAa;AAG5C,MAAMC,GAAG,GAAGH,YAAY,CAAC,OAAO,CAAC;AAEjC,OAAO,SAASI,QAAQA,CAACC,OAAqB,GAAG,CAAC,CAAC,EAAE;EACnD,OAAOJ,iBAAiB,CAACI,OAAO,EAAEH,cAAc,EAAEC,GAAG,CAAC;AACxD","ignoreList":[]}
@@ -2,9 +2,13 @@
2
2
 
3
3
  import React from 'react';
4
4
  import Animated from 'react-native-reanimated';
5
- import { DOT_DEFAULTS, usePulseWithDefaults } from "../Pulse/usePulse.js";
5
+ import { createLogger } from "../../../utils/logger/index.js";
6
+ import { usePulseAnimation } from "../shared/pulse/usePulseAnimation.js";
7
+ import { SKELETON_DEFAULTS } from "./constants.js";
6
8
  import { r, useColors } from "../../../theme/index.js";
7
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
+ const log = createLogger('Skeleton');
11
+
8
12
  /**
9
13
  * 页面级加载占位骨架。3 个形状由 `shape` 切换。
10
14
  *
@@ -27,7 +31,7 @@ export function Skeleton({
27
31
  testID
28
32
  }) {
29
33
  const c = useColors();
30
- const animatedStyle = usePulseWithDefaults(undefined, DOT_DEFAULTS, 'Skeleton');
34
+ const animatedStyle = usePulseAnimation(undefined, SKELETON_DEFAULTS, log);
31
35
 
32
36
  // 按形状推默认尺寸 + 圆角;caller 显式传 width / height / radius 时 override
33
37
  const dim = (() => {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Animated","DOT_DEFAULTS","usePulseWithDefaults","r","useColors","jsx","_jsx","Skeleton","shape","width","height","size","radius","style","testID","c","animatedStyle","undefined","dim","borderRadius","View","backgroundColor","surfaceContainerHigh","accessibilityElementsHidden","importantForAccessibility"],"sourceRoot":"../../../../../src","sources":["components/ui/Skeleton/Skeleton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,YAAY,EAAEC,oBAAoB,QAAQ,sBAAmB;AACtE,SAASC,CAAC,EAAEC,SAAS,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAC;EACvBC,KAAK,GAAG,MAAM;EACdC,KAAK;EACLC,MAAM;EACNC,IAAI,GAAGR,CAAC,CAAC,EAAE,CAAC;EACZS,MAAM;EACNC,KAAK;EACLC;AACa,CAAC,EAAqB;EACnC,MAAMC,CAAC,GAAGX,SAAS,CAAC,CAAC;EACrB,MAAMY,aAAa,GAAGd,oBAAoB,CACxCe,SAAS,EACThB,YAAY,EACZ,UACF,CAAC;;EAED;EACA,MAAMiB,GAAG,GAAG,CAAC,MAAM;IACjB,IAAIV,KAAK,KAAK,QAAQ,EAAE;MACtB,OAAO;QAAEC,KAAK,EAAEE,IAAI;QAAED,MAAM,EAAEC,IAAI;QAAEQ,YAAY,EAAEP,MAAM,IAAID,IAAI,GAAG;MAAE,CAAC;IACxE;IACA,IAAIH,KAAK,KAAK,MAAM,EAAE;MACpB,OAAO;QACLC,KAAK,EAAEA,KAAK,IAAI,MAAM;QACtBC,MAAM,EAAEA,MAAM,IAAIP,CAAC,CAAC,EAAE,CAAC;QACvBgB,YAAY,EAAEP,MAAM,IAAIT,CAAC,CAAC,CAAC;MAC7B,CAAC;IACH;IACA,OAAO;MACLM,KAAK,EAAEA,KAAK,IAAI,MAAM;MACtBC,MAAM,EAAEA,MAAM,IAAIP,CAAC,CAAC,EAAE,CAAC;MACvBgB,YAAY,EAAEP,MAAM,IAAIT,CAAC,CAAC,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAAC;EAEJ,oBACEG,IAAA,CAACN,QAAQ,CAACoB,IAAI;IACZP,KAAK,EAAE,CACL;MAAE,GAAGK,GAAG;MAAEG,eAAe,EAAEN,CAAC,CAACO;IAAqB,CAAC,EACnDN,aAAa,EACbH,KAAK,CACL;IACFC,MAAM,EAAEA,MAAO;IACfS,2BAA2B;IAC3BC,yBAAyB,EAAC;EAAqB,CAChD,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["React","Animated","createLogger","usePulseAnimation","SKELETON_DEFAULTS","r","useColors","jsx","_jsx","log","Skeleton","shape","width","height","size","radius","style","testID","c","animatedStyle","undefined","dim","borderRadius","View","backgroundColor","surfaceContainerHigh","accessibilityElementsHidden","importantForAccessibility"],"sourceRoot":"../../../../../src","sources":["components/ui/Skeleton/Skeleton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,yBAAyB;AAC9C,SAASC,YAAY,QAAQ,gCAAuB;AACpD,SAASC,iBAAiB,QAAQ,sCAAmC;AACrE,SAASC,iBAAiB,QAAQ,gBAAa;AAC/C,SAASC,CAAC,EAAEC,SAAS,QAAQ,yBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG9C,MAAMC,GAAG,GAAGP,YAAY,CAAC,UAAU,CAAC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,QAAQA,CAAC;EACvBC,KAAK,GAAG,MAAM;EACdC,KAAK;EACLC,MAAM;EACNC,IAAI,GAAGT,CAAC,CAAC,EAAE,CAAC;EACZU,MAAM;EACNC,KAAK;EACLC;AACa,CAAC,EAAqB;EACnC,MAAMC,CAAC,GAAGZ,SAAS,CAAC,CAAC;EACrB,MAAMa,aAAa,GAAGhB,iBAAiB,CAACiB,SAAS,EAAEhB,iBAAiB,EAAEK,GAAG,CAAC;;EAE1E;EACA,MAAMY,GAAG,GAAG,CAAC,MAAM;IACjB,IAAIV,KAAK,KAAK,QAAQ,EAAE;MACtB,OAAO;QAAEC,KAAK,EAAEE,IAAI;QAAED,MAAM,EAAEC,IAAI;QAAEQ,YAAY,EAAEP,MAAM,IAAID,IAAI,GAAG;MAAE,CAAC;IACxE;IACA,IAAIH,KAAK,KAAK,MAAM,EAAE;MACpB,OAAO;QACLC,KAAK,EAAEA,KAAK,IAAI,MAAM;QACtBC,MAAM,EAAEA,MAAM,IAAIR,CAAC,CAAC,EAAE,CAAC;QACvBiB,YAAY,EAAEP,MAAM,IAAIV,CAAC,CAAC,CAAC;MAC7B,CAAC;IACH;IACA,OAAO;MACLO,KAAK,EAAEA,KAAK,IAAI,MAAM;MACtBC,MAAM,EAAEA,MAAM,IAAIR,CAAC,CAAC,EAAE,CAAC;MACvBiB,YAAY,EAAEP,MAAM,IAAIV,CAAC,CAAC,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAAC;EAEJ,oBACEG,IAAA,CAACP,QAAQ,CAACsB,IAAI;IACZP,KAAK,EAAE,CACL;MAAE,GAAGK,GAAG;MAAEG,eAAe,EAAEN,CAAC,CAACO;IAAqB,CAAC,EACnDN,aAAa,EACbH,KAAK,CACL;IACFC,MAAM,EAAEA,MAAO;IACfS,2BAA2B;IAC3BC,yBAAyB,EAAC;EAAqB,CAChD,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ export const SKELETON_DEFAULTS = {
4
+ duration: 700,
5
+ delay: 0,
6
+ from: 0.5,
7
+ to: 1
8
+ };
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SKELETON_DEFAULTS","duration","delay","from","to"],"sourceRoot":"../../../../../src","sources":["components/ui/Skeleton/constants.ts"],"mappings":";;AAEA,OAAO,MAAMA,iBAA0C,GAAG;EACxDC,QAAQ,EAAE,GAAG;EACbC,KAAK,EAAE,CAAC;EACRC,IAAI,EAAE,GAAG;EACTC,EAAE,EAAE;AACN,CAAC","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';
4
4
  import { Platform, Text, TextInput, View } from 'react-native';
5
- import { fixed, space, useColors, useThemedStyles } from "../../../theme/index.js";
5
+ import { fixed, useColors, useThemedStyles } from "../../../theme/index.js";
6
6
  import { childTestID } from "../../../utils/testID/index.js";
7
7
  import { createLogger } from "../../../utils/logger/index.js";
8
8
  import { normalizeInputHeight, normalizeTextareaHeights, sanitizeTextFieldContainerStyle } from "./normalize.js";
@@ -10,6 +10,7 @@ import { makeStyles } from "./styles.js";
10
10
  import { TextFieldSlot } from "./TextFieldSlot.js";
11
11
  import { useErrorAnnouncement } from "./useErrorAnnouncement.js";
12
12
  import { useTextFieldValue } from "./useTextFieldValue.js";
13
+ import { useMultilineLayout } from './useMultilineLayout';
13
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
15
  const log = createLogger('TextField');
15
16
 
@@ -37,6 +38,9 @@ export const TextFieldBase = /*#__PURE__*/forwardRef(function TextFieldBase(prop
37
38
  placeholderTextColor: callerPlaceholder,
38
39
  onFocus,
39
40
  onBlur,
41
+ onContentSizeChange,
42
+ onLayout,
43
+ scrollEnabled,
40
44
  testID,
41
45
  style: _style,
42
46
  numberOfLines: _numberOfLines,
@@ -68,6 +72,15 @@ export const TextFieldBase = /*#__PURE__*/forwardRef(function TextFieldBase(prop
68
72
  }, scope);
69
73
  const normalizedInputHeight = normalizeInputHeight(height === undefined ? fixed.hitTarget : height);
70
74
  const normalizedTextareaHeights = normalizeTextareaHeights(minHeight, maxHeight);
75
+ const multilineLayout = useMultilineLayout({
76
+ enabled: multiline,
77
+ value: controller.value,
78
+ minHeight: normalizedTextareaHeights.minHeight,
79
+ maxHeight: normalizedTextareaHeights.maxHeight,
80
+ fontSize: styles.input.fontSize,
81
+ placeholder: allowedNativeProps.placeholder,
82
+ inputRef: nativeRef
83
+ });
71
84
  const sanitizedContainer = sanitizeTextFieldContainerStyle(containerStyle);
72
85
  const effectiveEditable = disabled !== true && editable !== false;
73
86
  const mergedAccessibilityState = {
@@ -127,6 +140,12 @@ export const TextFieldBase = /*#__PURE__*/forwardRef(function TextFieldBase(prop
127
140
  onChangeText: controller.onChangeText,
128
141
  editable: effectiveEditable,
129
142
  multiline: multiline,
143
+ onContentSizeChange: onContentSizeChange,
144
+ onLayout: event => {
145
+ if (multiline) multilineLayout.onLayout?.(event);
146
+ onLayout?.(event);
147
+ },
148
+ scrollEnabled: scrollEnabled ?? (multiline ? multilineLayout.scrollEnabled : undefined),
130
149
  onFocus: event => {
131
150
  setFocused(true);
132
151
  onFocus?.(event);
@@ -135,9 +154,7 @@ export const TextFieldBase = /*#__PURE__*/forwardRef(function TextFieldBase(prop
135
154
  setFocused(false);
136
155
  onBlur?.(event);
137
156
  },
138
- style: [styles.input, multiline && styles.inputMultiline, multiline && {
139
- minHeight: Math.max(0, normalizedHeight - space[4] * 2)
140
- }, searchLayout !== undefined && {
157
+ style: [styles.input, multiline && styles.inputMultiline, multiline && (multilineLayout.scrollEnabled ? styles.inputScrolling : styles.inputClipped), multiline && multilineLayout.inputStyle, searchLayout !== undefined && {
141
158
  minHeight: searchLayout.interactiveHeight
142
159
  }],
143
160
  placeholderTextColor: callerPlaceholder ?? colors.foregroundSubtle,