@unif/react-native-chat 3.2.4 → 3.3.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 (114) hide show
  1. package/lib/module/components/Attachments/AttachmentItem.js +3 -2
  2. package/lib/module/components/Attachments/AttachmentItem.js.map +1 -1
  3. package/lib/module/components/Attachments/Attachments.js +1 -0
  4. package/lib/module/components/Attachments/Attachments.js.map +1 -1
  5. package/lib/module/components/Attachments/styles.js +4 -0
  6. package/lib/module/components/Attachments/styles.js.map +1 -1
  7. package/lib/module/components/Composer/Composer.js +13 -9
  8. package/lib/module/components/Composer/Composer.js.map +1 -1
  9. package/lib/module/components/Confirmation/Confirmation.js +29 -13
  10. package/lib/module/components/Confirmation/Confirmation.js.map +1 -1
  11. package/lib/module/components/Confirmation/styles.js +17 -6
  12. package/lib/module/components/Confirmation/styles.js.map +1 -1
  13. package/lib/module/components/Message/MarkdownContent/styles.js +29 -33
  14. package/lib/module/components/Message/MarkdownContent/styles.js.map +1 -1
  15. package/lib/module/components/Message/Message.js +37 -24
  16. package/lib/module/components/Message/Message.js.map +1 -1
  17. package/lib/module/components/Message/MessageWaiting.js +53 -0
  18. package/lib/module/components/Message/MessageWaiting.js.map +1 -0
  19. package/lib/module/components/Message/constants.js +3 -0
  20. package/lib/module/components/Message/constants.js.map +1 -1
  21. package/lib/module/components/Message/styles.js +41 -3
  22. package/lib/module/components/Message/styles.js.map +1 -1
  23. package/lib/module/components/MessageList/MessageList.js +60 -31
  24. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  25. package/lib/module/components/MessageList/MessageListEndButton.js +60 -0
  26. package/lib/module/components/MessageList/MessageListEndButton.js.map +1 -0
  27. package/lib/module/components/MessageList/MessageListRow.js +9 -2
  28. package/lib/module/components/MessageList/MessageListRow.js.map +1 -1
  29. package/lib/module/components/MessageList/styles.js +6 -0
  30. package/lib/module/components/MessageList/styles.js.map +1 -1
  31. package/lib/module/components/MessageList/useMessageListScroll.js +218 -13
  32. package/lib/module/components/MessageList/useMessageListScroll.js.map +1 -1
  33. package/lib/module/components/Process/Process.js +15 -5
  34. package/lib/module/components/Process/Process.js.map +1 -1
  35. package/lib/module/components/Process/ProcessCompactStep.js +21 -12
  36. package/lib/module/components/Process/ProcessCompactStep.js.map +1 -1
  37. package/lib/module/components/Process/ProcessTimelineStep.js +79 -0
  38. package/lib/module/components/Process/ProcessTimelineStep.js.map +1 -0
  39. package/lib/module/components/Process/styles.js +63 -3
  40. package/lib/module/components/Process/styles.js.map +1 -1
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/typescript/src/components/Attachments/AttachmentItem.d.ts +1 -1
  43. package/lib/typescript/src/components/Attachments/AttachmentItem.d.ts.map +1 -1
  44. package/lib/typescript/src/components/Attachments/Attachments.d.ts.map +1 -1
  45. package/lib/typescript/src/components/Attachments/styles.d.ts +4 -0
  46. package/lib/typescript/src/components/Attachments/styles.d.ts.map +1 -1
  47. package/lib/typescript/src/components/Attachments/types.d.ts +2 -1
  48. package/lib/typescript/src/components/Attachments/types.d.ts.map +1 -1
  49. package/lib/typescript/src/components/Composer/Composer.d.ts.map +1 -1
  50. package/lib/typescript/src/components/Confirmation/Confirmation.d.ts.map +1 -1
  51. package/lib/typescript/src/components/Confirmation/styles.d.ts +13 -2
  52. package/lib/typescript/src/components/Confirmation/styles.d.ts.map +1 -1
  53. package/lib/typescript/src/components/Message/MarkdownContent/styles.d.ts +32 -66
  54. package/lib/typescript/src/components/Message/MarkdownContent/styles.d.ts.map +1 -1
  55. package/lib/typescript/src/components/Message/Message.d.ts.map +1 -1
  56. package/lib/typescript/src/components/Message/MessageWaiting.d.ts +3 -0
  57. package/lib/typescript/src/components/Message/MessageWaiting.d.ts.map +1 -0
  58. package/lib/typescript/src/components/Message/constants.d.ts +3 -0
  59. package/lib/typescript/src/components/Message/constants.d.ts.map +1 -1
  60. package/lib/typescript/src/components/Message/styles.d.ts +40 -2
  61. package/lib/typescript/src/components/Message/styles.d.ts.map +1 -1
  62. package/lib/typescript/src/components/Message/types.d.ts +5 -0
  63. package/lib/typescript/src/components/Message/types.d.ts.map +1 -1
  64. package/lib/typescript/src/components/MessageList/MessageList.d.ts.map +1 -1
  65. package/lib/typescript/src/components/MessageList/MessageListEndButton.d.ts +3 -0
  66. package/lib/typescript/src/components/MessageList/MessageListEndButton.d.ts.map +1 -0
  67. package/lib/typescript/src/components/MessageList/MessageListRow.d.ts +2 -8
  68. package/lib/typescript/src/components/MessageList/MessageListRow.d.ts.map +1 -1
  69. package/lib/typescript/src/components/MessageList/index.d.ts +1 -1
  70. package/lib/typescript/src/components/MessageList/index.d.ts.map +1 -1
  71. package/lib/typescript/src/components/MessageList/styles.d.ts +6 -0
  72. package/lib/typescript/src/components/MessageList/styles.d.ts.map +1 -1
  73. package/lib/typescript/src/components/MessageList/types.d.ts +41 -2
  74. package/lib/typescript/src/components/MessageList/types.d.ts.map +1 -1
  75. package/lib/typescript/src/components/MessageList/useMessageListScroll.d.ts +14 -3
  76. package/lib/typescript/src/components/MessageList/useMessageListScroll.d.ts.map +1 -1
  77. package/lib/typescript/src/components/Process/Process.d.ts.map +1 -1
  78. package/lib/typescript/src/components/Process/ProcessCompactStep.d.ts +1 -1
  79. package/lib/typescript/src/components/Process/ProcessCompactStep.d.ts.map +1 -1
  80. package/lib/typescript/src/components/Process/ProcessTimelineStep.d.ts +5 -0
  81. package/lib/typescript/src/components/Process/ProcessTimelineStep.d.ts.map +1 -0
  82. package/lib/typescript/src/components/Process/styles.d.ts +62 -2
  83. package/lib/typescript/src/components/Process/styles.d.ts.map +1 -1
  84. package/lib/typescript/src/components/Process/types.d.ts +7 -2
  85. package/lib/typescript/src/components/Process/types.d.ts.map +1 -1
  86. package/lib/typescript/src/index.d.ts +1 -1
  87. package/lib/typescript/src/index.d.ts.map +1 -1
  88. package/package.json +1 -1
  89. package/src/components/Attachments/AttachmentItem.tsx +11 -3
  90. package/src/components/Attachments/Attachments.tsx +1 -0
  91. package/src/components/Attachments/styles.ts +1 -0
  92. package/src/components/Attachments/types.ts +2 -1
  93. package/src/components/Composer/Composer.tsx +34 -8
  94. package/src/components/Confirmation/Confirmation.tsx +50 -14
  95. package/src/components/Confirmation/styles.ts +13 -6
  96. package/src/components/Message/MarkdownContent/styles.ts +18 -44
  97. package/src/components/Message/Message.tsx +53 -33
  98. package/src/components/Message/MessageWaiting.tsx +68 -0
  99. package/src/components/Message/constants.ts +4 -0
  100. package/src/components/Message/styles.ts +25 -2
  101. package/src/components/Message/types.ts +6 -0
  102. package/src/components/MessageList/MessageList.tsx +107 -35
  103. package/src/components/MessageList/MessageListEndButton.tsx +61 -0
  104. package/src/components/MessageList/MessageListRow.tsx +12 -12
  105. package/src/components/MessageList/index.ts +1 -0
  106. package/src/components/MessageList/styles.ts +6 -0
  107. package/src/components/MessageList/types.ts +52 -2
  108. package/src/components/MessageList/useMessageListScroll.ts +296 -21
  109. package/src/components/Process/Process.tsx +38 -5
  110. package/src/components/Process/ProcessCompactStep.tsx +32 -16
  111. package/src/components/Process/ProcessTimelineStep.tsx +109 -0
  112. package/src/components/Process/styles.ts +48 -3
  113. package/src/components/Process/types.ts +7 -2
  114. package/src/index.tsx +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Message/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAe,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,KAAK,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AACxE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAChC,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,WAAW,CAAC,IAAI,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AACD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AACD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GACzC,CAAC,mBAAmB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Message/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAe,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,KAAK,CAAC;AAC/C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AACxE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAChC,qCAAqC;IACrC,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,WAAW,CAAC,IAAI,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AACD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AACD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GACzC,CAAC,mBAAmB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAc3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAS,CAAC;AAInE,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAC7B,KAAK,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,KAAK,EACL,eAAe,EACf,eAAuB,EACvB,YAA0B,EAC1B,YAAoC,EACpC,eAAsB,EACtB,eAAuB,EACvB,aAAa,EACb,UAAkB,EAClB,cAAsB,EACtB,gBAAgB,EAChB,mBAA+B,EAC/B,qBAAqB,EACrB,4BAAoC,EACpC,KAAK,EACL,MAAM,EACN,GAAG,GACJ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,+BAsHxD"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAU3C,OAAO,KAAK,EAEV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAS,CAAC;AAIjB,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAC7B,KAAK,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,KAAK,EACL,eAAe,EACf,eAAuB,EACvB,YAA0B,EAC1B,YAAoC,EACpC,eAAsB,EACtB,eAAuB,EACvB,aAAa,EACb,UAAkB,EAClB,cAAsB,EACtB,gBAAgB,EAChB,mBAA+B,EAC/B,qBAAqB,EACrB,4BAAoC,EACpC,KAAK,EACL,MAAM,EACN,GAAG,GACJ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,iBAAiB,CAAC,+BAwLxD"}
@@ -0,0 +1,3 @@
1
+ import type { MessageListEndButtonProps } from './types.js';
2
+ export declare function MessageListEndButton({ busy, onPress, }: MessageListEndButtonProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=MessageListEndButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageListEndButton.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/MessageListEndButton.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAS,CAAC;AAEzD,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,OAAO,GACR,EAAE,yBAAyB,+BA6C3B"}
@@ -1,11 +1,5 @@
1
- import type { MessageListProps } from './types.js';
2
- interface MessageListRowProps<T> extends Pick<MessageListProps<T>, 'renderItem' | 'renderSeparator' | 'extraData'> {
3
- item: T;
4
- previous: T | undefined;
5
- index: number;
6
- nativeID: string;
7
- }
8
- declare function MessageListRowContent<T>({ item, previous, index, nativeID, renderItem, renderSeparator, }: MessageListRowProps<T>): import("react").JSX.Element;
1
+ import type { MessageListRowProps } from './types.js';
2
+ declare function MessageListRowContent<T>({ item, previous, index, nativeID, itemKey, testID, onItemLayout, renderItem, renderSeparator, }: MessageListRowProps<T>): import("react").JSX.Element;
9
3
  export declare const MessageListRow: typeof MessageListRowContent;
10
4
  export {};
11
5
  //# sourceMappingURL=MessageListRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageListRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/MessageListRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAS,CAAC;AAEhD,UAAU,mBAAmB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAC3C,gBAAgB,CAAC,CAAC,CAAC,EACnB,YAAY,GAAG,iBAAiB,GAAG,WAAW,CAC/C;IACC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,iBAAS,qBAAqB,CAAC,CAAC,EAAE,EAChC,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAU,EACV,eAAe,GAChB,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAOxB;AAID,eAAO,MAAM,cAAc,EAEtB,OAAO,qBAAqB,CAAC"}
1
+ {"version":3,"file":"MessageListRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/MessageListRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAS,CAAC;AAEnD,iBAAS,qBAAqB,CAAC,CAAC,EAAE,EAChC,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,eAAe,GAChB,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAcxB;AAID,eAAO,MAAM,cAAc,EAEtB,OAAO,qBAAqB,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { MessageList } from './MessageList.js';
2
- export type { MessageListHandle, MessageListProps, MessageListScrollOptions, } from './types.js';
2
+ export type { MessageListAnchorOptions, MessageListHandle, MessageListProps, MessageListScrollOptions, } from './types.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AAC5C,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,YAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AAC5C,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,YAAS,CAAC"}
@@ -24,6 +24,12 @@ export declare const createStyles: (colors: ColorTokens, shadows: ShadowTokens)
24
24
  top: 0;
25
25
  bottom: 0;
26
26
  }>;
27
+ returnVisual: {
28
+ width: number;
29
+ height: number;
30
+ alignItems: "center";
31
+ justifyContent: "center";
32
+ };
27
33
  returnButton: {
28
34
  shadowColor: string;
29
35
  shadowOffset: {
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/styles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC3E,eAAO,MAAM,YAAY,GAAI,QAAQ,WAAW,EAAE,SAAS,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBnE,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/styles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC3E,eAAO,MAAM,YAAY,GAAI,QAAQ,WAAW,EAAE,SAAS,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BnE,CAAC"}
@@ -1,10 +1,16 @@
1
- import type { ReactNode } from 'react';
2
- import type { ScrollViewProps, StyleProp, ViewStyle } from 'react-native';
1
+ import type { ComponentProps, ReactNode } from 'react';
2
+ import type { FlatListProps, LayoutRectangle, ScrollViewProps, StyleProp, ViewStyle } from 'react-native';
3
3
  export interface MessageListScrollOptions {
4
4
  animated?: boolean;
5
5
  }
6
+ export interface MessageListAnchorOptions extends MessageListScrollOptions {
7
+ /** 正文顶端距列表视口顶部的留白,默认 0。 */
8
+ topOffset?: number;
9
+ }
6
10
  export interface MessageListHandle {
7
11
  scrollToEnd(options?: MessageListScrollOptions): void;
12
+ /** 按稳定 key 等待真实布局并顶锚;用户拖动、回到末尾或目标删除时结束。 */
13
+ anchorToItem(key: string, options?: MessageListAnchorOptions): void;
8
14
  }
9
15
  export interface MessageListProps<T> {
10
16
  items: readonly T[];
@@ -32,9 +38,42 @@ export interface MessageListProps<T> {
32
38
  testID?: string;
33
39
  }
34
40
  export interface ListMeasurements {
41
+ width: number;
35
42
  viewport: number;
36
43
  content: number;
37
44
  offset: number;
38
45
  hasContentSize: boolean;
39
46
  }
47
+ export type MessageListCellProps<T> = ComponentProps<NonNullable<FlatListProps<T>['CellRendererComponent']>>;
48
+ export interface MessageListRowProps<T> extends Pick<MessageListProps<T>, 'renderItem' | 'renderSeparator' | 'extraData'> {
49
+ item: T;
50
+ previous: T | undefined;
51
+ index: number;
52
+ itemKey: string;
53
+ nativeID: string;
54
+ testID?: string;
55
+ onItemLayout(key: string, index: number, y: number): void;
56
+ }
57
+ export interface MessageListItemLayout {
58
+ index: number;
59
+ cell?: LayoutRectangle;
60
+ itemY?: number;
61
+ }
62
+ export interface MessageListAnchorRequest {
63
+ key: string;
64
+ topOffset: number;
65
+ animated: boolean;
66
+ seen: boolean;
67
+ locatedAt?: number;
68
+ offset?: number;
69
+ viewport?: number;
70
+ settled?: boolean;
71
+ }
72
+ export interface MessageListPendingScroll extends MessageListScrollOptions {
73
+ contentBeforeRelease?: number;
74
+ }
75
+ export interface MessageListEndButtonProps {
76
+ busy: boolean;
77
+ onPress(): void;
78
+ }
40
79
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACvD;AACD,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,YAAY,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IAClD,eAAe,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAClC,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,IAAI,IAAI,CAAC;IAC1B,mBAAmB,CAAC,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC7D,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,MAAM,WAAW,wBAAyB,SAAQ,wBAAwB;IACxE,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACtD,2CAA2C;IAC3C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACrE;AACD,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,YAAY,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IAClD,eAAe,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAClC,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,IAAI,IAAI,CAAC;IAC1B,mBAAmB,CAAC,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC7D,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;CACzB;AACD,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,cAAc,CAClD,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CACvD,CAAC;AACF,MAAM,WAAW,mBAAmB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAClD,gBAAgB,CAAC,CAAC,CAAC,EACnB,YAAY,GAAG,iBAAiB,GAAG,WAAW,CAC/C;IACC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3D;AACD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD,MAAM,WAAW,wBAAyB,SAAQ,wBAAwB;IACxE,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AACD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -1,19 +1,30 @@
1
1
  import type { RefObject } from 'react';
2
- import type { FlatList, LayoutChangeEvent, NativeScrollEvent, NativeSyntheticEvent } from 'react-native';
3
- import type { MessageListProps, MessageListScrollOptions } from './types.js';
2
+ import type { DimensionValue, FlatList, FlatListProps, LayoutChangeEvent, LayoutRectangle, NativeScrollEvent, NativeSyntheticEvent } from 'react-native';
3
+ import type { MessageListAnchorOptions, MessageListProps, MessageListScrollOptions } from './types.js';
4
4
  interface MessageListScrollInput<T> extends Pick<MessageListProps<T>, 'initialPosition' | 'followOutput' | 'endThreshold' | 'onAtEndChange'> {
5
5
  listRef: RefObject<FlatList<T> | null>;
6
6
  keys: readonly string[];
7
+ contentMinimumHeight?: DimensionValue;
8
+ contentBottomPadding?: DimensionValue;
9
+ hasFooter?: boolean;
7
10
  preservingPrependRef: RefObject<boolean>;
8
11
  cancelPrependPreservation(): void;
9
12
  }
10
- export declare function useMessageListScroll<T>({ listRef, keys, initialPosition, followOutput, endThreshold, onAtEndChange, preservingPrependRef, cancelPrependPreservation, }: MessageListScrollInput<T>): {
13
+ export declare function useMessageListScroll<T>({ listRef, keys, initialPosition, followOutput, endThreshold, onAtEndChange, contentMinimumHeight, contentBottomPadding, hasFooter, preservingPrependRef, cancelPrependPreservation, }: MessageListScrollInput<T>): {
11
14
  atEnd: boolean;
15
+ anchorMinimumHeight: number | undefined;
16
+ anchorToItem: (key: string, options?: MessageListAnchorOptions) => void;
17
+ onCellLayout: (key: string, index: number, cell: LayoutRectangle) => void;
18
+ onItemLayout: (key: string, index: number, itemY: number) => void;
19
+ onCellUnmount: (key: string, index: number) => void;
20
+ onFooterLayout: (event: LayoutChangeEvent) => void;
21
+ onScrollToIndexFailed: (failure: Parameters<NonNullable<FlatListProps<T>["onScrollToIndexFailed"]>>[0]) => void;
12
22
  scrollToEnd: (options?: MessageListScrollOptions) => void;
13
23
  onLayout: ({ nativeEvent: { layout } }: LayoutChangeEvent) => void;
14
24
  onContentSizeChange: (_width: number, height: number) => void;
15
25
  onScroll: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
16
26
  onUserScrollBegin: () => void;
27
+ onMomentumScrollBegin: () => void;
17
28
  onScrollEndDrag: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
18
29
  onMomentumScrollEnd: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
19
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageListScroll.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/useMessageListScroll.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAEV,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,YAAS,CAAC;AAEjB,UAAU,sBAAsB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAC9C,gBAAgB,CAAC,CAAC,CAAC,EACnB,iBAAiB,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,CACtE;IACC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,oBAAoB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACzC,yBAAyB,IAAI,IAAI,CAAC;CACnC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACtC,OAAO,EACP,IAAI,EACJ,eAAe,EACf,YAAY,EACZ,YAAoC,EACpC,aAAa,EACb,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,sBAAsB,CAAC,CAAC,CAAC;;4BAkDd,wBAAwB;4CAqFJ,iBAAiB;kCAOtC,MAAM,UAAU,MAAM;sBA9BvB,oBAAoB,CAAC,iBAAiB,CAAC;;6BAyCvC,oBAAoB,CAAC,iBAAiB,CAAC;iCAUvC,oBAAoB,CAAC,iBAAiB,CAAC;EAkBlD"}
1
+ {"version":3,"file":"useMessageListScroll.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/useMessageListScroll.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAEV,wBAAwB,EAIxB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,YAAS,CAAC;AAEjB,UAAU,sBAAsB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAC9C,gBAAgB,CAAC,CAAC,CAAC,EACnB,iBAAiB,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,CACtE;IACC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,cAAc,CAAC;IACtC,oBAAoB,CAAC,EAAE,cAAc,CAAC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACzC,yBAAyB,IAAI,IAAI,CAAC;CACnC;AAaD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACtC,OAAO,EACP,IAAI,EACJ,eAAe,EACf,YAAY,EACZ,YAAoC,EACpC,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,oBAAoB,EACpB,yBAAyB,GAC1B,EAAE,sBAAsB,CAAC,CAAC,CAAC;;;wBA8JlB,MAAM,YAAW,wBAAwB;wBA5CzC,MAAM,SAAS,MAAM,QAAQ,eAAe;wBAsB5C,MAAM,SAAS,MAAM,SAAS,MAAM;yBAUJ,MAAM,SAAS,MAAM;4BAMlB,iBAAiB;qCAkP/C,UAAU,CACjB,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CACvD,CAAC,CAAC,CAAC;4BAnLI,wBAAwB;4CAsIJ,iBAAiB;kCAQtC,MAAM,UAAU,MAAM;sBA3CvB,oBAAoB,CAAC,iBAAiB,CAAC;;;6BA2DvC,oBAAoB,CAAC,iBAAiB,CAAC;iCAUvC,oBAAoB,CAAC,iBAAiB,CAAC;EA+ClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Process.d.ts","sourceRoot":"","sources":["../../../../../src/components/Process/Process.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,YAAS,CAAC;AAkCzD,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgI9D"}
1
+ {"version":3,"file":"Process.d.ts","sourceRoot":"","sources":["../../../../../src/components/Process/Process.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,YAAS,CAAC;AAkCzD,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgK9D"}
@@ -1,3 +1,3 @@
1
1
  import type { ProcessCompactStepProps } from './types.js';
2
- export declare function ProcessCompactStep({ step, expanded, elapsed, onToggle, }: ProcessCompactStepProps): import("react").JSX.Element;
2
+ export declare function ProcessCompactStep({ step, identity, expanded, elapsed, onToggle, }: ProcessCompactStepProps): import("react").JSX.Element;
3
3
  //# sourceMappingURL=ProcessCompactStep.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessCompactStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/Process/ProcessCompactStep.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAS,CAAC;AAEvD,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,uBAAuB,+BA6FzB"}
1
+ {"version":3,"file":"ProcessCompactStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/Process/ProcessCompactStep.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAS,CAAC;AAEvD,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,uBAAuB,+BA4GzB"}
@@ -0,0 +1,5 @@
1
+ import type { ProcessCompactStepProps } from './types.js';
2
+ export declare function ProcessTimelineStep({ step, last, expanded, elapsed, onToggle, }: ProcessCompactStepProps & {
3
+ last: boolean;
4
+ }): import("react").JSX.Element;
5
+ //# sourceMappingURL=ProcessTimelineStep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessTimelineStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/Process/ProcessTimelineStep.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAS,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,uBAAuB,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,+BAyF7C"}
@@ -1,5 +1,55 @@
1
1
  import type { ColorTokens } from '@unif/react-native-design';
2
2
  export declare const createStyles: (colors: ColorTokens) => Readonly<{
3
+ timelineRoot: {
4
+ backgroundColor: string;
5
+ borderRadius: number;
6
+ padding: number;
7
+ };
8
+ timelineStep: {
9
+ flexDirection: "row";
10
+ alignItems: "flex-start";
11
+ gap: number;
12
+ };
13
+ timelineGutter: {
14
+ alignItems: "center";
15
+ width: number;
16
+ alignSelf: "stretch";
17
+ };
18
+ timelineLine: {
19
+ width: number;
20
+ flex: number;
21
+ backgroundColor: string;
22
+ marginTop: number;
23
+ minHeight: number;
24
+ };
25
+ timelineBody: {
26
+ flex: number;
27
+ };
28
+ timelineBodyNotLast: {
29
+ paddingBottom: number;
30
+ };
31
+ timelineTitle: {
32
+ flex: number;
33
+ fontSize: number;
34
+ fontWeight: "500";
35
+ color: string;
36
+ lineHeight: number;
37
+ };
38
+ timelineActive: {
39
+ color: string;
40
+ };
41
+ timelinePending: {
42
+ color: string;
43
+ fontWeight: "400";
44
+ };
45
+ timelineDescription: {
46
+ flexShrink: number;
47
+ fontSize: number;
48
+ color: string;
49
+ };
50
+ timelineError: {
51
+ color: string;
52
+ };
3
53
  compactRoot: {
4
54
  gap: number;
5
55
  };
@@ -24,16 +74,26 @@ export declare const createStyles: (colors: ColorTokens) => Readonly<{
24
74
  fontSize: number;
25
75
  fontWeight: "500";
26
76
  };
77
+ spacer: {
78
+ flex: number;
79
+ };
80
+ compactStatus: {
81
+ fontSize: number;
82
+ fontWeight: "500";
83
+ color: string;
84
+ };
27
85
  compactDescription: {
28
86
  color: string;
29
87
  fontSize: number;
30
88
  lineHeight: number;
31
89
  };
32
- compactDetails: {
33
- maxHeight: number;
90
+ compactDetailsContainer: {
34
91
  paddingTop: number;
35
92
  paddingBottom: number;
36
93
  };
94
+ compactDetails: {
95
+ maxHeight: number;
96
+ };
37
97
  root: {
38
98
  gap: number;
39
99
  padding: number;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/Process/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,eAAO,MAAM,YAAY,GAAI,QAAQ,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmG5C,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/Process/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,eAAO,MAAM,YAAY,GAAI,QAAQ,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgJ5C,CAAC"}
@@ -6,21 +6,26 @@ export interface ProcessStep {
6
6
  id: string;
7
7
  title: string;
8
8
  status: ProcessStepStatus;
9
+ /** 调用者提供的状态显示文案;不改变 status 的语义。 */
10
+ statusText?: string;
9
11
  description?: string;
10
12
  elapsedMs?: number;
11
13
  details?: ReactNode;
12
14
  actions?: readonly ChatAction[];
13
15
  }
14
16
  export interface ProcessBaseProps {
15
- /** card 为完整步骤面板;compact 为可整行展开、有界详情的轻量过程展示。 */
16
- variant?: 'card' | 'compact';
17
+ /** card 为状态面板;compact 为单行过程;timeline 为带状态节点的连续步骤。 */
18
+ variant?: 'card' | 'compact' | 'timeline';
17
19
  steps: readonly ProcessStep[];
18
20
  title?: string;
19
21
  identity?: ReactNode;
22
+ /** inline 仅用于 compact 单项,让身份与状态处于同一行。 */
23
+ identityPlacement?: 'heading' | 'inline';
20
24
  style?: StyleProp<ViewStyle>;
21
25
  testID?: string;
22
26
  }
23
27
  export interface ProcessCompactStepProps {
28
+ identity?: ReactNode;
24
29
  step: ProcessStep;
25
30
  expanded: boolean;
26
31
  elapsed?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Process/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAe,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAC3B,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,KAAK,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,gBAAgB,CAAC,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,MAAM,YAAY,GAAG,gBAAgB,GACzC,CAAC,0BAA0B,GAAG,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Process/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAe,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAC3B,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;IAC1B,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1C,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,KAAK,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,gBAAgB,CAAC,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,MAAM,YAAY,GAAG,gBAAgB,GACzC,CAAC,0BAA0B,GAAG,qBAAqB,CAAC,CAAC"}
@@ -6,7 +6,7 @@ export type { AttachmentsProps, ChatAttachmentItem, ChatAttachmentStatus, } from
6
6
  export { Message } from './components/Message/index.js';
7
7
  export type { MessageBaseProps, MessageCustomContent, MessageMarkdownContent, MessagePlainContent, MessagePlacement, MessageProps, MessageStatus, } from './components/Message/index.js';
8
8
  export { MessageList } from './components/MessageList/index.js';
9
- export type { MessageListHandle, MessageListProps, MessageListScrollOptions, } from './components/MessageList/index.js';
9
+ export type { MessageListAnchorOptions, MessageListHandle, MessageListProps, MessageListScrollOptions, } from './components/MessageList/index.js';
10
10
  export { Chat } from './components/Chat/index.js';
11
11
  export type { ChatProps } from './components/Chat/index.js';
12
12
  export { Suggestions } from './components/Suggestions/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAuB,CAAC;AACjD,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gCAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mCAA0B,CAAC;AACvD,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mCAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,+BAAsB,CAAC;AAC/C,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,+BAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,mCAA0B,CAAC;AACvD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,mCAA0B,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,4BAAmB,CAAC;AACzC,YAAY,EAAE,SAAS,EAAE,MAAM,4BAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAA0B,CAAC;AACvD,YAAY,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,mCAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAA2B,CAAC;AACzD,YAAY,EACV,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oCAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,+BAAsB,CAAC;AAC/C,YAAY,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,MAAM,+BAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAAiC,CAAC;AACrE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0CAAiC,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAuB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gCAAuB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAAsB,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,+BAAsB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAuB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,gCAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAuB,CAAC;AACjD,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gCAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mCAA0B,CAAC;AACvD,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mCAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,+BAAsB,CAAC;AAC/C,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,+BAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,mCAA0B,CAAC;AACvD,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,mCAA0B,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,4BAAmB,CAAC;AACzC,YAAY,EAAE,SAAS,EAAE,MAAM,4BAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAA0B,CAAC;AACvD,YAAY,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,mCAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAA2B,CAAC;AACzD,YAAY,EACV,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oCAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,+BAAsB,CAAC;AAC/C,YAAY,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,MAAM,+BAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAAiC,CAAC;AACrE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0CAAiC,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAuB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gCAAuB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAAsB,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,+BAAsB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAuB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,gCAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unif/react-native-chat",
3
- "version": "3.2.4",
3
+ "version": "3.3.0",
4
4
  "description": "Unif React Native 聊天组件:消息、输入、附件和交互展示",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -25,6 +25,7 @@ export function AttachmentItem({
25
25
  imageSize,
26
26
  row,
27
27
  mixed = false,
28
+ compact = false,
28
29
  showProgressLabel = false,
29
30
  onPreview,
30
31
  onRemove,
@@ -225,8 +226,9 @@ export function AttachmentItem({
225
226
  );
226
227
  }
227
228
 
228
- const removeLeft =
229
- previewable && !separatePreview
229
+ const removeLeft = compact
230
+ ? Math.max(0, imageSize - ATTACHMENT_STATUS_OWNER_SIZE)
231
+ : previewable && !separatePreview
230
232
  ? width!
231
233
  : (busy && !caption) || failed
232
234
  ? (imageSize - ATTACHMENT_STATUS_OWNER_SIZE) / 2 +
@@ -276,7 +278,13 @@ export function AttachmentItem({
276
278
  {statusOwner}
277
279
  {removable ? (
278
280
  <Pressable
279
- style={[styles.removeOwner, { left: removeLeft }]}
281
+ style={[
282
+ styles.removeOwner,
283
+ { left: removeLeft },
284
+ (compact ||
285
+ removeLeft === imageSize - ATTACHMENT_STATUS_OWNER_SIZE) &&
286
+ styles.removeInCell,
287
+ ]}
280
288
  accessibilityRole="button"
281
289
  accessibilityLabel={`移除${name}`}
282
290
  disabled={item.removeDisabled}
@@ -24,6 +24,7 @@ export function Attachments({
24
24
  item={item}
25
25
  row={row}
26
26
  mixed={layout === 'mixed'}
27
+ compact={layout === 'compact'}
27
28
  width={CARD_WIDTH}
28
29
  imageSize={
29
30
  row
@@ -116,6 +116,7 @@ export const createStyles = (colors: ColorTokens) =>
116
116
  alignItems: 'center',
117
117
  justifyContent: 'center',
118
118
  },
119
+ removeInCell: { alignItems: 'flex-end', paddingRight: space[1] },
119
120
  removeFailed: { backgroundColor: colors.error },
120
121
  caption: {
121
122
  flexDirection: 'row',
@@ -20,7 +20,7 @@ export interface ChatAttachmentItem {
20
20
  }
21
21
  export interface AttachmentsProps {
22
22
  items: readonly ChatAttachmentItem[];
23
- layout?: 'grid' | 'mixed' | 'carousel' | 'list';
23
+ layout?: 'grid' | 'compact' | 'mixed' | 'carousel' | 'list';
24
24
  showProgressLabel?: boolean;
25
25
  onPreview?(item: ChatAttachmentItem): void;
26
26
  onRemove?(item: ChatAttachmentItem): void;
@@ -36,4 +36,5 @@ export interface AttachmentItemProps extends Pick<
36
36
  imageSize: number;
37
37
  row: boolean;
38
38
  mixed?: boolean;
39
+ compact?: boolean;
39
40
  }
@@ -5,12 +5,19 @@ import {
5
5
  useRef,
6
6
  useState,
7
7
  } from 'react';
8
- import { Pressable, Text, View, useWindowDimensions } from 'react-native';
8
+ import {
9
+ LayoutAnimation,
10
+ Pressable,
11
+ Text,
12
+ View,
13
+ useWindowDimensions,
14
+ } from 'react-native';
9
15
  import {
10
16
  fixed,
11
17
  Textarea,
12
18
  useTheme,
13
19
  useThemedStyles,
20
+ usePrefersReducedMotion,
14
21
  } from '@unif/react-native-design';
15
22
  import type { TextFieldHandle } from '@unif/react-native-design';
16
23
  import {
@@ -52,6 +59,7 @@ export const Composer = forwardRef<ComposerHandle, ComposerProps>(
52
59
  ) {
53
60
  const styles = useThemedStyles(createStyles);
54
61
  const { fontScale } = useTheme();
62
+ const reducedMotion = usePrefersReducedMotion();
55
63
  const { height: windowHeight } = useWindowDimensions();
56
64
  const inputRef = useRef<TextFieldHandle>(null);
57
65
  const lastHeight = useRef<number | undefined>(undefined);
@@ -59,6 +67,12 @@ export const Composer = forwardRef<ComposerHandle, ComposerProps>(
59
67
  const [focused, setFocused] = useState(false);
60
68
  const voiceActive = voice !== undefined && voice.status !== 'idle';
61
69
  const expanded = focused || value.length > 0;
70
+ const moreDisabled =
71
+ disabled ||
72
+ voiceActive ||
73
+ actions.every(
74
+ (action) => !action.label.trim() || action.disabled || action.loading
75
+ );
62
76
  const minHeight = Number.isFinite(minInputHeight)
63
77
  ? Math.max(fixed.hitTarget, minInputHeight!)
64
78
  : fixed.hitTarget;
@@ -98,8 +112,8 @@ export const Composer = forwardRef<ComposerHandle, ComposerProps>(
98
112
  inputRef.current?.blur();
99
113
  setFocused(false);
100
114
  }
101
- if (voiceActive || disabled) setMenuOpen(false);
102
- }, [voiceActive, disabled]);
115
+ if (moreDisabled) setMenuOpen(false);
116
+ }, [voiceActive, moreDisabled]);
103
117
 
104
118
  const moreAction =
105
119
  actions.length > 0 ? (
@@ -107,7 +121,7 @@ export const Composer = forwardRef<ComposerHandle, ComposerProps>(
107
121
  icon="plus"
108
122
  label="更多操作"
109
123
  expanded={menuOpen}
110
- disabled={disabled}
124
+ disabled={moreDisabled}
111
125
  onPress={() => setMenuOpen((open) => !open)}
112
126
  />
113
127
  ) : null;
@@ -126,7 +140,7 @@ export const Composer = forwardRef<ComposerHandle, ComposerProps>(
126
140
  {header != null ? (
127
141
  <View style={[styles.accessory, styles.header]}>{header}</View>
128
142
  ) : null}
129
- {menuOpen && !disabled && !voiceActive && actions.length > 0 ? (
143
+ {menuOpen && !moreDisabled && actions.length > 0 ? (
130
144
  <>
131
145
  <Pressable
132
146
  style={[styles.backdrop, { height: windowHeight }]}
@@ -191,10 +205,18 @@ export const Composer = forwardRef<ComposerHandle, ComposerProps>(
191
205
  onPressIn={() => setMenuOpen(false)}
192
206
  onFocus={() => {
193
207
  setMenuOpen(false);
208
+ if (!focused && !value.length && !reducedMotion)
209
+ LayoutAnimation.configureNext(
210
+ LayoutAnimation.Presets.easeInEaseOut
211
+ );
194
212
  setFocused(true);
195
213
  onFocusChange?.(true);
196
214
  }}
197
215
  onBlur={() => {
216
+ if (focused && !value.length && !reducedMotion)
217
+ LayoutAnimation.configureNext(
218
+ LayoutAnimation.Presets.easeInEaseOut
219
+ );
198
220
  setFocused(false);
199
221
  onFocusChange?.(false);
200
222
  }}
@@ -267,13 +289,17 @@ export const Composer = forwardRef<ComposerHandle, ComposerProps>(
267
289
  : voice.transcript || VOICE_LABELS[voice.status]}
268
290
  </Text>
269
291
  </View>
270
- {voice.status === 'listening' ? (
292
+ {voice.status === 'listening' || voice.status === 'finishing' ? (
271
293
  <ComposerIconAction
272
294
  icon="stop"
273
295
  visual="primary"
274
296
  label="停止语音输入"
275
- disabled={disabled || voice.disabled}
276
- onPress={voice.onStop}
297
+ disabled={
298
+ disabled || voice.disabled || voice.status === 'finishing'
299
+ }
300
+ onPress={
301
+ voice.status === 'listening' ? voice.onStop : undefined
302
+ }
277
303
  />
278
304
  ) : null}
279
305
  </View>