@oxy.so/bloom 4.7.0 → 4.9.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.
- package/docs/adoption-matrix.mdx +2 -2
- package/docs/ai-chat.mdx +21 -0
- package/docs/settings-modal.mdx +1 -1
- package/lib/commonjs/ai-chat/AiChatContainer.js +384 -77
- package/lib/commonjs/ai-chat/AiChatContainer.js.map +1 -1
- package/lib/commonjs/ai-chat/context.js +28 -1
- package/lib/commonjs/ai-chat/context.js.map +1 -1
- package/lib/commonjs/ai-chat/index.js +6 -0
- package/lib/commonjs/ai-chat/index.js.map +1 -1
- package/lib/commonjs/ai-chat/index.web.js +6 -0
- package/lib/commonjs/ai-chat/index.web.js.map +1 -1
- package/lib/commonjs/settings-modal/SettingsStorage.js +1 -1
- package/lib/commonjs/settings-modal/SettingsStorage.js.map +1 -1
- package/lib/module/ai-chat/AiChatContainer.js +386 -79
- package/lib/module/ai-chat/AiChatContainer.js.map +1 -1
- package/lib/module/ai-chat/context.js +26 -0
- package/lib/module/ai-chat/context.js.map +1 -1
- package/lib/module/ai-chat/index.js +1 -1
- package/lib/module/ai-chat/index.js.map +1 -1
- package/lib/module/ai-chat/index.web.js +1 -1
- package/lib/module/ai-chat/index.web.js.map +1 -1
- package/lib/module/settings-modal/SettingsStorage.js +1 -1
- package/lib/module/settings-modal/SettingsStorage.js.map +1 -1
- package/lib/typescript/commonjs/ai-chat/AiChatContainer.d.ts +24 -1
- package/lib/typescript/commonjs/ai-chat/AiChatContainer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ai-chat/context.d.ts +32 -0
- package/lib/typescript/commonjs/ai-chat/context.d.ts.map +1 -1
- package/lib/typescript/commonjs/ai-chat/index.d.ts +2 -2
- package/lib/typescript/commonjs/ai-chat/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ai-chat/index.web.d.ts +2 -2
- package/lib/typescript/commonjs/ai-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/ai-chat/types.d.ts +17 -0
- package/lib/typescript/commonjs/ai-chat/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/settings-modal/SettingsStorage.d.ts.map +1 -1
- package/lib/typescript/commonjs/settings-modal/types.d.ts +2 -1
- package/lib/typescript/commonjs/settings-modal/types.d.ts.map +1 -1
- package/lib/typescript/module/ai-chat/AiChatContainer.d.ts +24 -1
- package/lib/typescript/module/ai-chat/AiChatContainer.d.ts.map +1 -1
- package/lib/typescript/module/ai-chat/context.d.ts +32 -0
- package/lib/typescript/module/ai-chat/context.d.ts.map +1 -1
- package/lib/typescript/module/ai-chat/index.d.ts +2 -2
- package/lib/typescript/module/ai-chat/index.d.ts.map +1 -1
- package/lib/typescript/module/ai-chat/index.web.d.ts +2 -2
- package/lib/typescript/module/ai-chat/index.web.d.ts.map +1 -1
- package/lib/typescript/module/ai-chat/types.d.ts +17 -0
- package/lib/typescript/module/ai-chat/types.d.ts.map +1 -1
- package/lib/typescript/module/settings-modal/SettingsStorage.d.ts.map +1 -1
- package/lib/typescript/module/settings-modal/types.d.ts +2 -1
- package/lib/typescript/module/settings-modal/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ai-chat/AiChatContainer.tsx +343 -59
- package/src/ai-chat/context.ts +39 -0
- package/src/ai-chat/index.ts +2 -2
- package/src/ai-chat/index.web.ts +2 -2
- package/src/ai-chat/types.ts +17 -0
- package/src/settings-modal/SettingsStorage.tsx +6 -4
- package/src/settings-modal/types.ts +2 -1
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { forwardRef, useCallback, useImperativeHandle, useMemo, useRef } from 'react';
|
|
4
|
-
import { ScrollView, View } from 'react-native';
|
|
3
|
+
import React, { forwardRef, useCallback, useContext, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { ScrollView, StyleSheet, View } from 'react-native';
|
|
5
|
+
import Animated, { useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
|
|
5
6
|
import { AgentThinking } from "../agent-thinking/index.js";
|
|
6
7
|
import { Breadcrumb, BreadcrumbItem } from "../breadcrumb/index.js";
|
|
7
8
|
import { RiFolderLine } from "../icons/remix/RiFolderLine.js";
|
|
8
9
|
import { RiMoreFill } from "../icons/remix/RiMoreFill.js";
|
|
9
10
|
import { RiShare2Line } from "../icons/remix/RiShare2Line.js";
|
|
11
|
+
import { EdgeScrim, SCRIM_TAIL_RATIO } from "../page-header/EdgeScrim.js";
|
|
12
|
+
import { parseRgba } from "../theme/color-utils.js";
|
|
13
|
+
import { useIsomorphicLayoutEffect } from "../theme/use-isomorphic-layout-effect.js";
|
|
10
14
|
import { GlyphAction } from "./AiChatControls.js";
|
|
15
|
+
import { AiChatFloatingChromeContext } from "./context.js";
|
|
11
16
|
import { CONTAINER_RADIUS, dataHook, IS_WEB, useAiChatPalette, useAiChatWebCss } from "./shared.js";
|
|
12
17
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
18
|
const DEFAULT_LABELS = {
|
|
@@ -16,6 +21,22 @@ const DEFAULT_LABELS = {
|
|
|
16
21
|
more: 'More options'
|
|
17
22
|
};
|
|
18
23
|
|
|
24
|
+
/** The thread's own top padding: the gap between the header and the first turn. */
|
|
25
|
+
const THREAD_PAD_TOP = 16;
|
|
26
|
+
/**
|
|
27
|
+
* `floatingChrome`: the footer's fade strip, px — the footer's top padding, so
|
|
28
|
+
* the last turn at rest ends where the fade begins, and the distance over which
|
|
29
|
+
* the bottom fade ramps in as the transcript slides under it.
|
|
30
|
+
*/
|
|
31
|
+
const FOOTER_FADE = 24;
|
|
32
|
+
/** Below this many px of overlap an edge counts as clear (sub-pixel scroll noise). */
|
|
33
|
+
const EDGE_THRESHOLD = 1;
|
|
34
|
+
const HIDDEN_FROM_A11Y = {
|
|
35
|
+
'aria-hidden': true,
|
|
36
|
+
accessibilityElementsHidden: true,
|
|
37
|
+
importantForAccessibility: 'no-hide-descendants'
|
|
38
|
+
};
|
|
39
|
+
|
|
19
40
|
/**
|
|
20
41
|
* The AI chat's centre column: the centre column of the AI chat template.
|
|
21
42
|
*
|
|
@@ -33,6 +54,22 @@ const DEFAULT_LABELS = {
|
|
|
33
54
|
*
|
|
34
55
|
* `project` is optional: without one the breadcrumb is the chat's own crumb
|
|
35
56
|
* alone, since a chat that belongs to nothing must not have to invent a folder.
|
|
57
|
+
*
|
|
58
|
+
* `floatingChrome` changes the geometry, not the parts:
|
|
59
|
+
*
|
|
60
|
+
* thread the `children` fill the whole card, under everything below
|
|
61
|
+
* header the `header` slot + breadcrumb row, absolute at the top, no band;
|
|
62
|
+
* an edge scrim of the surface (opaque at the top, gone
|
|
63
|
+
* `SCRIM_TAIL_RATIO` below the block) fades in over the first 16px
|
|
64
|
+
* of transcript scrolled under it
|
|
65
|
+
* footer absolute at the bottom, pt 24 instead of 12: the 24px strip is a
|
|
66
|
+
* scrim ramp and the rest is solid surface, faded in over the first
|
|
67
|
+
* 24px of transcript below the fold
|
|
68
|
+
*
|
|
69
|
+
* Both blocks are `pointerEvents="box-none"`, so the transcript under their
|
|
70
|
+
* empty space still scrolls and takes clicks. The measured heights reach an
|
|
71
|
+
* `AiChatThread` child through context (its content padding) and any other
|
|
72
|
+
* child through `useAiChatChromeInsets()`.
|
|
36
73
|
*/
|
|
37
74
|
export function AiChatContainer({
|
|
38
75
|
project,
|
|
@@ -49,6 +86,7 @@ export function AiChatContainer({
|
|
|
49
86
|
workingLabel,
|
|
50
87
|
background,
|
|
51
88
|
surface = true,
|
|
89
|
+
floatingChrome = false,
|
|
52
90
|
labels,
|
|
53
91
|
style,
|
|
54
92
|
testID
|
|
@@ -59,76 +97,104 @@ export function AiChatContainer({
|
|
|
59
97
|
...DEFAULT_LABELS,
|
|
60
98
|
...labels
|
|
61
99
|
}), [labels]);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
100
|
+
const hasCrumbRow = title != null || project != null || onShare || onMore || actions != null;
|
|
101
|
+
const crumbRow = hasCrumbRow ? /*#__PURE__*/_jsxs(View, {
|
|
102
|
+
pointerEvents: "box-none",
|
|
103
|
+
style: {
|
|
104
|
+
width: '100%',
|
|
105
|
+
flexDirection: 'row',
|
|
106
|
+
alignItems: 'center',
|
|
107
|
+
justifyContent: 'space-between',
|
|
108
|
+
gap: 8,
|
|
109
|
+
paddingLeft: 16,
|
|
110
|
+
paddingRight: 16,
|
|
111
|
+
paddingTop: 16
|
|
112
|
+
},
|
|
113
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
114
|
+
pointerEvents: "box-none",
|
|
75
115
|
style: {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
left: 0,
|
|
79
|
-
right: 0,
|
|
80
|
-
bottom: 0
|
|
116
|
+
minWidth: 0,
|
|
117
|
+
flex: 1
|
|
81
118
|
},
|
|
82
|
-
children:
|
|
83
|
-
|
|
119
|
+
children: title != null || project != null ? /*#__PURE__*/_jsxs(Breadcrumb, {
|
|
120
|
+
accessibilityLabel: l.breadcrumb,
|
|
121
|
+
children: [project === undefined ? null : /*#__PURE__*/_jsx(BreadcrumbItem, {
|
|
122
|
+
icon: projectIcon,
|
|
123
|
+
onPress: onProjectPress,
|
|
124
|
+
children: project
|
|
125
|
+
}), title == null ? null : /*#__PURE__*/_jsx(BreadcrumbItem, {
|
|
126
|
+
current: true,
|
|
127
|
+
children: title
|
|
128
|
+
})]
|
|
129
|
+
}) : null
|
|
130
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
84
131
|
style: {
|
|
85
|
-
|
|
132
|
+
flexShrink: 0,
|
|
86
133
|
flexDirection: 'row',
|
|
87
134
|
alignItems: 'center',
|
|
88
|
-
|
|
89
|
-
gap: 8,
|
|
90
|
-
paddingLeft: 16,
|
|
91
|
-
paddingRight: 16,
|
|
92
|
-
paddingTop: 16
|
|
135
|
+
gap: 8
|
|
93
136
|
},
|
|
94
|
-
children:
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
137
|
+
children: actions ?? /*#__PURE__*/_jsxs(_Fragment, {
|
|
138
|
+
children: [onShare ? /*#__PURE__*/_jsx(GlyphAction, {
|
|
139
|
+
icon: RiShare2Line,
|
|
140
|
+
label: l.share,
|
|
141
|
+
onPress: onShare,
|
|
142
|
+
palette: palette
|
|
143
|
+
}) : null, onMore ? /*#__PURE__*/_jsx(GlyphAction, {
|
|
144
|
+
icon: RiMoreFill,
|
|
145
|
+
label: l.more,
|
|
146
|
+
onPress: onMore,
|
|
147
|
+
palette: palette
|
|
148
|
+
}) : null]
|
|
149
|
+
})
|
|
150
|
+
})]
|
|
151
|
+
}) : null;
|
|
152
|
+
const footerBody = /*#__PURE__*/_jsxs(_Fragment, {
|
|
153
|
+
children: [working ? /*#__PURE__*/_jsx(AgentThinking, {
|
|
154
|
+
variant: "infinity",
|
|
155
|
+
label: workingLabel,
|
|
156
|
+
style: {
|
|
157
|
+
paddingLeft: 6,
|
|
158
|
+
paddingRight: 6
|
|
159
|
+
}
|
|
160
|
+
}) : null, composer]
|
|
161
|
+
});
|
|
162
|
+
const backgroundLayer = background ? /*#__PURE__*/_jsx(View, {
|
|
163
|
+
pointerEvents: "none",
|
|
164
|
+
style: {
|
|
165
|
+
position: 'absolute',
|
|
166
|
+
top: 0,
|
|
167
|
+
left: 0,
|
|
168
|
+
right: 0,
|
|
169
|
+
bottom: 0
|
|
170
|
+
},
|
|
171
|
+
children: background
|
|
172
|
+
}) : null;
|
|
173
|
+
const rootStyle = [{
|
|
174
|
+
height: '100%',
|
|
175
|
+
minWidth: 0,
|
|
176
|
+
flex: 1,
|
|
177
|
+
flexDirection: 'column',
|
|
178
|
+
overflow: 'hidden',
|
|
179
|
+
borderRadius: CONTAINER_RADIUS,
|
|
180
|
+
backgroundColor: surface ? palette.secondary : 'transparent'
|
|
181
|
+
}, style];
|
|
182
|
+
if (floatingChrome) {
|
|
183
|
+
return /*#__PURE__*/_jsx(FloatingChrome, {
|
|
184
|
+
testID: testID,
|
|
185
|
+
rootStyle: rootStyle,
|
|
186
|
+
backgroundLayer: backgroundLayer,
|
|
187
|
+
header: header,
|
|
188
|
+
crumbRow: crumbRow,
|
|
189
|
+
footerBody: footerBody,
|
|
190
|
+
fadeColor: surface ? palette.secondary : null,
|
|
191
|
+
children: children
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
195
|
+
testID: testID,
|
|
196
|
+
style: rootStyle,
|
|
197
|
+
children: [backgroundLayer, header, crumbRow, children, /*#__PURE__*/_jsx(View, {
|
|
132
198
|
style: {
|
|
133
199
|
width: '100%',
|
|
134
200
|
flexDirection: 'column',
|
|
@@ -138,14 +204,171 @@ export function AiChatContainer({
|
|
|
138
204
|
paddingTop: 12,
|
|
139
205
|
paddingBottom: 10
|
|
140
206
|
},
|
|
141
|
-
children:
|
|
142
|
-
|
|
143
|
-
|
|
207
|
+
children: footerBody
|
|
208
|
+
})]
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* `AiChatContainer floatingChrome`: the same parts, the chrome floated over the
|
|
213
|
+
* transcript. Everything it measures lives here, so the stacked path above
|
|
214
|
+
* carries none of the state.
|
|
215
|
+
*
|
|
216
|
+
* The edge opacities are shared values written from the thread's scroll
|
|
217
|
+
* reports, so a scroll frame re-renders nothing; the booleans only mount and
|
|
218
|
+
* unmount the scrims, and change once per crossing. Same model as the
|
|
219
|
+
* sidebar's `SidebarScrollArea`, whose scrim this reuses.
|
|
220
|
+
*/
|
|
221
|
+
function FloatingChrome({
|
|
222
|
+
testID,
|
|
223
|
+
rootStyle,
|
|
224
|
+
backgroundLayer,
|
|
225
|
+
header,
|
|
226
|
+
crumbRow,
|
|
227
|
+
footerBody,
|
|
228
|
+
fadeColor,
|
|
229
|
+
children
|
|
230
|
+
}) {
|
|
231
|
+
const [insets, setInsets] = useState({
|
|
232
|
+
top: 0,
|
|
233
|
+
bottom: 0
|
|
234
|
+
});
|
|
235
|
+
const [edges, setEdges] = useState({
|
|
236
|
+
top: false,
|
|
237
|
+
bottom: false
|
|
238
|
+
});
|
|
239
|
+
const topFade = useSharedValue(0);
|
|
240
|
+
const bottomFade = useSharedValue(0);
|
|
241
|
+
const onHeaderLayout = useCallback(event => {
|
|
242
|
+
const top = Math.round(event.nativeEvent.layout.height);
|
|
243
|
+
setInsets(previous => previous.top === top ? previous : {
|
|
244
|
+
...previous,
|
|
245
|
+
top
|
|
246
|
+
});
|
|
247
|
+
}, []);
|
|
248
|
+
const onFooterLayout = useCallback(event => {
|
|
249
|
+
const bottom = Math.round(event.nativeEvent.layout.height);
|
|
250
|
+
setInsets(previous => previous.bottom === bottom ? previous : {
|
|
251
|
+
...previous,
|
|
252
|
+
bottom
|
|
253
|
+
});
|
|
254
|
+
}, []);
|
|
255
|
+
const reportScroll = useCallback(({
|
|
256
|
+
offset,
|
|
257
|
+
viewport,
|
|
258
|
+
content
|
|
259
|
+
}) => {
|
|
260
|
+
const range = Math.max(0, content - viewport);
|
|
261
|
+
const y = Math.max(0, Math.min(offset, range));
|
|
262
|
+
const overflow = viewport > 0 && range > EDGE_THRESHOLD;
|
|
263
|
+
// The first turn rests THREAD_PAD_TOP below the header and the last one
|
|
264
|
+
// right on the footer's fade strip, so the overlap starts at the first px
|
|
265
|
+
// scrolled and each ramp spans the gap it is closing.
|
|
266
|
+
const top = overflow && y > EDGE_THRESHOLD;
|
|
267
|
+
const bottom = overflow && range - y > EDGE_THRESHOLD;
|
|
268
|
+
topFade.value = overflow ? Math.min(1, y / THREAD_PAD_TOP) : 0;
|
|
269
|
+
bottomFade.value = overflow ? Math.min(1, (range - y) / FOOTER_FADE) : 0;
|
|
270
|
+
setEdges(previous => previous.top === top && previous.bottom === bottom ? previous : {
|
|
271
|
+
top,
|
|
272
|
+
bottom
|
|
273
|
+
});
|
|
274
|
+
}, [topFade, bottomFade]);
|
|
275
|
+
const chrome = useMemo(() => ({
|
|
276
|
+
insets,
|
|
277
|
+
reportScroll
|
|
278
|
+
}), [insets, reportScroll]);
|
|
279
|
+
|
|
280
|
+
// SVG never receives alpha inside stopColor; it travels on the containing view.
|
|
281
|
+
const parsed = fadeColor ? parseRgba(fadeColor) : null;
|
|
282
|
+
const solid = parsed ? `rgb(${parsed.r}, ${parsed.g}, ${parsed.b})` : fadeColor;
|
|
283
|
+
const alpha = parsed?.a ?? 1;
|
|
284
|
+
const topStyle = useAnimatedStyle(() => ({
|
|
285
|
+
opacity: topFade.value * alpha
|
|
286
|
+
}), [topFade, alpha]);
|
|
287
|
+
const bottomStyle = useAnimatedStyle(() => ({
|
|
288
|
+
opacity: bottomFade.value * alpha
|
|
289
|
+
}), [bottomFade, alpha]);
|
|
290
|
+
const prefix = testID ?? 'ai-chat';
|
|
291
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
292
|
+
testID: testID,
|
|
293
|
+
style: [rootStyle, {
|
|
294
|
+
position: 'relative'
|
|
295
|
+
}],
|
|
296
|
+
children: [backgroundLayer, /*#__PURE__*/_jsx(AiChatFloatingChromeContext.Provider, {
|
|
297
|
+
value: chrome,
|
|
298
|
+
children: children
|
|
299
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
300
|
+
testID: `${prefix}-chrome-top`,
|
|
301
|
+
pointerEvents: "box-none",
|
|
302
|
+
onLayout: onHeaderLayout,
|
|
303
|
+
style: {
|
|
304
|
+
position: 'absolute',
|
|
305
|
+
top: 0,
|
|
306
|
+
left: 0,
|
|
307
|
+
right: 0
|
|
308
|
+
},
|
|
309
|
+
children: [solid && edges.top && insets.top > 0 ? /*#__PURE__*/_jsx(Animated.View, {
|
|
310
|
+
testID: `${prefix}-fade-top`,
|
|
311
|
+
pointerEvents: "none",
|
|
312
|
+
...HIDDEN_FROM_A11Y,
|
|
313
|
+
style: [{
|
|
314
|
+
position: 'absolute',
|
|
315
|
+
top: 0,
|
|
316
|
+
left: 0,
|
|
317
|
+
right: 0,
|
|
318
|
+
// Past the block's own bottom: a ramp that ends where the layout
|
|
319
|
+
// does is a line across the transcript again.
|
|
320
|
+
height: Math.round(insets.top * (1 + SCRIM_TAIL_RATIO))
|
|
321
|
+
}, topStyle],
|
|
322
|
+
children: /*#__PURE__*/_jsx(EdgeScrim, {
|
|
323
|
+
color: solid
|
|
324
|
+
})
|
|
325
|
+
}) : null, header, crumbRow]
|
|
326
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
327
|
+
testID: `${prefix}-chrome-bottom`,
|
|
328
|
+
pointerEvents: "box-none",
|
|
329
|
+
onLayout: onFooterLayout,
|
|
330
|
+
style: {
|
|
331
|
+
position: 'absolute',
|
|
332
|
+
left: 0,
|
|
333
|
+
right: 0,
|
|
334
|
+
bottom: 0
|
|
335
|
+
},
|
|
336
|
+
children: [solid && edges.bottom ? /*#__PURE__*/_jsxs(Animated.View, {
|
|
337
|
+
testID: `${prefix}-fade-bottom`,
|
|
338
|
+
pointerEvents: "none",
|
|
339
|
+
...HIDDEN_FROM_A11Y,
|
|
340
|
+
style: [StyleSheet.absoluteFill, {
|
|
341
|
+
flexDirection: 'column'
|
|
342
|
+
}, bottomStyle],
|
|
343
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
344
|
+
style: {
|
|
345
|
+
height: FOOTER_FADE,
|
|
346
|
+
transform: [{
|
|
347
|
+
rotate: '180deg'
|
|
348
|
+
}]
|
|
349
|
+
},
|
|
350
|
+
children: /*#__PURE__*/_jsx(EdgeScrim, {
|
|
351
|
+
color: solid
|
|
352
|
+
})
|
|
353
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
354
|
+
style: {
|
|
355
|
+
flex: 1,
|
|
356
|
+
backgroundColor: solid
|
|
357
|
+
}
|
|
358
|
+
})]
|
|
359
|
+
}) : null, /*#__PURE__*/_jsx(View, {
|
|
360
|
+
pointerEvents: "box-none",
|
|
144
361
|
style: {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
362
|
+
width: '100%',
|
|
363
|
+
flexDirection: 'column',
|
|
364
|
+
gap: 10,
|
|
365
|
+
paddingLeft: 10,
|
|
366
|
+
paddingRight: 10,
|
|
367
|
+
paddingTop: FOOTER_FADE,
|
|
368
|
+
paddingBottom: 10
|
|
369
|
+
},
|
|
370
|
+
children: footerBody
|
|
371
|
+
})]
|
|
149
372
|
})]
|
|
150
373
|
});
|
|
151
374
|
}
|
|
@@ -171,6 +394,13 @@ export function AiChatContainer({
|
|
|
171
394
|
*
|
|
172
395
|
* There is no virtualization and no `scrollToIndex`: a host jumping to a turn
|
|
173
396
|
* measures its row (`onLayout`) and calls `scrollToOffset`.
|
|
397
|
+
*
|
|
398
|
+
* Inside `AiChatContainer floatingChrome` the thread still fills its parent —
|
|
399
|
+
* the whole card — and pads its CONTENT by the chrome the container measured:
|
|
400
|
+
* pt = header block + 16, pb = footer block. At rest the first and last turns
|
|
401
|
+
* sit exactly where the stacked layout puts them relative to the chrome; in
|
|
402
|
+
* motion they pass under it. It also reports its position so the container
|
|
403
|
+
* knows when to fade each edge. Anywhere else nothing of this exists.
|
|
174
404
|
*/
|
|
175
405
|
export const AiChatThread = /*#__PURE__*/forwardRef(function AiChatThread({
|
|
176
406
|
children,
|
|
@@ -185,14 +415,45 @@ export const AiChatThread = /*#__PURE__*/forwardRef(function AiChatThread({
|
|
|
185
415
|
style,
|
|
186
416
|
testID
|
|
187
417
|
}, ref) {
|
|
418
|
+
const chrome = useContext(AiChatFloatingChromeContext);
|
|
188
419
|
const scrollRef = useRef(null);
|
|
189
420
|
const lastHeight = useRef(0);
|
|
421
|
+
/**
|
|
422
|
+
* The latest content height from ANY source, for the chrome report only.
|
|
423
|
+
* `lastHeight` must change solely in `onContentSizeChange`: a scroll event
|
|
424
|
+
* carrying the new size first would otherwise hide the growth from the follow.
|
|
425
|
+
*/
|
|
426
|
+
const contentHeight = useRef(0);
|
|
190
427
|
const offset = useRef(0);
|
|
191
428
|
const viewport = useRef(0);
|
|
192
429
|
/** An `onStartReached` is out and its page has not landed yet. */
|
|
193
430
|
const pageOut = useRef(false);
|
|
194
431
|
/** The reader has left the top zone, so the next approach may fire again. */
|
|
195
432
|
const startArmed = useRef(true);
|
|
433
|
+
|
|
434
|
+
// The chrome's padding changing is not a new turn: it is recorded here,
|
|
435
|
+
// before the resize it causes, so `onContentSizeChange` can tell the two apart.
|
|
436
|
+
const insetTop = chrome?.insets.top ?? 0;
|
|
437
|
+
const insetBottom = chrome?.insets.bottom ?? 0;
|
|
438
|
+
const appliedInsets = useRef({
|
|
439
|
+
top: insetTop,
|
|
440
|
+
bottom: insetBottom
|
|
441
|
+
});
|
|
442
|
+
const insetShift = useRef({
|
|
443
|
+
top: 0,
|
|
444
|
+
bottom: 0
|
|
445
|
+
});
|
|
446
|
+
useIsomorphicLayoutEffect(() => {
|
|
447
|
+
const applied = appliedInsets.current;
|
|
448
|
+
insetShift.current = {
|
|
449
|
+
top: insetShift.current.top + insetTop - applied.top,
|
|
450
|
+
bottom: insetShift.current.bottom + insetBottom - applied.bottom
|
|
451
|
+
};
|
|
452
|
+
appliedInsets.current = {
|
|
453
|
+
top: insetTop,
|
|
454
|
+
bottom: insetBottom
|
|
455
|
+
};
|
|
456
|
+
}, [insetTop, insetBottom]);
|
|
196
457
|
useImperativeHandle(ref, () => ({
|
|
197
458
|
scrollToEnd: options => scrollRef.current?.scrollToEnd({
|
|
198
459
|
animated: options?.animated ?? true
|
|
@@ -206,14 +467,24 @@ export const AiChatThread = /*#__PURE__*/forwardRef(function AiChatThread({
|
|
|
206
467
|
}),
|
|
207
468
|
getScrollView: () => scrollRef.current
|
|
208
469
|
}), []);
|
|
209
|
-
const listening = !!onScroll || !!onStartReached || followThreshold !== undefined || maintainStartPosition;
|
|
470
|
+
const listening = !!chrome || !!onScroll || !!onStartReached || followThreshold !== undefined || maintainStartPosition;
|
|
471
|
+
const report = useCallback(() => {
|
|
472
|
+
chrome?.reportScroll({
|
|
473
|
+
offset: offset.current,
|
|
474
|
+
viewport: viewport.current,
|
|
475
|
+
content: contentHeight.current
|
|
476
|
+
});
|
|
477
|
+
}, [chrome]);
|
|
210
478
|
const handleScroll = useCallback(event => {
|
|
211
479
|
const {
|
|
212
480
|
contentOffset,
|
|
213
|
-
layoutMeasurement
|
|
481
|
+
layoutMeasurement,
|
|
482
|
+
contentSize
|
|
214
483
|
} = event.nativeEvent;
|
|
215
484
|
offset.current = contentOffset.y;
|
|
216
485
|
viewport.current = layoutMeasurement.height;
|
|
486
|
+
if (contentSize?.height) contentHeight.current = contentSize.height;
|
|
487
|
+
report();
|
|
217
488
|
if (onStartReached) {
|
|
218
489
|
if (contentOffset.y <= onStartReachedThreshold) {
|
|
219
490
|
if (startArmed.current) {
|
|
@@ -226,16 +497,45 @@ export const AiChatThread = /*#__PURE__*/forwardRef(function AiChatThread({
|
|
|
226
497
|
}
|
|
227
498
|
}
|
|
228
499
|
onScroll?.(event);
|
|
229
|
-
}, [onScroll, onStartReached, onStartReachedThreshold]);
|
|
500
|
+
}, [onScroll, onStartReached, onStartReachedThreshold, report]);
|
|
230
501
|
const onLayout = useCallback(event => {
|
|
231
502
|
viewport.current = event.nativeEvent.layout.height;
|
|
232
|
-
|
|
503
|
+
report();
|
|
504
|
+
}, [report]);
|
|
233
505
|
const onContentSizeChange = useCallback((_width, height) => {
|
|
234
506
|
const previous = lastHeight.current;
|
|
235
507
|
const grew = height > previous + 0.5;
|
|
236
508
|
const first = previous === 0;
|
|
237
509
|
lastHeight.current = height;
|
|
238
|
-
|
|
510
|
+
contentHeight.current = height;
|
|
511
|
+
const shift = insetShift.current;
|
|
512
|
+
insetShift.current = {
|
|
513
|
+
top: 0,
|
|
514
|
+
bottom: 0
|
|
515
|
+
};
|
|
516
|
+
report();
|
|
517
|
+
if (first) return;
|
|
518
|
+
|
|
519
|
+
// Exactly the chrome's padding changed (a composer growing, the header
|
|
520
|
+
// measuring in): hold the reader still instead of following. At the end
|
|
521
|
+
// they stay at the end, unanimated; mid-thread, a top shift is absorbed
|
|
522
|
+
// into the offset so the turn they are on does not move.
|
|
523
|
+
const chromeShift = shift.top + shift.bottom;
|
|
524
|
+
if (chromeShift !== 0 && Math.abs(height - previous - chromeShift) < 1) {
|
|
525
|
+
const fromBottom = previous - offset.current - viewport.current;
|
|
526
|
+
if (fromBottom <= EDGE_THRESHOLD) {
|
|
527
|
+
scrollRef.current?.scrollToEnd({
|
|
528
|
+
animated: false
|
|
529
|
+
});
|
|
530
|
+
} else if (offset.current > 0 && shift.top !== 0) {
|
|
531
|
+
scrollRef.current?.scrollTo({
|
|
532
|
+
y: offset.current + shift.top,
|
|
533
|
+
animated: false
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
538
|
+
if (!grew) return;
|
|
239
539
|
|
|
240
540
|
// A page landing above the reader: keep the turn they are on where it is.
|
|
241
541
|
if (maintainStartPosition && pageOut.current) {
|
|
@@ -286,8 +586,15 @@ export const AiChatThread = /*#__PURE__*/forwardRef(function AiChatThread({
|
|
|
286
586
|
gap: 12,
|
|
287
587
|
paddingLeft: 16,
|
|
288
588
|
paddingRight: 16,
|
|
289
|
-
paddingTop:
|
|
589
|
+
paddingTop: THREAD_PAD_TOP + (chrome ? chrome.insets.top : 0),
|
|
590
|
+
...(chrome ? {
|
|
591
|
+
paddingBottom: chrome.insets.bottom
|
|
592
|
+
} : null)
|
|
290
593
|
},
|
|
594
|
+
scrollIndicatorInsets: chrome ? {
|
|
595
|
+
top: chrome.insets.top,
|
|
596
|
+
bottom: chrome.insets.bottom
|
|
597
|
+
} : undefined,
|
|
291
598
|
children: children
|
|
292
599
|
});
|
|
293
600
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useCallback","useImperativeHandle","useMemo","useRef","ScrollView","View","AgentThinking","Breadcrumb","BreadcrumbItem","RiFolderLine","RiMoreFill","RiShare2Line","GlyphAction","CONTAINER_RADIUS","dataHook","IS_WEB","useAiChatPalette","useAiChatWebCss","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULT_LABELS","breadcrumb","share","more","AiChatContainer","project","title","projectIcon","onProjectPress","onShare","onMore","actions","header","children","composer","working","workingLabel","background","surface","labels","style","testID","palette","l","height","minWidth","flex","flexDirection","overflow","borderRadius","backgroundColor","secondary","pointerEvents","position","top","left","right","bottom","width","alignItems","justifyContent","gap","paddingLeft","paddingRight","paddingTop","accessibilityLabel","undefined","icon","onPress","current","flexShrink","label","paddingBottom","variant","AiChatThread","autoFollow","followAnimated","followThreshold","onStartReached","onStartReachedThreshold","maintainStartPosition","onScroll","scrollEventThrottle","ref","scrollRef","lastHeight","offset","viewport","pageOut","startArmed","scrollToEnd","options","animated","scrollToOffset","y","scrollTo","getScrollView","listening","handleScroll","event","contentOffset","layoutMeasurement","nativeEvent","onLayout","layout","onContentSizeChange","_width","previous","grew","first","fromBottom","minHeight","contentContainerStyle","flexGrow"],"sourceRoot":"../../../src","sources":["ai-chat/AiChatContainer.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useCallback","useContext","useImperativeHandle","useMemo","useRef","useState","ScrollView","StyleSheet","View","Animated","useAnimatedStyle","useSharedValue","AgentThinking","Breadcrumb","BreadcrumbItem","RiFolderLine","RiMoreFill","RiShare2Line","EdgeScrim","SCRIM_TAIL_RATIO","parseRgba","useIsomorphicLayoutEffect","GlyphAction","AiChatFloatingChromeContext","CONTAINER_RADIUS","dataHook","IS_WEB","useAiChatPalette","useAiChatWebCss","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULT_LABELS","breadcrumb","share","more","THREAD_PAD_TOP","FOOTER_FADE","EDGE_THRESHOLD","HIDDEN_FROM_A11Y","accessibilityElementsHidden","importantForAccessibility","AiChatContainer","project","title","projectIcon","onProjectPress","onShare","onMore","actions","header","children","composer","working","workingLabel","background","surface","floatingChrome","labels","style","testID","palette","l","hasCrumbRow","crumbRow","pointerEvents","width","flexDirection","alignItems","justifyContent","gap","paddingLeft","paddingRight","paddingTop","minWidth","flex","accessibilityLabel","undefined","icon","onPress","current","flexShrink","label","footerBody","variant","backgroundLayer","position","top","left","right","bottom","rootStyle","height","overflow","borderRadius","backgroundColor","secondary","FloatingChrome","fadeColor","paddingBottom","insets","setInsets","edges","setEdges","topFade","bottomFade","onHeaderLayout","event","Math","round","nativeEvent","layout","previous","onFooterLayout","reportScroll","offset","viewport","content","range","max","y","min","value","chrome","parsed","solid","r","g","b","alpha","a","topStyle","opacity","bottomStyle","prefix","Provider","onLayout","color","absoluteFill","transform","rotate","AiChatThread","autoFollow","followAnimated","followThreshold","onStartReached","onStartReachedThreshold","maintainStartPosition","onScroll","scrollEventThrottle","ref","scrollRef","lastHeight","contentHeight","pageOut","startArmed","insetTop","insetBottom","appliedInsets","insetShift","applied","scrollToEnd","options","animated","scrollToOffset","scrollTo","getScrollView","listening","report","handleScroll","contentOffset","layoutMeasurement","contentSize","onContentSizeChange","_width","grew","first","shift","chromeShift","abs","fromBottom","minHeight","contentContainerStyle","flexGrow","scrollIndicatorInsets"],"sourceRoot":"../../../src","sources":["ai-chat/AiChatContainer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -33,4 +33,30 @@ export const AiChatShellContext = /*#__PURE__*/createContext(null);
|
|
|
33
33
|
export function useAiChatShell() {
|
|
34
34
|
return useContext(AiChatShellContext);
|
|
35
35
|
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The heights an `AiChatContainer floatingChrome` measures for the chrome it
|
|
39
|
+
* floats over its `children`: the header block at the top and the footer
|
|
40
|
+
* (`AgentThinking` + composer, with its fade strip) at the bottom, px.
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/** Where the thread is, reported to the container so each edge knows when to fade. */
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* What a floating-chrome container hands its `children`. Internal: the thread
|
|
47
|
+
* reads `insets` and reports its scroll; hosts read only the insets, through
|
|
48
|
+
* `useAiChatChromeInsets()`.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
export const AiChatFloatingChromeContext = /*#__PURE__*/createContext(null);
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Inside `AiChatContainer floatingChrome`: how much of the top and bottom of the
|
|
55
|
+
* card the floating header and composer cover, so a custom child (an empty
|
|
56
|
+
* state, a scroller of its own) can keep its resting content clear of them.
|
|
57
|
+
* `null` anywhere else — outside a container, or in one that stacks its chrome.
|
|
58
|
+
*/
|
|
59
|
+
export function useAiChatChromeInsets() {
|
|
60
|
+
return useContext(AiChatFloatingChromeContext)?.insets ?? null;
|
|
61
|
+
}
|
|
36
62
|
//# sourceMappingURL=context.js.map
|