@unif/react-native-chat 3.2.4 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/components/Attachments/AttachmentItem.js +8 -4
- package/lib/module/components/Attachments/AttachmentItem.js.map +1 -1
- package/lib/module/components/Attachments/Attachments.js +1 -0
- package/lib/module/components/Attachments/Attachments.js.map +1 -1
- package/lib/module/components/Attachments/constants.js +1 -0
- package/lib/module/components/Attachments/constants.js.map +1 -1
- package/lib/module/components/Attachments/styles.js +10 -5
- package/lib/module/components/Attachments/styles.js.map +1 -1
- package/lib/module/components/Composer/Composer.js +13 -9
- package/lib/module/components/Composer/Composer.js.map +1 -1
- package/lib/module/components/Composer/styles.js +1 -0
- package/lib/module/components/Composer/styles.js.map +1 -1
- package/lib/module/components/Confirmation/Confirmation.js +29 -13
- package/lib/module/components/Confirmation/Confirmation.js.map +1 -1
- package/lib/module/components/Confirmation/styles.js +17 -6
- package/lib/module/components/Confirmation/styles.js.map +1 -1
- package/lib/module/components/Message/MarkdownContent/styles.js +29 -33
- package/lib/module/components/Message/MarkdownContent/styles.js.map +1 -1
- package/lib/module/components/Message/Message.js +37 -24
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageWaiting.js +53 -0
- package/lib/module/components/Message/MessageWaiting.js.map +1 -0
- package/lib/module/components/Message/constants.js +3 -0
- package/lib/module/components/Message/constants.js.map +1 -1
- package/lib/module/components/Message/styles.js +41 -3
- package/lib/module/components/Message/styles.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +60 -31
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/MessageListEndButton.js +60 -0
- package/lib/module/components/MessageList/MessageListEndButton.js.map +1 -0
- package/lib/module/components/MessageList/MessageListRow.js +9 -2
- package/lib/module/components/MessageList/MessageListRow.js.map +1 -1
- package/lib/module/components/MessageList/styles.js +6 -0
- package/lib/module/components/MessageList/styles.js.map +1 -1
- package/lib/module/components/MessageList/useMessageListScroll.js +218 -13
- package/lib/module/components/MessageList/useMessageListScroll.js.map +1 -1
- package/lib/module/components/Process/Process.js +15 -5
- package/lib/module/components/Process/Process.js.map +1 -1
- package/lib/module/components/Process/ProcessCompactStep.js +21 -12
- package/lib/module/components/Process/ProcessCompactStep.js.map +1 -1
- package/lib/module/components/Process/ProcessTimelineStep.js +79 -0
- package/lib/module/components/Process/ProcessTimelineStep.js.map +1 -0
- package/lib/module/components/Process/styles.js +63 -3
- package/lib/module/components/Process/styles.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/components/Attachments/AttachmentItem.d.ts +1 -1
- package/lib/typescript/src/components/Attachments/AttachmentItem.d.ts.map +1 -1
- package/lib/typescript/src/components/Attachments/Attachments.d.ts.map +1 -1
- package/lib/typescript/src/components/Attachments/constants.d.ts +1 -0
- package/lib/typescript/src/components/Attachments/constants.d.ts.map +1 -1
- package/lib/typescript/src/components/Attachments/styles.d.ts +5 -0
- package/lib/typescript/src/components/Attachments/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/Attachments/types.d.ts +2 -1
- package/lib/typescript/src/components/Attachments/types.d.ts.map +1 -1
- package/lib/typescript/src/components/Composer/Composer.d.ts.map +1 -1
- package/lib/typescript/src/components/Composer/styles.d.ts +1 -0
- package/lib/typescript/src/components/Composer/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/Confirmation/Confirmation.d.ts.map +1 -1
- package/lib/typescript/src/components/Confirmation/styles.d.ts +13 -2
- package/lib/typescript/src/components/Confirmation/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/Message/MarkdownContent/styles.d.ts +32 -66
- package/lib/typescript/src/components/Message/MarkdownContent/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/Message/Message.d.ts.map +1 -1
- package/lib/typescript/src/components/Message/MessageWaiting.d.ts +3 -0
- package/lib/typescript/src/components/Message/MessageWaiting.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/constants.d.ts +3 -0
- package/lib/typescript/src/components/Message/constants.d.ts.map +1 -1
- package/lib/typescript/src/components/Message/styles.d.ts +40 -2
- package/lib/typescript/src/components/Message/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/Message/types.d.ts +5 -0
- package/lib/typescript/src/components/Message/types.d.ts.map +1 -1
- package/lib/typescript/src/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/src/components/MessageList/MessageListEndButton.d.ts +3 -0
- package/lib/typescript/src/components/MessageList/MessageListEndButton.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/MessageListRow.d.ts +2 -8
- package/lib/typescript/src/components/MessageList/MessageListRow.d.ts.map +1 -1
- package/lib/typescript/src/components/MessageList/index.d.ts +1 -1
- package/lib/typescript/src/components/MessageList/index.d.ts.map +1 -1
- package/lib/typescript/src/components/MessageList/styles.d.ts +6 -0
- package/lib/typescript/src/components/MessageList/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/MessageList/types.d.ts +41 -2
- package/lib/typescript/src/components/MessageList/types.d.ts.map +1 -1
- package/lib/typescript/src/components/MessageList/useMessageListScroll.d.ts +14 -3
- package/lib/typescript/src/components/MessageList/useMessageListScroll.d.ts.map +1 -1
- package/lib/typescript/src/components/Process/Process.d.ts.map +1 -1
- package/lib/typescript/src/components/Process/ProcessCompactStep.d.ts +1 -1
- package/lib/typescript/src/components/Process/ProcessCompactStep.d.ts.map +1 -1
- package/lib/typescript/src/components/Process/ProcessTimelineStep.d.ts +5 -0
- package/lib/typescript/src/components/Process/ProcessTimelineStep.d.ts.map +1 -0
- package/lib/typescript/src/components/Process/styles.d.ts +62 -2
- package/lib/typescript/src/components/Process/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/Process/types.d.ts +7 -2
- package/lib/typescript/src/components/Process/types.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Attachments/AttachmentItem.tsx +16 -5
- package/src/components/Attachments/Attachments.tsx +1 -0
- package/src/components/Attachments/constants.ts +1 -0
- package/src/components/Attachments/styles.ts +7 -4
- package/src/components/Attachments/types.ts +2 -1
- package/src/components/Composer/Composer.tsx +34 -8
- package/src/components/Composer/styles.ts +1 -0
- package/src/components/Confirmation/Confirmation.tsx +50 -14
- package/src/components/Confirmation/styles.ts +13 -6
- package/src/components/Message/MarkdownContent/styles.ts +18 -44
- package/src/components/Message/Message.tsx +53 -33
- package/src/components/Message/MessageWaiting.tsx +68 -0
- package/src/components/Message/constants.ts +4 -0
- package/src/components/Message/styles.ts +25 -2
- package/src/components/Message/types.ts +6 -0
- package/src/components/MessageList/MessageList.tsx +107 -35
- package/src/components/MessageList/MessageListEndButton.tsx +61 -0
- package/src/components/MessageList/MessageListRow.tsx +12 -12
- package/src/components/MessageList/index.ts +1 -0
- package/src/components/MessageList/styles.ts +6 -0
- package/src/components/MessageList/types.ts +52 -2
- package/src/components/MessageList/useMessageListScroll.ts +296 -21
- package/src/components/Process/Process.tsx +38 -5
- package/src/components/Process/ProcessCompactStep.tsx +32 -16
- package/src/components/Process/ProcessTimelineStep.tsx +109 -0
- package/src/components/Process/styles.ts +48 -3
- package/src/components/Process/types.ts +7 -2
- package/src/index.tsx +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useImperativeHandle","useMemo","useRef","FlatList","
|
|
1
|
+
{"version":3,"names":["useCallback","useImperativeHandle","useLayoutEffect","useMemo","useRef","FlatList","StyleSheet","View","Button","useThemedStyles","DEFAULT_END_THRESHOLD","createStyles","useWebPrependAnchor","useMessageListScroll","MessageListRow","MessageListEndButton","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MAINTAIN_VISIBLE_POSITION","minIndexForVisible","MessageList","items","keyExtractor","renderItem","extraData","header","footer","empty","renderSeparator","initialPosition","followOutput","endThreshold","showScrollToEnd","scrollToEndBusy","onAtEndChange","hasEarlier","loadingEarlier","onRequestEarlier","keyboardDismissMode","contentContainerStyle","showsVerticalScrollIndicator","style","testID","ref","styles","listRef","listTestID","current","contentStyle","flatten","keys","map","getRowNativeID","preservingPrependRef","cancelPrependPreservation","itemsIdentity","atEnd","anchorMinimumHeight","anchorToItem","onCellLayout","onItemLayout","onCellUnmount","onFooterLayout","onScrollToIndexFailed","scrollToEnd","onLayout","onContentSizeChange","onScroll","onUserScrollBegin","onMomentumScrollBegin","onScrollEndDrag","onMomentumScrollEnd","hasFooter","contentMinimumHeight","minHeight","contentBottomPadding","paddingBottom","paddingVertical","padding","CellRenderer","MessageListCell","cellKey","index","children","cellStyle","reportLayout","onFocusCapture","currentIndex","encodeURIComponent","undefined","event","nativeEvent","layout","renderRow","item","itemKey","previous","nativeID","history","hasHeader","Boolean","listHeader","label","variant","loading","onPress","listFooter","listEmpty","root","list","data","CellRendererComponent","ListHeaderComponent","ListFooterComponent","ListEmptyComponent","maintainVisibleContentPosition","length","keyboardShouldPersistTaps","scrollEventThrottle","onScrollBeginDrag","busy"],"sourceRoot":"../../../../src","sources":["components/MessageList/MessageList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useRef } from 'react';
|
|
4
|
+
import { Animated, View } from 'react-native';
|
|
5
|
+
import { IconButton, Reveal, Spinner, usePrefersReducedMotion, useThemedStyles } from '@unif/react-native-design';
|
|
6
|
+
import { createStyles } from "./styles.js";
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
export function MessageListEndButton({
|
|
9
|
+
busy,
|
|
10
|
+
onPress
|
|
11
|
+
}) {
|
|
12
|
+
const styles = useThemedStyles(createStyles);
|
|
13
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
14
|
+
const scale = useRef(new Animated.Value(reducedMotion ? 1 : 0.8)).current;
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (reducedMotion) {
|
|
17
|
+
scale.setValue(1);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const animation = Animated.spring(scale, {
|
|
21
|
+
toValue: 1,
|
|
22
|
+
friction: 6,
|
|
23
|
+
tension: 120,
|
|
24
|
+
useNativeDriver: true
|
|
25
|
+
});
|
|
26
|
+
animation.start();
|
|
27
|
+
return () => animation.stop();
|
|
28
|
+
}, [reducedMotion, scale]);
|
|
29
|
+
return /*#__PURE__*/_jsx(View, {
|
|
30
|
+
style: styles.returnToEnd,
|
|
31
|
+
pointerEvents: "box-none",
|
|
32
|
+
children: /*#__PURE__*/_jsx(Reveal, {
|
|
33
|
+
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
34
|
+
style: [styles.returnVisual, {
|
|
35
|
+
transform: [{
|
|
36
|
+
scale
|
|
37
|
+
}]
|
|
38
|
+
}],
|
|
39
|
+
children: [busy ? /*#__PURE__*/_jsx(View, {
|
|
40
|
+
style: styles.returnProgress,
|
|
41
|
+
pointerEvents: "none",
|
|
42
|
+
children: /*#__PURE__*/_jsx(Spinner, {
|
|
43
|
+
size: 44,
|
|
44
|
+
thickness: 2
|
|
45
|
+
})
|
|
46
|
+
}) : null, /*#__PURE__*/_jsx(IconButton, {
|
|
47
|
+
icon: "arrow-down",
|
|
48
|
+
accessibilityLabel: busy ? '回到最新消息,正在处理' : '回到最新消息',
|
|
49
|
+
variant: "ghost",
|
|
50
|
+
size: "md",
|
|
51
|
+
surfaceSize: 36,
|
|
52
|
+
iconSize: 18,
|
|
53
|
+
style: styles.returnButton,
|
|
54
|
+
onPress: onPress
|
|
55
|
+
})]
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=MessageListEndButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","Animated","View","IconButton","Reveal","Spinner","usePrefersReducedMotion","useThemedStyles","createStyles","jsx","_jsx","jsxs","_jsxs","MessageListEndButton","busy","onPress","styles","reducedMotion","scale","Value","current","setValue","animation","spring","toValue","friction","tension","useNativeDriver","start","stop","style","returnToEnd","pointerEvents","children","returnVisual","transform","returnProgress","size","thickness","icon","accessibilityLabel","variant","surfaceSize","iconSize","returnButton"],"sourceRoot":"../../../../src","sources":["components/MessageList/MessageListEndButton.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,QAAQ,EAAEC,IAAI,QAAQ,cAAc;AAC7C,SACEC,UAAU,EACVC,MAAM,EACNC,OAAO,EACPC,uBAAuB,EACvBC,eAAe,QACV,2BAA2B;AAClC,SAASC,YAAY,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGxC,OAAO,SAASC,oBAAoBA,CAAC;EACnCC,IAAI;EACJC;AACyB,CAAC,EAAE;EAC5B,MAAMC,MAAM,GAAGT,eAAe,CAACC,YAAY,CAAC;EAC5C,MAAMS,aAAa,GAAGX,uBAAuB,CAAC,CAAC;EAC/C,MAAMY,KAAK,GAAGlB,MAAM,CAAC,IAAIC,QAAQ,CAACkB,KAAK,CAACF,aAAa,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAACG,OAAO;EACzErB,SAAS,CAAC,MAAM;IACd,IAAIkB,aAAa,EAAE;MACjBC,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAC;MACjB;IACF;IACA,MAAMC,SAAS,GAAGrB,QAAQ,CAACsB,MAAM,CAACL,KAAK,EAAE;MACvCM,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAE,CAAC;MACXC,OAAO,EAAE,GAAG;MACZC,eAAe,EAAE;IACnB,CAAC,CAAC;IACFL,SAAS,CAACM,KAAK,CAAC,CAAC;IACjB,OAAO,MAAMN,SAAS,CAACO,IAAI,CAAC,CAAC;EAC/B,CAAC,EAAE,CAACZ,aAAa,EAAEC,KAAK,CAAC,CAAC;EAC1B,oBACER,IAAA,CAACR,IAAI;IAAC4B,KAAK,EAAEd,MAAM,CAACe,WAAY;IAACC,aAAa,EAAC,UAAU;IAAAC,QAAA,eACvDvB,IAAA,CAACN,MAAM;MAAA6B,QAAA,eACLrB,KAAA,CAACX,QAAQ,CAACC,IAAI;QACZ4B,KAAK,EAAE,CAACd,MAAM,CAACkB,YAAY,EAAE;UAAEC,SAAS,EAAE,CAAC;YAAEjB;UAAM,CAAC;QAAE,CAAC,CAAE;QAAAe,QAAA,GAExDnB,IAAI,gBACHJ,IAAA,CAACR,IAAI;UAAC4B,KAAK,EAAEd,MAAM,CAACoB,cAAe;UAACJ,aAAa,EAAC,MAAM;UAAAC,QAAA,eACtDvB,IAAA,CAACL,OAAO;YAACgC,IAAI,EAAE,EAAG;YAACC,SAAS,EAAE;UAAE,CAAE;QAAC,CAC/B,CAAC,GACL,IAAI,eACR5B,IAAA,CAACP,UAAU;UACToC,IAAI,EAAC,YAAY;UACjBC,kBAAkB,EAChB1B,IAAI,GAAG,aAAa,GAAG,QACxB;UACD2B,OAAO,EAAC,OAAO;UACfJ,IAAI,EAAC,IAAI;UACTK,WAAW,EAAE,EAAG;UAChBC,QAAQ,EAAE,EAAG;UACbb,KAAK,EAAEd,MAAM,CAAC4B,YAAa;UAC3B7B,OAAO,EAAEA;QAAQ,CAClB,CAAC;MAAA,CACW;IAAC,CACV;EAAC,CACL,CAAC;AAEX","ignoreList":[]}
|
|
@@ -2,18 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
import { memo } from 'react';
|
|
4
4
|
import { View } from 'react-native';
|
|
5
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
6
|
function MessageListRowContent({
|
|
7
7
|
item,
|
|
8
8
|
previous,
|
|
9
9
|
index,
|
|
10
10
|
nativeID,
|
|
11
|
+
itemKey,
|
|
12
|
+
testID,
|
|
13
|
+
onItemLayout,
|
|
11
14
|
renderItem,
|
|
12
15
|
renderSeparator
|
|
13
16
|
}) {
|
|
14
17
|
return /*#__PURE__*/_jsxs(View, {
|
|
15
18
|
nativeID: nativeID,
|
|
16
|
-
children: [index > 0 && renderSeparator ? renderSeparator(previous, item) : null,
|
|
19
|
+
children: [index > 0 && renderSeparator ? renderSeparator(previous, item) : null, /*#__PURE__*/_jsx(View, {
|
|
20
|
+
testID: testID,
|
|
21
|
+
onLayout: event => onItemLayout(itemKey, index, event.nativeEvent.layout.y),
|
|
22
|
+
children: renderItem(item, index)
|
|
23
|
+
})]
|
|
17
24
|
});
|
|
18
25
|
}
|
|
19
26
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","View","jsxs","_jsxs","MessageListRowContent","item","previous","index","nativeID","renderItem","renderSeparator","children","MessageListRow"],"sourceRoot":"../../../../src","sources":["components/MessageList/MessageListRow.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,IAAI,QAAQ,cAAc;AAAC,SAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"names":["memo","View","jsx","_jsx","jsxs","_jsxs","MessageListRowContent","item","previous","index","nativeID","itemKey","testID","onItemLayout","renderItem","renderSeparator","children","onLayout","event","nativeEvent","layout","y","MessageListRow"],"sourceRoot":"../../../../src","sources":["components/MessageList/MessageListRow.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,IAAI,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGpC,SAASC,qBAAqBA,CAAI;EAChCC,IAAI;EACJC,QAAQ;EACRC,KAAK;EACLC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACNC,YAAY;EACZC,UAAU;EACVC;AACsB,CAAC,EAAE;EACzB,oBACEV,KAAA,CAACJ,IAAI;IAACS,QAAQ,EAAEA,QAAS;IAAAM,QAAA,GACtBP,KAAK,GAAG,CAAC,IAAIM,eAAe,GAAGA,eAAe,CAACP,QAAQ,EAAGD,IAAI,CAAC,GAAG,IAAI,eACvEJ,IAAA,CAACF,IAAI;MACHW,MAAM,EAAEA,MAAO;MACfK,QAAQ,EAAGC,KAAK,IACdL,YAAY,CAACF,OAAO,EAAEF,KAAK,EAAES,KAAK,CAACC,WAAW,CAACC,MAAM,CAACC,CAAC,CACxD;MAAAL,QAAA,EAEAF,UAAU,CAACP,IAAI,EAAEE,KAAK;IAAC,CACpB,CAAC;EAAA,CACH,CAAC;AAEX;;AAEA;AACA;AACA,OAAO,MAAMa,cAAc,gBAAGtB,IAAI,CAChCM,qBACF,CAAiC","ignoreList":[]}
|
|
@@ -20,6 +20,12 @@ export const createStyles = (colors, shadows) => StyleSheet.create({
|
|
|
20
20
|
justifyContent: 'center'
|
|
21
21
|
},
|
|
22
22
|
returnProgress: StyleSheet.absoluteFill,
|
|
23
|
+
returnVisual: {
|
|
24
|
+
width: 44,
|
|
25
|
+
height: 44,
|
|
26
|
+
alignItems: 'center',
|
|
27
|
+
justifyContent: 'center'
|
|
28
|
+
},
|
|
23
29
|
returnButton: {
|
|
24
30
|
alignSelf: 'center',
|
|
25
31
|
borderRadius: 18,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","createStyles","colors","shadows","create","root","flex","minHeight","minWidth","list","returnToEnd","position","bottom","alignSelf","width","height","alignItems","justifyContent","returnProgress","absoluteFill","returnButton","borderRadius","backgroundColor","surface","card"],"sourceRoot":"../../../../src","sources":["components/MessageList/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,OAAO,MAAMC,YAAY,GAAGA,CAACC,MAAmB,EAAEC,OAAqB,KACrEH,UAAU,CAACI,MAAM,CAAC;EAChBC,IAAI,EAAE;IAAEC,IAAI,EAAE,CAAC;IAAEC,SAAS,EAAE,CAAC;IAAEC,QAAQ,EAAE;EAAE,CAAC;EAC5CC,IAAI,EAAE;IAAEH,IAAI,EAAE;EAAE,CAAC;EACjBI,WAAW,EAAE;IACXC,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,QAAQ;IACnBC,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDC,cAAc,EAAElB,UAAU,CAACmB,YAAY;EACvCC,YAAY,EAAE;
|
|
1
|
+
{"version":3,"names":["StyleSheet","createStyles","colors","shadows","create","root","flex","minHeight","minWidth","list","returnToEnd","position","bottom","alignSelf","width","height","alignItems","justifyContent","returnProgress","absoluteFill","returnVisual","returnButton","borderRadius","backgroundColor","surface","card"],"sourceRoot":"../../../../src","sources":["components/MessageList/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,OAAO,MAAMC,YAAY,GAAGA,CAACC,MAAmB,EAAEC,OAAqB,KACrEH,UAAU,CAACI,MAAM,CAAC;EAChBC,IAAI,EAAE;IAAEC,IAAI,EAAE,CAAC;IAAEC,SAAS,EAAE,CAAC;IAAEC,QAAQ,EAAE;EAAE,CAAC;EAC5CC,IAAI,EAAE;IAAEH,IAAI,EAAE;EAAE,CAAC;EACjBI,WAAW,EAAE;IACXC,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,QAAQ;IACnBC,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDC,cAAc,EAAElB,UAAU,CAACmB,YAAY;EACvCC,YAAY,EAAE;IACZN,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDI,YAAY,EAAE;IACZR,SAAS,EAAE,QAAQ;IACnBS,YAAY,EAAE,EAAE;IAChBC,eAAe,EAAErB,MAAM,CAACsB,OAAO;IAC/B,GAAGrB,OAAO,CAACsB;EACb;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import { useCallback, useLayoutEffect, useRef, useState } from 'react';
|
|
4
4
|
import { DEFAULT_END_THRESHOLD } from "./constants.js";
|
|
5
|
+
function layoutValue(value, extent) {
|
|
6
|
+
if (typeof value === 'number' && Number.isFinite(value)) return Math.max(0, value);
|
|
7
|
+
if (typeof value === 'string' && value.endsWith('%')) {
|
|
8
|
+
const percentage = Number.parseFloat(value);
|
|
9
|
+
if (Number.isFinite(percentage)) return Math.max(0, extent * percentage / 100);
|
|
10
|
+
}
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
5
13
|
export function useMessageListScroll({
|
|
6
14
|
listRef,
|
|
7
15
|
keys,
|
|
@@ -9,10 +17,14 @@ export function useMessageListScroll({
|
|
|
9
17
|
followOutput,
|
|
10
18
|
endThreshold = DEFAULT_END_THRESHOLD,
|
|
11
19
|
onAtEndChange,
|
|
20
|
+
contentMinimumHeight,
|
|
21
|
+
contentBottomPadding,
|
|
22
|
+
hasFooter,
|
|
12
23
|
preservingPrependRef,
|
|
13
24
|
cancelPrependPreservation
|
|
14
25
|
}) {
|
|
15
26
|
const measurements = useRef({
|
|
27
|
+
width: 0,
|
|
16
28
|
viewport: 0,
|
|
17
29
|
content: 0,
|
|
18
30
|
offset: 0,
|
|
@@ -21,20 +33,30 @@ export function useMessageListScroll({
|
|
|
21
33
|
const initial = useRef(initialPosition);
|
|
22
34
|
const initialized = useRef(false);
|
|
23
35
|
const previousKeys = useRef([]);
|
|
36
|
+
const currentKeys = useRef(keys);
|
|
37
|
+
currentKeys.current = keys;
|
|
38
|
+
const contentStyle = useRef({
|
|
39
|
+
contentMinimumHeight,
|
|
40
|
+
contentBottomPadding
|
|
41
|
+
});
|
|
42
|
+
contentStyle.current = {
|
|
43
|
+
contentMinimumHeight,
|
|
44
|
+
contentBottomPadding
|
|
45
|
+
};
|
|
24
46
|
const prependPending = useRef(false);
|
|
25
47
|
const pendingScroll = useRef(undefined);
|
|
26
48
|
const userScrolling = useRef(false);
|
|
27
49
|
const atEndRef = useRef(undefined);
|
|
28
50
|
const [atEnd, setAtEnd] = useState(true);
|
|
51
|
+
const anchor = useRef(undefined);
|
|
52
|
+
const layouts = useRef(new Map());
|
|
53
|
+
const layoutRevision = useRef(0);
|
|
54
|
+
const footerHeight = useRef(0);
|
|
55
|
+
if (!hasFooter) footerHeight.current = 0;
|
|
56
|
+
const layoutChanged = useRef(() => {});
|
|
57
|
+
const [anchorMinimumHeight, setAnchorMinimumHeight] = useState();
|
|
58
|
+
const minimumRef = useRef(undefined);
|
|
29
59
|
const threshold = Number.isFinite(endThreshold) ? Math.max(0, endThreshold) : DEFAULT_END_THRESHOLD;
|
|
30
|
-
useLayoutEffect(() => {
|
|
31
|
-
const previous = previousKeys.current;
|
|
32
|
-
const added = keys.length - previous.length;
|
|
33
|
-
const onlyPrepended = previous.length > 0 && added > 0 && previous.every((key, index) => keys[index + added] === key);
|
|
34
|
-
const changed = keys.length !== previous.length || keys.some((key, index) => key !== previous[index]);
|
|
35
|
-
if (changed) prependPending.current = onlyPrepended;
|
|
36
|
-
previousKeys.current = keys;
|
|
37
|
-
}, [keys]);
|
|
38
60
|
const ready = useCallback(() => {
|
|
39
61
|
const current = measurements.current;
|
|
40
62
|
return current.viewport > 0 && current.hasContentSize;
|
|
@@ -53,12 +75,156 @@ export function useMessageListScroll({
|
|
|
53
75
|
onAtEndChange?.(next);
|
|
54
76
|
}
|
|
55
77
|
}, [onAtEndChange, ready, threshold]);
|
|
78
|
+
const cancelAnchor = useCallback(() => {
|
|
79
|
+
anchor.current = undefined;
|
|
80
|
+
minimumRef.current = undefined;
|
|
81
|
+
setAnchorMinimumHeight(undefined);
|
|
82
|
+
}, []);
|
|
83
|
+
const naturalContentHeight = useCallback(() => {
|
|
84
|
+
const last = currentKeys.current.at(-1);
|
|
85
|
+
const cell = last === undefined ? undefined : layouts.current.get(last)?.cell;
|
|
86
|
+
if (!cell) return undefined;
|
|
87
|
+
const {
|
|
88
|
+
width,
|
|
89
|
+
viewport
|
|
90
|
+
} = measurements.current;
|
|
91
|
+
return Math.max(cell.y + cell.height + footerHeight.current + layoutValue(contentStyle.current.contentBottomPadding, width), layoutValue(contentStyle.current.contentMinimumHeight, viewport));
|
|
92
|
+
}, []);
|
|
93
|
+
const applyAnchor = useCallback(() => {
|
|
94
|
+
const request = anchor.current;
|
|
95
|
+
if (!request || !ready()) return;
|
|
96
|
+
const index = currentKeys.current.indexOf(request.key);
|
|
97
|
+
if (index < 0) return;
|
|
98
|
+
request.seen = true;
|
|
99
|
+
const position = layouts.current.get(request.key);
|
|
100
|
+
if (!position?.cell || position.itemY === undefined) {
|
|
101
|
+
// An offscreen row first needs to enter FlatList's render window. This
|
|
102
|
+
// estimate only reveals it; success still requires its actual layouts.
|
|
103
|
+
if (request.locatedAt !== layoutRevision.current) {
|
|
104
|
+
request.locatedAt = layoutRevision.current;
|
|
105
|
+
listRef.current?.scrollToIndex({
|
|
106
|
+
index,
|
|
107
|
+
animated: false,
|
|
108
|
+
viewPosition: 0
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const {
|
|
114
|
+
viewport,
|
|
115
|
+
content
|
|
116
|
+
} = measurements.current;
|
|
117
|
+
const offset = Math.max(0, position.cell.y + position.itemY - request.topOffset);
|
|
118
|
+
const minimum = Math.max(offset + viewport, layoutValue(contentStyle.current.contentMinimumHeight, viewport));
|
|
119
|
+
minimumRef.current = minimum;
|
|
120
|
+
setAnchorMinimumHeight(minimum);
|
|
121
|
+
// Yoga's requested minimum is not yet native scroll space. Wait for the
|
|
122
|
+
// content-size event; otherwise native scrolling can clamp the target.
|
|
123
|
+
if (content + 0.5 < minimum) return;
|
|
124
|
+
if (request.offset === offset && request.viewport === viewport) return;
|
|
125
|
+
request.offset = offset;
|
|
126
|
+
request.viewport = viewport;
|
|
127
|
+
request.settled = false;
|
|
128
|
+
initialized.current = true;
|
|
129
|
+
listRef.current?.scrollToOffset({
|
|
130
|
+
offset,
|
|
131
|
+
animated: request.animated
|
|
132
|
+
});
|
|
133
|
+
measurements.current.offset = offset;
|
|
134
|
+
publishPosition();
|
|
135
|
+
}, [listRef, publishPosition, ready]);
|
|
136
|
+
const onCellLayout = useCallback((key, index, cell) => {
|
|
137
|
+
if (currentKeys.current[index] !== key || !Number.isFinite(cell.y) || !Number.isFinite(cell.height)) return;
|
|
138
|
+
const previous = layouts.current.get(key);
|
|
139
|
+
if (previous?.index !== index || previous.cell?.x !== cell.x || previous.cell.y !== cell.y || previous.cell.width !== cell.width || previous.cell.height !== cell.height) layoutRevision.current++;
|
|
140
|
+
layouts.current.set(key, {
|
|
141
|
+
...previous,
|
|
142
|
+
index,
|
|
143
|
+
cell
|
|
144
|
+
});
|
|
145
|
+
layoutChanged.current();
|
|
146
|
+
}, []);
|
|
147
|
+
const onItemLayout = useCallback((key, index, itemY) => {
|
|
148
|
+
if (currentKeys.current[index] !== key || !Number.isFinite(itemY)) return;
|
|
149
|
+
const previous = layouts.current.get(key);
|
|
150
|
+
if (previous?.index !== index || previous.itemY !== itemY) layoutRevision.current++;
|
|
151
|
+
layouts.current.set(key, {
|
|
152
|
+
...previous,
|
|
153
|
+
index,
|
|
154
|
+
itemY
|
|
155
|
+
});
|
|
156
|
+
layoutChanged.current();
|
|
157
|
+
}, []);
|
|
158
|
+
const onCellUnmount = useCallback((key, index) => {
|
|
159
|
+
if (layouts.current.get(key)?.index === index) {
|
|
160
|
+
layouts.current.delete(key);
|
|
161
|
+
layoutRevision.current++;
|
|
162
|
+
}
|
|
163
|
+
}, []);
|
|
164
|
+
const onFooterLayout = useCallback(event => {
|
|
165
|
+
footerHeight.current = event.nativeEvent.layout.height;
|
|
166
|
+
layoutChanged.current();
|
|
167
|
+
}, []);
|
|
168
|
+
const anchorToItem = useCallback((key, options = {}) => {
|
|
169
|
+
pendingScroll.current = undefined;
|
|
170
|
+
cancelPrependPreservation();
|
|
171
|
+
userScrolling.current = false;
|
|
172
|
+
anchor.current = {
|
|
173
|
+
key,
|
|
174
|
+
topOffset: Number.isFinite(options.topOffset) ? Math.max(0, options.topOffset) : 0,
|
|
175
|
+
animated: options.animated ?? true,
|
|
176
|
+
seen: currentKeys.current.includes(key)
|
|
177
|
+
};
|
|
178
|
+
minimumRef.current = 0;
|
|
179
|
+
setAnchorMinimumHeight(0);
|
|
180
|
+
applyAnchor();
|
|
181
|
+
}, [applyAnchor, cancelPrependPreservation]);
|
|
182
|
+
useLayoutEffect(() => {
|
|
183
|
+
const previous = previousKeys.current;
|
|
184
|
+
const added = keys.length - previous.length;
|
|
185
|
+
const onlyPrepended = previous.length > 0 && added > 0 && previous.every((key, index) => keys[index + added] === key);
|
|
186
|
+
const changed = keys.length !== previous.length || keys.some((key, index) => key !== previous[index]);
|
|
187
|
+
if (changed) {
|
|
188
|
+
layoutRevision.current++;
|
|
189
|
+
prependPending.current = onlyPrepended;
|
|
190
|
+
const indices = new Map(keys.map((key, index) => [key, index]));
|
|
191
|
+
for (const [key, layout] of layouts.current) {
|
|
192
|
+
const index = indices.get(key);
|
|
193
|
+
if (index === undefined) layouts.current.delete(key);else if (index !== layout.index) {
|
|
194
|
+
// A moved cell gets a new natural y; the row's local separator
|
|
195
|
+
// offset remains valid until an actual layout change replaces it.
|
|
196
|
+
layouts.current.set(key, {
|
|
197
|
+
index,
|
|
198
|
+
itemY: layout.itemY
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
previousKeys.current = keys;
|
|
204
|
+
const request = anchor.current;
|
|
205
|
+
if (request) {
|
|
206
|
+
if (keys.includes(request.key)) request.seen = true;else if (request.seen) {
|
|
207
|
+
cancelAnchor();
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
// Explicit positioning and native/Web prepend preservation must never
|
|
211
|
+
// compensate the same layout twice.
|
|
212
|
+
cancelPrependPreservation();
|
|
213
|
+
applyAnchor();
|
|
214
|
+
}
|
|
215
|
+
}, [applyAnchor, cancelAnchor, cancelPrependPreservation, keys]);
|
|
56
216
|
const scrollToEnd = useCallback((options = {}) => {
|
|
57
217
|
cancelPrependPreservation();
|
|
58
218
|
const request = {
|
|
59
219
|
animated: options.animated ?? true
|
|
60
220
|
};
|
|
61
|
-
|
|
221
|
+
const natural = naturalContentHeight();
|
|
222
|
+
const minimum = minimumRef.current;
|
|
223
|
+
if (minimum !== undefined && natural !== undefined && measurements.current.content <= minimum + 0.5 && natural + 0.5 < measurements.current.content) {
|
|
224
|
+
request.contentBeforeRelease = measurements.current.content;
|
|
225
|
+
}
|
|
226
|
+
cancelAnchor();
|
|
227
|
+
if (!ready() || request.contentBeforeRelease !== undefined) {
|
|
62
228
|
pendingScroll.current = request;
|
|
63
229
|
return;
|
|
64
230
|
}
|
|
@@ -68,11 +234,16 @@ export function useMessageListScroll({
|
|
|
68
234
|
animated: request.animated
|
|
69
235
|
});
|
|
70
236
|
if (measurements.current.content <= measurements.current.viewport) publishPosition();
|
|
71
|
-
}, [cancelPrependPreservation, listRef, publishPosition, ready]);
|
|
237
|
+
}, [cancelAnchor, cancelPrependPreservation, listRef, naturalContentHeight, publishPosition, ready]);
|
|
72
238
|
const itemCount = keys.length;
|
|
73
239
|
const reconcileLayout = useCallback(contentChanged => {
|
|
74
240
|
if (!ready()) return;
|
|
241
|
+
if (anchor.current) {
|
|
242
|
+
applyAnchor();
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
75
245
|
const request = pendingScroll.current;
|
|
246
|
+
if (request?.contentBeforeRelease !== undefined && measurements.current.content === request.contentBeforeRelease && (naturalContentHeight() ?? 0) < request.contentBeforeRelease) return;
|
|
76
247
|
if (itemCount > 0 && !initialized.current) {
|
|
77
248
|
initialized.current = true;
|
|
78
249
|
if (request || initial.current === 'end') {
|
|
@@ -94,7 +265,10 @@ export function useMessageListScroll({
|
|
|
94
265
|
if (shouldFollow) scrollToEnd({
|
|
95
266
|
animated: false
|
|
96
267
|
});else publishPosition();
|
|
97
|
-
}, [followOutput, itemCount, preservingPrependRef, publishPosition, ready, scrollToEnd]);
|
|
268
|
+
}, [applyAnchor, followOutput, itemCount, naturalContentHeight, preservingPrependRef, publishPosition, ready, scrollToEnd]);
|
|
269
|
+
layoutChanged.current = () => {
|
|
270
|
+
if (anchor.current) applyAnchor();else if (pendingScroll.current) reconcileLayout(false);
|
|
271
|
+
};
|
|
98
272
|
const onScroll = useCallback(event => {
|
|
99
273
|
const {
|
|
100
274
|
contentOffset,
|
|
@@ -102,21 +276,31 @@ export function useMessageListScroll({
|
|
|
102
276
|
layoutMeasurement
|
|
103
277
|
} = event.nativeEvent;
|
|
104
278
|
const movedUp = contentOffset.y < measurements.current.offset;
|
|
105
|
-
const
|
|
279
|
+
const geometryChanged = measurements.current.content !== contentSize.height || measurements.current.viewport !== layoutMeasurement.height;
|
|
280
|
+
const request = anchor.current;
|
|
281
|
+
if (request?.offset !== undefined) {
|
|
282
|
+
if (Math.abs(contentOffset.y - request.offset) <= 0.5) request.settled = true;
|
|
283
|
+
// RN Web wheel scrolling need not dispatch scrollBeginDrag. Once a
|
|
284
|
+
// requested scroll has settled, a user move at unchanged geometry wins.
|
|
285
|
+
else if (request.settled && !geometryChanged) cancelAnchor();
|
|
286
|
+
}
|
|
287
|
+
const resizingAtEnd = !anchor.current && atEndRef.current && !movedUp && !userScrolling.current && followOutput === 'whenAtEnd' && geometryChanged;
|
|
106
288
|
measurements.current = {
|
|
289
|
+
width: layoutMeasurement.width,
|
|
107
290
|
offset: contentOffset.y,
|
|
108
291
|
content: contentSize.height,
|
|
109
292
|
viewport: layoutMeasurement.height,
|
|
110
293
|
hasContentSize: true
|
|
111
294
|
};
|
|
112
295
|
if (!resizingAtEnd) publishPosition();
|
|
113
|
-
}, [followOutput, publishPosition]);
|
|
296
|
+
}, [cancelAnchor, followOutput, publishPosition]);
|
|
114
297
|
const onLayout = useCallback(({
|
|
115
298
|
nativeEvent: {
|
|
116
299
|
layout
|
|
117
300
|
}
|
|
118
301
|
}) => {
|
|
119
302
|
measurements.current.viewport = layout.height;
|
|
303
|
+
measurements.current.width = layout.width;
|
|
120
304
|
reconcileLayout(false);
|
|
121
305
|
}, [reconcileLayout]);
|
|
122
306
|
const onContentSizeChange = useCallback((_width, height) => {
|
|
@@ -126,6 +310,11 @@ export function useMessageListScroll({
|
|
|
126
310
|
}, [reconcileLayout]);
|
|
127
311
|
const onUserScrollBegin = useCallback(() => {
|
|
128
312
|
userScrolling.current = true;
|
|
313
|
+
pendingScroll.current = undefined;
|
|
314
|
+
cancelAnchor();
|
|
315
|
+
}, [cancelAnchor]);
|
|
316
|
+
const onMomentumScrollBegin = useCallback(() => {
|
|
317
|
+
userScrolling.current = true;
|
|
129
318
|
}, []);
|
|
130
319
|
const onScrollEndDrag = useCallback(event => {
|
|
131
320
|
onScroll(event);
|
|
@@ -139,13 +328,29 @@ export function useMessageListScroll({
|
|
|
139
328
|
userScrolling.current = false;
|
|
140
329
|
publishPosition();
|
|
141
330
|
}, [onScroll, publishPosition]);
|
|
331
|
+
const onScrollToIndexFailed = useCallback(failure => {
|
|
332
|
+
const request = anchor.current;
|
|
333
|
+
if (!request || currentKeys.current.indexOf(request.key) !== failure.index || !Number.isFinite(failure.averageItemLength) || failure.averageItemLength <= 0) return;
|
|
334
|
+
listRef.current?.scrollToOffset({
|
|
335
|
+
offset: failure.index * failure.averageItemLength,
|
|
336
|
+
animated: false
|
|
337
|
+
});
|
|
338
|
+
}, [listRef]);
|
|
142
339
|
return {
|
|
143
340
|
atEnd,
|
|
341
|
+
anchorMinimumHeight,
|
|
342
|
+
anchorToItem,
|
|
343
|
+
onCellLayout,
|
|
344
|
+
onItemLayout,
|
|
345
|
+
onCellUnmount,
|
|
346
|
+
onFooterLayout,
|
|
347
|
+
onScrollToIndexFailed,
|
|
144
348
|
scrollToEnd,
|
|
145
349
|
onLayout,
|
|
146
350
|
onContentSizeChange,
|
|
147
351
|
onScroll,
|
|
148
352
|
onUserScrollBegin,
|
|
353
|
+
onMomentumScrollBegin,
|
|
149
354
|
onScrollEndDrag,
|
|
150
355
|
onMomentumScrollEnd
|
|
151
356
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useLayoutEffect","useRef","useState","DEFAULT_END_THRESHOLD","useMessageListScroll","listRef","keys","initialPosition","followOutput","endThreshold","onAtEndChange","preservingPrependRef","cancelPrependPreservation","measurements","viewport","content","offset","hasContentSize","initial","initialized","previousKeys","prependPending","pendingScroll","undefined","userScrolling","atEndRef","atEnd","setAtEnd","threshold","Number","isFinite","Math","max","previous","current","added","length","onlyPrepended","every","key","index","changed","some","ready","publishPosition","next","scrollToEnd","options","request","animated","scrollToOffset","itemCount","reconcileLayout","contentChanged","prepended","shouldFollow","onScroll","event","contentOffset","contentSize","layoutMeasurement","nativeEvent","movedUp","y","resizingAtEnd","height","onLayout","layout","onContentSizeChange","_width","onUserScrollBegin","onScrollEndDrag","velocity","onMomentumScrollEnd"],"sourceRoot":"../../../../src","sources":["components/MessageList/useMessageListScroll.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useLayoutEffect","useRef","useState","DEFAULT_END_THRESHOLD","layoutValue","value","extent","Number","isFinite","Math","max","endsWith","percentage","parseFloat","useMessageListScroll","listRef","keys","initialPosition","followOutput","endThreshold","onAtEndChange","contentMinimumHeight","contentBottomPadding","hasFooter","preservingPrependRef","cancelPrependPreservation","measurements","width","viewport","content","offset","hasContentSize","initial","initialized","previousKeys","currentKeys","current","contentStyle","prependPending","pendingScroll","undefined","userScrolling","atEndRef","atEnd","setAtEnd","anchor","layouts","Map","layoutRevision","footerHeight","layoutChanged","anchorMinimumHeight","setAnchorMinimumHeight","minimumRef","threshold","ready","publishPosition","next","cancelAnchor","naturalContentHeight","last","at","cell","get","y","height","applyAnchor","request","index","indexOf","key","seen","position","itemY","locatedAt","scrollToIndex","animated","viewPosition","topOffset","minimum","settled","scrollToOffset","onCellLayout","previous","x","set","onItemLayout","onCellUnmount","delete","onFooterLayout","event","nativeEvent","layout","anchorToItem","options","includes","added","length","onlyPrepended","every","changed","some","indices","map","scrollToEnd","natural","contentBeforeRelease","itemCount","reconcileLayout","contentChanged","prepended","shouldFollow","onScroll","contentOffset","contentSize","layoutMeasurement","movedUp","geometryChanged","abs","resizingAtEnd","onLayout","onContentSizeChange","_width","onUserScrollBegin","onMomentumScrollBegin","onScrollEndDrag","velocity","onMomentumScrollEnd","onScrollToIndexFailed","failure","averageItemLength"],"sourceRoot":"../../../../src","sources":["components/MessageList/useMessageListScroll.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,eAAe,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAWtE,SAASC,qBAAqB,QAAQ,gBAAa;AAwBnD,SAASC,WAAWA,CAACC,KAAiC,EAAEC,MAAc,EAAE;EACtE,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAIE,MAAM,CAACC,QAAQ,CAACH,KAAK,CAAC,EACrD,OAAOI,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEL,KAAK,CAAC;EAC3B,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACM,QAAQ,CAAC,GAAG,CAAC,EAAE;IACpD,MAAMC,UAAU,GAAGL,MAAM,CAACM,UAAU,CAACR,KAAK,CAAC;IAC3C,IAAIE,MAAM,CAACC,QAAQ,CAACI,UAAU,CAAC,EAC7B,OAAOH,IAAI,CAACC,GAAG,CAAC,CAAC,EAAGJ,MAAM,GAAGM,UAAU,GAAI,GAAG,CAAC;EACnD;EACA,OAAO,CAAC;AACV;AAEA,OAAO,SAASE,oBAAoBA,CAAI;EACtCC,OAAO;EACPC,IAAI;EACJC,eAAe;EACfC,YAAY;EACZC,YAAY,GAAGhB,qBAAqB;EACpCiB,aAAa;EACbC,oBAAoB;EACpBC,oBAAoB;EACpBC,SAAS;EACTC,oBAAoB;EACpBC;AACyB,CAAC,EAAE;EAC5B,MAAMC,YAAY,GAAGzB,MAAM,CAAmB;IAC5C0B,KAAK,EAAE,CAAC;IACRC,QAAQ,EAAE,CAAC;IACXC,OAAO,EAAE,CAAC;IACVC,MAAM,EAAE,CAAC;IACTC,cAAc,EAAE;EAClB,CAAC,CAAC;EACF,MAAMC,OAAO,GAAG/B,MAAM,CAACgB,eAAe,CAAC;EACvC,MAAMgB,WAAW,GAAGhC,MAAM,CAAC,KAAK,CAAC;EACjC,MAAMiC,YAAY,GAAGjC,MAAM,CAAoB,EAAE,CAAC;EAClD,MAAMkC,WAAW,GAAGlC,MAAM,CAACe,IAAI,CAAC;EAChCmB,WAAW,CAACC,OAAO,GAAGpB,IAAI;EAC1B,MAAMqB,YAAY,GAAGpC,MAAM,CAAC;IAAEoB,oBAAoB;IAAEC;EAAqB,CAAC,CAAC;EAC3Ee,YAAY,CAACD,OAAO,GAAG;IAAEf,oBAAoB;IAAEC;EAAqB,CAAC;EACrE,MAAMgB,cAAc,GAAGrC,MAAM,CAAC,KAAK,CAAC;EACpC,MAAMsC,aAAa,GAAGtC,MAAM,CAAuCuC,SAAS,CAAC;EAC7E,MAAMC,aAAa,GAAGxC,MAAM,CAAC,KAAK,CAAC;EACnC,MAAMyC,QAAQ,GAAGzC,MAAM,CAAsBuC,SAAS,CAAC;EACvD,MAAM,CAACG,KAAK,EAAEC,QAAQ,CAAC,GAAG1C,QAAQ,CAAC,IAAI,CAAC;EACxC,MAAM2C,MAAM,GAAG5C,MAAM,CAAuCuC,SAAS,CAAC;EACtE,MAAMM,OAAO,GAAG7C,MAAM,CAAC,IAAI8C,GAAG,CAAgC,CAAC,CAAC;EAChE,MAAMC,cAAc,GAAG/C,MAAM,CAAC,CAAC,CAAC;EAChC,MAAMgD,YAAY,GAAGhD,MAAM,CAAC,CAAC,CAAC;EAC9B,IAAI,CAACsB,SAAS,EAAE0B,YAAY,CAACb,OAAO,GAAG,CAAC;EACxC,MAAMc,aAAa,GAAGjD,MAAM,CAAa,MAAM,CAAC,CAAC,CAAC;EAClD,MAAM,CAACkD,mBAAmB,EAAEC,sBAAsB,CAAC,GAAGlD,QAAQ,CAAS,CAAC;EACxE,MAAMmD,UAAU,GAAGpD,MAAM,CAAqBuC,SAAS,CAAC;EACxD,MAAMc,SAAS,GAAG/C,MAAM,CAACC,QAAQ,CAACW,YAAY,CAAC,GAC3CV,IAAI,CAACC,GAAG,CAAC,CAAC,EAAES,YAAY,CAAC,GACzBhB,qBAAqB;EAEzB,MAAMoD,KAAK,GAAGxD,WAAW,CAAC,MAAM;IAC9B,MAAMqC,OAAO,GAAGV,YAAY,CAACU,OAAO;IACpC,OAAOA,OAAO,CAACR,QAAQ,GAAG,CAAC,IAAIQ,OAAO,CAACL,cAAc;EACvD,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMyB,eAAe,GAAGzD,WAAW,CAAC,MAAM;IACxC,IAAI,CAACwD,KAAK,CAAC,CAAC,EAAE;IACd,MAAM;MAAE3B,QAAQ;MAAEC,OAAO;MAAEC;IAAO,CAAC,GAAGJ,YAAY,CAACU,OAAO;IAC1D,MAAMqB,IAAI,GAAG5B,OAAO,GAAGD,QAAQ,GAAGnB,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEoB,MAAM,CAAC,IAAIwB,SAAS;IAClE,IAAIG,IAAI,KAAKf,QAAQ,CAACN,OAAO,EAAE;MAC7BM,QAAQ,CAACN,OAAO,GAAGqB,IAAI;MACvBb,QAAQ,CAACa,IAAI,CAAC;MACdrC,aAAa,GAAGqC,IAAI,CAAC;IACvB;EACF,CAAC,EAAE,CAACrC,aAAa,EAAEmC,KAAK,EAAED,SAAS,CAAC,CAAC;EAErC,MAAMI,YAAY,GAAG3D,WAAW,CAAC,MAAM;IACrC8C,MAAM,CAACT,OAAO,GAAGI,SAAS;IAC1Ba,UAAU,CAACjB,OAAO,GAAGI,SAAS;IAC9BY,sBAAsB,CAACZ,SAAS,CAAC;EACnC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMmB,oBAAoB,GAAG5D,WAAW,CAAC,MAAM;IAC7C,MAAM6D,IAAI,GAAGzB,WAAW,CAACC,OAAO,CAACyB,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,MAAMC,IAAI,GACRF,IAAI,KAAKpB,SAAS,GAAGA,SAAS,GAAGM,OAAO,CAACV,OAAO,CAAC2B,GAAG,CAACH,IAAI,CAAC,EAAEE,IAAI;IAClE,IAAI,CAACA,IAAI,EAAE,OAAOtB,SAAS;IAC3B,MAAM;MAAEb,KAAK;MAAEC;IAAS,CAAC,GAAGF,YAAY,CAACU,OAAO;IAChD,OAAO3B,IAAI,CAACC,GAAG,CACboD,IAAI,CAACE,CAAC,GACJF,IAAI,CAACG,MAAM,GACXhB,YAAY,CAACb,OAAO,GACpBhC,WAAW,CAACiC,YAAY,CAACD,OAAO,CAACd,oBAAoB,EAAEK,KAAK,CAAC,EAC/DvB,WAAW,CAACiC,YAAY,CAACD,OAAO,CAACf,oBAAoB,EAAEO,QAAQ,CACjE,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMsC,WAAW,GAAGnE,WAAW,CAAC,MAAM;IACpC,MAAMoE,OAAO,GAAGtB,MAAM,CAACT,OAAO;IAC9B,IAAI,CAAC+B,OAAO,IAAI,CAACZ,KAAK,CAAC,CAAC,EAAE;IAC1B,MAAMa,KAAK,GAAGjC,WAAW,CAACC,OAAO,CAACiC,OAAO,CAACF,OAAO,CAACG,GAAG,CAAC;IACtD,IAAIF,KAAK,GAAG,CAAC,EAAE;IACfD,OAAO,CAACI,IAAI,GAAG,IAAI;IACnB,MAAMC,QAAQ,GAAG1B,OAAO,CAACV,OAAO,CAAC2B,GAAG,CAACI,OAAO,CAACG,GAAG,CAAC;IACjD,IAAI,CAACE,QAAQ,EAAEV,IAAI,IAAIU,QAAQ,CAACC,KAAK,KAAKjC,SAAS,EAAE;MACnD;MACA;MACA,IAAI2B,OAAO,CAACO,SAAS,KAAK1B,cAAc,CAACZ,OAAO,EAAE;QAChD+B,OAAO,CAACO,SAAS,GAAG1B,cAAc,CAACZ,OAAO;QAC1CrB,OAAO,CAACqB,OAAO,EAAEuC,aAAa,CAAC;UAC7BP,KAAK;UACLQ,QAAQ,EAAE,KAAK;UACfC,YAAY,EAAE;QAChB,CAAC,CAAC;MACJ;MACA;IACF;IACA,MAAM;MAAEjD,QAAQ;MAAEC;IAAQ,CAAC,GAAGH,YAAY,CAACU,OAAO;IAClD,MAAMN,MAAM,GAAGrB,IAAI,CAACC,GAAG,CACrB,CAAC,EACD8D,QAAQ,CAACV,IAAI,CAACE,CAAC,GAAGQ,QAAQ,CAACC,KAAK,GAAGN,OAAO,CAACW,SAC7C,CAAC;IACD,MAAMC,OAAO,GAAGtE,IAAI,CAACC,GAAG,CACtBoB,MAAM,GAAGF,QAAQ,EACjBxB,WAAW,CAACiC,YAAY,CAACD,OAAO,CAACf,oBAAoB,EAAEO,QAAQ,CACjE,CAAC;IACDyB,UAAU,CAACjB,OAAO,GAAG2C,OAAO;IAC5B3B,sBAAsB,CAAC2B,OAAO,CAAC;IAC/B;IACA;IACA,IAAIlD,OAAO,GAAG,GAAG,GAAGkD,OAAO,EAAE;IAC7B,IAAIZ,OAAO,CAACrC,MAAM,KAAKA,MAAM,IAAIqC,OAAO,CAACvC,QAAQ,KAAKA,QAAQ,EAAE;IAChEuC,OAAO,CAACrC,MAAM,GAAGA,MAAM;IACvBqC,OAAO,CAACvC,QAAQ,GAAGA,QAAQ;IAC3BuC,OAAO,CAACa,OAAO,GAAG,KAAK;IACvB/C,WAAW,CAACG,OAAO,GAAG,IAAI;IAC1BrB,OAAO,CAACqB,OAAO,EAAE6C,cAAc,CAAC;MAAEnD,MAAM;MAAE8C,QAAQ,EAAET,OAAO,CAACS;IAAS,CAAC,CAAC;IACvElD,YAAY,CAACU,OAAO,CAACN,MAAM,GAAGA,MAAM;IACpC0B,eAAe,CAAC,CAAC;EACnB,CAAC,EAAE,CAACzC,OAAO,EAAEyC,eAAe,EAAED,KAAK,CAAC,CAAC;EAErC,MAAM2B,YAAY,GAAGnF,WAAW,CAC9B,CAACuE,GAAW,EAAEF,KAAa,EAAEN,IAAqB,KAAK;IACrD,IACE3B,WAAW,CAACC,OAAO,CAACgC,KAAK,CAAC,KAAKE,GAAG,IAClC,CAAC/D,MAAM,CAACC,QAAQ,CAACsD,IAAI,CAACE,CAAC,CAAC,IACxB,CAACzD,MAAM,CAACC,QAAQ,CAACsD,IAAI,CAACG,MAAM,CAAC,EAE7B;IACF,MAAMkB,QAAQ,GAAGrC,OAAO,CAACV,OAAO,CAAC2B,GAAG,CAACO,GAAG,CAAC;IACzC,IACEa,QAAQ,EAAEf,KAAK,KAAKA,KAAK,IACzBe,QAAQ,CAACrB,IAAI,EAAEsB,CAAC,KAAKtB,IAAI,CAACsB,CAAC,IAC3BD,QAAQ,CAACrB,IAAI,CAACE,CAAC,KAAKF,IAAI,CAACE,CAAC,IAC1BmB,QAAQ,CAACrB,IAAI,CAACnC,KAAK,KAAKmC,IAAI,CAACnC,KAAK,IAClCwD,QAAQ,CAACrB,IAAI,CAACG,MAAM,KAAKH,IAAI,CAACG,MAAM,EAEpCjB,cAAc,CAACZ,OAAO,EAAE;IAC1BU,OAAO,CAACV,OAAO,CAACiD,GAAG,CAACf,GAAG,EAAE;MAAE,GAAGa,QAAQ;MAAEf,KAAK;MAAEN;IAAK,CAAC,CAAC;IACtDZ,aAAa,CAACd,OAAO,CAAC,CAAC;EACzB,CAAC,EACD,EACF,CAAC;EACD,MAAMkD,YAAY,GAAGvF,WAAW,CAC9B,CAACuE,GAAW,EAAEF,KAAa,EAAEK,KAAa,KAAK;IAC7C,IAAItC,WAAW,CAACC,OAAO,CAACgC,KAAK,CAAC,KAAKE,GAAG,IAAI,CAAC/D,MAAM,CAACC,QAAQ,CAACiE,KAAK,CAAC,EAAE;IACnE,MAAMU,QAAQ,GAAGrC,OAAO,CAACV,OAAO,CAAC2B,GAAG,CAACO,GAAG,CAAC;IACzC,IAAIa,QAAQ,EAAEf,KAAK,KAAKA,KAAK,IAAIe,QAAQ,CAACV,KAAK,KAAKA,KAAK,EACvDzB,cAAc,CAACZ,OAAO,EAAE;IAC1BU,OAAO,CAACV,OAAO,CAACiD,GAAG,CAACf,GAAG,EAAE;MAAE,GAAGa,QAAQ;MAAEf,KAAK;MAAEK;IAAM,CAAC,CAAC;IACvDvB,aAAa,CAACd,OAAO,CAAC,CAAC;EACzB,CAAC,EACD,EACF,CAAC;EACD,MAAMmD,aAAa,GAAGxF,WAAW,CAAC,CAACuE,GAAW,EAAEF,KAAa,KAAK;IAChE,IAAItB,OAAO,CAACV,OAAO,CAAC2B,GAAG,CAACO,GAAG,CAAC,EAAEF,KAAK,KAAKA,KAAK,EAAE;MAC7CtB,OAAO,CAACV,OAAO,CAACoD,MAAM,CAAClB,GAAG,CAAC;MAC3BtB,cAAc,CAACZ,OAAO,EAAE;IAC1B;EACF,CAAC,EAAE,EAAE,CAAC;EACN,MAAMqD,cAAc,GAAG1F,WAAW,CAAE2F,KAAwB,IAAK;IAC/DzC,YAAY,CAACb,OAAO,GAAGsD,KAAK,CAACC,WAAW,CAACC,MAAM,CAAC3B,MAAM;IACtDf,aAAa,CAACd,OAAO,CAAC,CAAC;EACzB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMyD,YAAY,GAAG9F,WAAW,CAC9B,CAACuE,GAAW,EAAEwB,OAAiC,GAAG,CAAC,CAAC,KAAK;IACvDvD,aAAa,CAACH,OAAO,GAAGI,SAAS;IACjCf,yBAAyB,CAAC,CAAC;IAC3BgB,aAAa,CAACL,OAAO,GAAG,KAAK;IAC7BS,MAAM,CAACT,OAAO,GAAG;MACfkC,GAAG;MACHQ,SAAS,EAAEvE,MAAM,CAACC,QAAQ,CAACsF,OAAO,CAAChB,SAAS,CAAC,GACzCrE,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEoF,OAAO,CAAChB,SAAU,CAAC,GAC/B,CAAC;MACLF,QAAQ,EAAEkB,OAAO,CAAClB,QAAQ,IAAI,IAAI;MAClCL,IAAI,EAAEpC,WAAW,CAACC,OAAO,CAAC2D,QAAQ,CAACzB,GAAG;IACxC,CAAC;IACDjB,UAAU,CAACjB,OAAO,GAAG,CAAC;IACtBgB,sBAAsB,CAAC,CAAC,CAAC;IACzBc,WAAW,CAAC,CAAC;EACf,CAAC,EACD,CAACA,WAAW,EAAEzC,yBAAyB,CACzC,CAAC;EAEDzB,eAAe,CAAC,MAAM;IACpB,MAAMmF,QAAQ,GAAGjD,YAAY,CAACE,OAAO;IACrC,MAAM4D,KAAK,GAAGhF,IAAI,CAACiF,MAAM,GAAGd,QAAQ,CAACc,MAAM;IAC3C,MAAMC,aAAa,GACjBf,QAAQ,CAACc,MAAM,GAAG,CAAC,IACnBD,KAAK,GAAG,CAAC,IACTb,QAAQ,CAACgB,KAAK,CAAC,CAAC7B,GAAG,EAAEF,KAAK,KAAKpD,IAAI,CAACoD,KAAK,GAAG4B,KAAK,CAAC,KAAK1B,GAAG,CAAC;IAC7D,MAAM8B,OAAO,GACXpF,IAAI,CAACiF,MAAM,KAAKd,QAAQ,CAACc,MAAM,IAC/BjF,IAAI,CAACqF,IAAI,CAAC,CAAC/B,GAAG,EAAEF,KAAK,KAAKE,GAAG,KAAKa,QAAQ,CAACf,KAAK,CAAC,CAAC;IACpD,IAAIgC,OAAO,EAAE;MACXpD,cAAc,CAACZ,OAAO,EAAE;MACxBE,cAAc,CAACF,OAAO,GAAG8D,aAAa;MACtC,MAAMI,OAAO,GAAG,IAAIvD,GAAG,CAAC/B,IAAI,CAACuF,GAAG,CAAC,CAACjC,GAAG,EAAEF,KAAK,KAAK,CAACE,GAAG,EAAEF,KAAK,CAAC,CAAC,CAAC;MAC/D,KAAK,MAAM,CAACE,GAAG,EAAEsB,MAAM,CAAC,IAAI9C,OAAO,CAACV,OAAO,EAAE;QAC3C,MAAMgC,KAAK,GAAGkC,OAAO,CAACvC,GAAG,CAACO,GAAG,CAAC;QAC9B,IAAIF,KAAK,KAAK5B,SAAS,EAAEM,OAAO,CAACV,OAAO,CAACoD,MAAM,CAAClB,GAAG,CAAC,CAAC,KAChD,IAAIF,KAAK,KAAKwB,MAAM,CAACxB,KAAK,EAAE;UAC/B;UACA;UACAtB,OAAO,CAACV,OAAO,CAACiD,GAAG,CAACf,GAAG,EAAE;YAAEF,KAAK;YAAEK,KAAK,EAAEmB,MAAM,CAACnB;UAAM,CAAC,CAAC;QAC1D;MACF;IACF;IACAvC,YAAY,CAACE,OAAO,GAAGpB,IAAI;IAC3B,MAAMmD,OAAO,GAAGtB,MAAM,CAACT,OAAO;IAC9B,IAAI+B,OAAO,EAAE;MACX,IAAInD,IAAI,CAAC+E,QAAQ,CAAC5B,OAAO,CAACG,GAAG,CAAC,EAAEH,OAAO,CAACI,IAAI,GAAG,IAAI,CAAC,KAC/C,IAAIJ,OAAO,CAACI,IAAI,EAAE;QACrBb,YAAY,CAAC,CAAC;QACd;MACF;MACA;MACA;MACAjC,yBAAyB,CAAC,CAAC;MAC3ByC,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACA,WAAW,EAAER,YAAY,EAAEjC,yBAAyB,EAAET,IAAI,CAAC,CAAC;EAEhE,MAAMwF,WAAW,GAAGzG,WAAW,CAC7B,CAAC+F,OAAiC,GAAG,CAAC,CAAC,KAAK;IAC1CrE,yBAAyB,CAAC,CAAC;IAC3B,MAAM0C,OAAiC,GAAG;MACxCS,QAAQ,EAAEkB,OAAO,CAAClB,QAAQ,IAAI;IAChC,CAAC;IACD,MAAM6B,OAAO,GAAG9C,oBAAoB,CAAC,CAAC;IACtC,MAAMoB,OAAO,GAAG1B,UAAU,CAACjB,OAAO;IAClC,IACE2C,OAAO,KAAKvC,SAAS,IACrBiE,OAAO,KAAKjE,SAAS,IACrBd,YAAY,CAACU,OAAO,CAACP,OAAO,IAAIkD,OAAO,GAAG,GAAG,IAC7C0B,OAAO,GAAG,GAAG,GAAG/E,YAAY,CAACU,OAAO,CAACP,OAAO,EAC5C;MACAsC,OAAO,CAACuC,oBAAoB,GAAGhF,YAAY,CAACU,OAAO,CAACP,OAAO;IAC7D;IACA6B,YAAY,CAAC,CAAC;IACd,IAAI,CAACH,KAAK,CAAC,CAAC,IAAIY,OAAO,CAACuC,oBAAoB,KAAKlE,SAAS,EAAE;MAC1DD,aAAa,CAACH,OAAO,GAAG+B,OAAO;MAC/B;IACF;IACA5B,aAAa,CAACH,OAAO,GAAGI,SAAS;IACjCzB,OAAO,CAACqB,OAAO,EAAE6C,cAAc,CAAC;MAC9BnD,MAAM,EAAErB,IAAI,CAACC,GAAG,CACd,CAAC,EACDgB,YAAY,CAACU,OAAO,CAACP,OAAO,GAAGH,YAAY,CAACU,OAAO,CAACR,QACtD,CAAC;MACDgD,QAAQ,EAAET,OAAO,CAACS;IACpB,CAAC,CAAC;IACF,IAAIlD,YAAY,CAACU,OAAO,CAACP,OAAO,IAAIH,YAAY,CAACU,OAAO,CAACR,QAAQ,EAC/D4B,eAAe,CAAC,CAAC;EACrB,CAAC,EACD,CACEE,YAAY,EACZjC,yBAAyB,EACzBV,OAAO,EACP4C,oBAAoB,EACpBH,eAAe,EACfD,KAAK,CAET,CAAC;EAED,MAAMoD,SAAS,GAAG3F,IAAI,CAACiF,MAAM;EAC7B,MAAMW,eAAe,GAAG7G,WAAW,CAChC8G,cAAuB,IAAK;IAC3B,IAAI,CAACtD,KAAK,CAAC,CAAC,EAAE;IACd,IAAIV,MAAM,CAACT,OAAO,EAAE;MAClB8B,WAAW,CAAC,CAAC;MACb;IACF;IACA,MAAMC,OAAO,GAAG5B,aAAa,CAACH,OAAO;IACrC,IACE+B,OAAO,EAAEuC,oBAAoB,KAAKlE,SAAS,IAC3Cd,YAAY,CAACU,OAAO,CAACP,OAAO,KAAKsC,OAAO,CAACuC,oBAAoB,IAC7D,CAAC/C,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAIQ,OAAO,CAACuC,oBAAoB,EAE5D;IACF,IAAIC,SAAS,GAAG,CAAC,IAAI,CAAC1E,WAAW,CAACG,OAAO,EAAE;MACzCH,WAAW,CAACG,OAAO,GAAG,IAAI;MAC1B,IAAI+B,OAAO,IAAInC,OAAO,CAACI,OAAO,KAAK,KAAK,EAAE;QACxCoE,WAAW,CAACrC,OAAO,IAAI;UAAES,QAAQ,EAAE;QAAM,CAAC,CAAC;QAC3C;MACF;MACApB,eAAe,CAAC,CAAC;MACjB;IACF;IACA,IAAIW,OAAO,EAAE;MACXqC,WAAW,CAACrC,OAAO,CAAC;MACpB;IACF;IACA,MAAM2C,SAAS,GAAGxE,cAAc,CAACF,OAAO;IACxC,IAAIyE,cAAc,EAAEvE,cAAc,CAACF,OAAO,GAAG,KAAK;IAClD,MAAM2E,YAAY,GAChB9E,WAAW,CAACG,OAAO,IACnBlB,YAAY,KAAK,WAAW,IAC5B,CAACuB,aAAa,CAACL,OAAO,IACtB,CAAC0E,SAAS,IACV,CAACtF,oBAAoB,CAACY,OAAO,IAC7BM,QAAQ,CAACN,OAAO;IAClB,IAAI2E,YAAY,EAAEP,WAAW,CAAC;MAAE5B,QAAQ,EAAE;IAAM,CAAC,CAAC,CAAC,KAC9CpB,eAAe,CAAC,CAAC;EACxB,CAAC,EACD,CACEU,WAAW,EACXhD,YAAY,EACZyF,SAAS,EACThD,oBAAoB,EACpBnC,oBAAoB,EACpBgC,eAAe,EACfD,KAAK,EACLiD,WAAW,CAEf,CAAC;EAEDtD,aAAa,CAACd,OAAO,GAAG,MAAM;IAC5B,IAAIS,MAAM,CAACT,OAAO,EAAE8B,WAAW,CAAC,CAAC,CAAC,KAC7B,IAAI3B,aAAa,CAACH,OAAO,EAAEwE,eAAe,CAAC,KAAK,CAAC;EACxD,CAAC;EAED,MAAMI,QAAQ,GAAGjH,WAAW,CACzB2F,KAA8C,IAAK;IAClD,MAAM;MAAEuB,aAAa;MAAEC,WAAW;MAAEC;IAAkB,CAAC,GACrDzB,KAAK,CAACC,WAAW;IACnB,MAAMyB,OAAO,GAAGH,aAAa,CAACjD,CAAC,GAAGtC,YAAY,CAACU,OAAO,CAACN,MAAM;IAC7D,MAAMuF,eAAe,GACnB3F,YAAY,CAACU,OAAO,CAACP,OAAO,KAAKqF,WAAW,CAACjD,MAAM,IACnDvC,YAAY,CAACU,OAAO,CAACR,QAAQ,KAAKuF,iBAAiB,CAAClD,MAAM;IAC5D,MAAME,OAAO,GAAGtB,MAAM,CAACT,OAAO;IAC9B,IAAI+B,OAAO,EAAErC,MAAM,KAAKU,SAAS,EAAE;MACjC,IAAI/B,IAAI,CAAC6G,GAAG,CAACL,aAAa,CAACjD,CAAC,GAAGG,OAAO,CAACrC,MAAM,CAAC,IAAI,GAAG,EACnDqC,OAAO,CAACa,OAAO,GAAG,IAAI;MACxB;MACA;MAAA,KACK,IAAIb,OAAO,CAACa,OAAO,IAAI,CAACqC,eAAe,EAAE3D,YAAY,CAAC,CAAC;IAC9D;IACA,MAAM6D,aAAa,GACjB,CAAC1E,MAAM,CAACT,OAAO,IACfM,QAAQ,CAACN,OAAO,IAChB,CAACgF,OAAO,IACR,CAAC3E,aAAa,CAACL,OAAO,IACtBlB,YAAY,KAAK,WAAW,IAC5BmG,eAAe;IACjB3F,YAAY,CAACU,OAAO,GAAG;MACrBT,KAAK,EAAEwF,iBAAiB,CAACxF,KAAK;MAC9BG,MAAM,EAAEmF,aAAa,CAACjD,CAAC;MACvBnC,OAAO,EAAEqF,WAAW,CAACjD,MAAM;MAC3BrC,QAAQ,EAAEuF,iBAAiB,CAAClD,MAAM;MAClClC,cAAc,EAAE;IAClB,CAAC;IACD,IAAI,CAACwF,aAAa,EAAE/D,eAAe,CAAC,CAAC;EACvC,CAAC,EACD,CAACE,YAAY,EAAExC,YAAY,EAAEsC,eAAe,CAC9C,CAAC;EAED,MAAMgE,QAAQ,GAAGzH,WAAW,CAC1B,CAAC;IAAE4F,WAAW,EAAE;MAAEC;IAAO;EAAqB,CAAC,KAAK;IAClDlE,YAAY,CAACU,OAAO,CAACR,QAAQ,GAAGgE,MAAM,CAAC3B,MAAM;IAC7CvC,YAAY,CAACU,OAAO,CAACT,KAAK,GAAGiE,MAAM,CAACjE,KAAK;IACzCiF,eAAe,CAAC,KAAK,CAAC;EACxB,CAAC,EACD,CAACA,eAAe,CAClB,CAAC;EACD,MAAMa,mBAAmB,GAAG1H,WAAW,CACrC,CAAC2H,MAAc,EAAEzD,MAAc,KAAK;IAClCvC,YAAY,CAACU,OAAO,CAACP,OAAO,GAAGoC,MAAM;IACrCvC,YAAY,CAACU,OAAO,CAACL,cAAc,GAAG,IAAI;IAC1C6E,eAAe,CAAC,IAAI,CAAC;EACvB,CAAC,EACD,CAACA,eAAe,CAClB,CAAC;EACD,MAAMe,iBAAiB,GAAG5H,WAAW,CAAC,MAAM;IAC1C0C,aAAa,CAACL,OAAO,GAAG,IAAI;IAC5BG,aAAa,CAACH,OAAO,GAAGI,SAAS;IACjCkB,YAAY,CAAC,CAAC;EAChB,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAClB,MAAMkE,qBAAqB,GAAG7H,WAAW,CAAC,MAAM;IAC9C0C,aAAa,CAACL,OAAO,GAAG,IAAI;EAC9B,CAAC,EAAE,EAAE,CAAC;EACN,MAAMyF,eAAe,GAAG9H,WAAW,CAChC2F,KAA8C,IAAK;IAClDsB,QAAQ,CAACtB,KAAK,CAAC;IACf,IAAI,CAACA,KAAK,CAACC,WAAW,CAACmC,QAAQ,EAAE9D,CAAC,EAAE;MAClCvB,aAAa,CAACL,OAAO,GAAG,KAAK;MAC7BoB,eAAe,CAAC,CAAC;IACnB;EACF,CAAC,EACD,CAACwD,QAAQ,EAAExD,eAAe,CAC5B,CAAC;EACD,MAAMuE,mBAAmB,GAAGhI,WAAW,CACpC2F,KAA8C,IAAK;IAClDsB,QAAQ,CAACtB,KAAK,CAAC;IACfjD,aAAa,CAACL,OAAO,GAAG,KAAK;IAC7BoB,eAAe,CAAC,CAAC;EACnB,CAAC,EACD,CAACwD,QAAQ,EAAExD,eAAe,CAC5B,CAAC;EACD,MAAMwE,qBAAqB,GAAGjI,WAAW,CAErCkI,OAEI,IACD;IACH,MAAM9D,OAAO,GAAGtB,MAAM,CAACT,OAAO;IAC9B,IACE,CAAC+B,OAAO,IACRhC,WAAW,CAACC,OAAO,CAACiC,OAAO,CAACF,OAAO,CAACG,GAAG,CAAC,KAAK2D,OAAO,CAAC7D,KAAK,IAC1D,CAAC7D,MAAM,CAACC,QAAQ,CAACyH,OAAO,CAACC,iBAAiB,CAAC,IAC3CD,OAAO,CAACC,iBAAiB,IAAI,CAAC,EAE9B;IACFnH,OAAO,CAACqB,OAAO,EAAE6C,cAAc,CAAC;MAC9BnD,MAAM,EAAEmG,OAAO,CAAC7D,KAAK,GAAG6D,OAAO,CAACC,iBAAiB;MACjDtD,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ,CAAC,EACD,CAAC7D,OAAO,CACV,CAAC;EAED,OAAO;IACL4B,KAAK;IACLQ,mBAAmB;IACnB0C,YAAY;IACZX,YAAY;IACZI,YAAY;IACZC,aAAa;IACbE,cAAc;IACduC,qBAAqB;IACrBxB,WAAW;IACXgB,QAAQ;IACRC,mBAAmB;IACnBT,QAAQ;IACRW,iBAAiB;IACjBC,qBAAqB;IACrBC,eAAe;IACfE;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ import { Button, Icon, useColors, useThemedStyles } from '@unif/react-native-des
|
|
|
6
6
|
import { PROCESS_STATUS_ICONS, PROCESS_STATUS_LABELS } from "./constants.js";
|
|
7
7
|
import { createStyles } from "./styles.js";
|
|
8
8
|
import { ProcessCompactStep } from "./ProcessCompactStep.js";
|
|
9
|
+
import { ProcessTimelineStep } from "./ProcessTimelineStep.js";
|
|
9
10
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
10
11
|
function idsWithDetails(ids, steps) {
|
|
11
12
|
const availableIds = new Set(steps.filter(step => step.details != null).map(step => step.id));
|
|
@@ -35,6 +36,7 @@ export function Process(props) {
|
|
|
35
36
|
testID,
|
|
36
37
|
variant = 'card'
|
|
37
38
|
} = props;
|
|
39
|
+
const inlineIdentity = variant === 'compact' && steps.length === 1 && props.identityPlacement === 'inline';
|
|
38
40
|
const styles = useThemedStyles(createStyles);
|
|
39
41
|
const colors = useColors();
|
|
40
42
|
const isControlled = props.expandedIds !== undefined;
|
|
@@ -51,22 +53,30 @@ export function Process(props) {
|
|
|
51
53
|
props.onExpandedChange?.(nextIds);
|
|
52
54
|
};
|
|
53
55
|
return /*#__PURE__*/_jsxs(View, {
|
|
54
|
-
style: [variant === 'compact' ? styles.compactRoot : styles.root, style],
|
|
56
|
+
style: [variant === 'compact' ? styles.compactRoot : variant === 'timeline' ? styles.timelineRoot : styles.root, style],
|
|
55
57
|
testID: testID,
|
|
56
|
-
children: [title || identity ? /*#__PURE__*/_jsxs(View, {
|
|
58
|
+
children: [title || identity && !inlineIdentity ? /*#__PURE__*/_jsxs(View, {
|
|
57
59
|
style: styles.heading,
|
|
58
|
-
children: [identity, title ? /*#__PURE__*/_jsx(Text, {
|
|
60
|
+
children: [!inlineIdentity ? identity : null, title ? /*#__PURE__*/_jsx(Text, {
|
|
59
61
|
style: styles.headingTitle,
|
|
60
62
|
children: title
|
|
61
63
|
}) : null]
|
|
62
64
|
}) : null, /*#__PURE__*/_jsx(View, {
|
|
63
|
-
style: variant === 'compact' ? styles.compactSteps : styles.steps,
|
|
65
|
+
style: variant === 'compact' ? styles.compactSteps : variant === 'timeline' ? undefined : styles.steps,
|
|
64
66
|
children: steps.map((step, index) => {
|
|
65
|
-
const statusLabel = PROCESS_STATUS_LABELS[step.status];
|
|
67
|
+
const statusLabel = step.statusText ?? PROCESS_STATUS_LABELS[step.status];
|
|
66
68
|
const elapsed = formatElapsedMs(step.elapsedMs);
|
|
67
69
|
const isExpanded = expandedIds.includes(step.id);
|
|
70
|
+
if (variant === 'timeline') return /*#__PURE__*/_jsx(ProcessTimelineStep, {
|
|
71
|
+
step: step,
|
|
72
|
+
last: index === steps.length - 1,
|
|
73
|
+
expanded: isExpanded,
|
|
74
|
+
elapsed: elapsed,
|
|
75
|
+
onToggle: () => toggleDetails(step.id)
|
|
76
|
+
}, step.id);
|
|
68
77
|
if (variant === 'compact') return /*#__PURE__*/_jsx(ProcessCompactStep, {
|
|
69
78
|
step: step,
|
|
79
|
+
identity: inlineIdentity ? identity : undefined,
|
|
70
80
|
expanded: isExpanded,
|
|
71
81
|
elapsed: elapsed,
|
|
72
82
|
onToggle: () => toggleDetails(step.id)
|