@corenel/web-ui 0.13.3 → 0.14.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 (193) hide show
  1. package/dist/Composer.d.ts +30 -1
  2. package/dist/Composer.d.ts.map +1 -1
  3. package/dist/Composer.js +111 -19
  4. package/dist/Composer.js.map +1 -1
  5. package/dist/ContextBar.d.ts +9 -3
  6. package/dist/ContextBar.d.ts.map +1 -1
  7. package/dist/ContextBar.js +14 -7
  8. package/dist/ContextBar.js.map +1 -1
  9. package/dist/ContextManager.d.ts +10 -2
  10. package/dist/ContextManager.d.ts.map +1 -1
  11. package/dist/ContextManager.js +14 -10
  12. package/dist/ContextManager.js.map +1 -1
  13. package/dist/DictateButton.d.ts +21 -1
  14. package/dist/DictateButton.d.ts.map +1 -1
  15. package/dist/DictateButton.js +73 -10
  16. package/dist/DictateButton.js.map +1 -1
  17. package/dist/PickChips.d.ts +6 -0
  18. package/dist/PickChips.d.ts.map +1 -0
  19. package/dist/PickChips.js +55 -0
  20. package/dist/PickChips.js.map +1 -0
  21. package/dist/ProcessDock.d.ts +10 -0
  22. package/dist/ProcessDock.d.ts.map +1 -1
  23. package/dist/ProcessDock.js +24 -1
  24. package/dist/ProcessDock.js.map +1 -1
  25. package/dist/RichContent.d.ts.map +1 -1
  26. package/dist/RichContent.js +102 -24
  27. package/dist/RichContent.js.map +1 -1
  28. package/dist/SummaryTranscript.d.ts +5 -1
  29. package/dist/SummaryTranscript.d.ts.map +1 -1
  30. package/dist/SummaryTranscript.js +5 -3
  31. package/dist/SummaryTranscript.js.map +1 -1
  32. package/dist/TodoBar.d.ts +2 -0
  33. package/dist/TodoBar.d.ts.map +1 -1
  34. package/dist/TodoBar.js +8 -0
  35. package/dist/TodoBar.js.map +1 -1
  36. package/dist/TodoLine.d.ts +11 -0
  37. package/dist/TodoLine.d.ts.map +1 -0
  38. package/dist/TodoLine.js +55 -0
  39. package/dist/TodoLine.js.map +1 -0
  40. package/dist/ToolFold.js +1 -1
  41. package/dist/ToolFold.js.map +1 -1
  42. package/dist/Transcript.d.ts +19 -1
  43. package/dist/Transcript.d.ts.map +1 -1
  44. package/dist/Transcript.js +127 -58
  45. package/dist/Transcript.js.map +1 -1
  46. package/dist/agentChat/AgentChat.d.ts +42 -0
  47. package/dist/agentChat/AgentChat.d.ts.map +1 -1
  48. package/dist/agentChat/AgentChat.js +573 -100
  49. package/dist/agentChat/AgentChat.js.map +1 -1
  50. package/dist/agentChat/ChatSettingsSheet.d.ts +9 -0
  51. package/dist/agentChat/ChatSettingsSheet.d.ts.map +1 -0
  52. package/dist/agentChat/ChatSettingsSheet.js +103 -0
  53. package/dist/agentChat/ChatSettingsSheet.js.map +1 -0
  54. package/dist/agentChat/OptionsDrawer.d.ts +8 -0
  55. package/dist/agentChat/OptionsDrawer.d.ts.map +1 -1
  56. package/dist/agentChat/OptionsDrawer.js +24 -215
  57. package/dist/agentChat/OptionsDrawer.js.map +1 -1
  58. package/dist/agentChat/PlanReview.d.ts +1 -1
  59. package/dist/agentChat/PlanReview.d.ts.map +1 -1
  60. package/dist/agentChat/PlanReview.js +1 -1
  61. package/dist/agentChat/PlanReview.js.map +1 -1
  62. package/dist/agentChat/SourceGroups.d.ts +24 -0
  63. package/dist/agentChat/SourceGroups.d.ts.map +1 -0
  64. package/dist/agentChat/SourceGroups.js +117 -0
  65. package/dist/agentChat/SourceGroups.js.map +1 -0
  66. package/dist/agentChat/controller.d.ts +30 -1
  67. package/dist/agentChat/controller.d.ts.map +1 -1
  68. package/dist/agentChat/controller.js.map +1 -1
  69. package/dist/agentChat/pendingQueue.d.ts +4 -0
  70. package/dist/agentChat/pendingQueue.d.ts.map +1 -1
  71. package/dist/agentChat/pendingQueue.js +7 -0
  72. package/dist/agentChat/pendingQueue.js.map +1 -1
  73. package/dist/agentChat/planTool.d.ts +4 -0
  74. package/dist/agentChat/planTool.d.ts.map +1 -0
  75. package/dist/agentChat/planTool.js +4 -0
  76. package/dist/agentChat/planTool.js.map +1 -0
  77. package/dist/agentChat/testSheetHost.d.ts +3 -0
  78. package/dist/agentChat/testSheetHost.d.ts.map +1 -0
  79. package/dist/agentChat/testSheetHost.js +9 -0
  80. package/dist/agentChat/testSheetHost.js.map +1 -0
  81. package/dist/agentChat/useChatOptions.d.ts +63 -0
  82. package/dist/agentChat/useChatOptions.d.ts.map +1 -0
  83. package/dist/agentChat/useChatOptions.js +156 -0
  84. package/dist/agentChat/useChatOptions.js.map +1 -0
  85. package/dist/chatRefreshContext.d.ts +8 -0
  86. package/dist/chatRefreshContext.d.ts.map +1 -0
  87. package/dist/chatRefreshContext.js +14 -0
  88. package/dist/chatRefreshContext.js.map +1 -0
  89. package/dist/chatSkinContext.d.ts +13 -6
  90. package/dist/chatSkinContext.d.ts.map +1 -1
  91. package/dist/chatSkinContext.js +18 -4
  92. package/dist/chatSkinContext.js.map +1 -1
  93. package/dist/chatSkinCss.d.ts.map +1 -1
  94. package/dist/chatSkinCss.js +108 -22
  95. package/dist/chatSkinCss.js.map +1 -1
  96. package/dist/composerAction.d.ts +16 -0
  97. package/dist/composerAction.d.ts.map +1 -0
  98. package/dist/composerAction.js +20 -0
  99. package/dist/composerAction.js.map +1 -0
  100. package/dist/composerHistory.d.ts.map +1 -1
  101. package/dist/composerHistory.js +4 -1
  102. package/dist/composerHistory.js.map +1 -1
  103. package/dist/fx/LiveAnswer.d.ts.map +1 -1
  104. package/dist/fx/LiveAnswer.js +324 -59
  105. package/dist/fx/LiveAnswer.js.map +1 -1
  106. package/dist/fx/arrivalModes.d.ts +17 -2
  107. package/dist/fx/arrivalModes.d.ts.map +1 -1
  108. package/dist/fx/arrivalModes.js +46 -4
  109. package/dist/fx/arrivalModes.js.map +1 -1
  110. package/dist/fx/pacer.d.ts +41 -0
  111. package/dist/fx/pacer.d.ts.map +1 -0
  112. package/dist/fx/pacer.js +66 -0
  113. package/dist/fx/pacer.js.map +1 -0
  114. package/dist/fx/useReveal.d.ts +16 -1
  115. package/dist/fx/useReveal.d.ts.map +1 -1
  116. package/dist/fx/useReveal.js +101 -41
  117. package/dist/fx/useReveal.js.map +1 -1
  118. package/dist/localAddress.d.ts +2 -0
  119. package/dist/localAddress.d.ts.map +1 -0
  120. package/dist/localAddress.js +56 -0
  121. package/dist/localAddress.js.map +1 -0
  122. package/dist/steps/AfterReply.d.ts +67 -0
  123. package/dist/steps/AfterReply.d.ts.map +1 -0
  124. package/dist/steps/AfterReply.js +217 -0
  125. package/dist/steps/AfterReply.js.map +1 -0
  126. package/dist/steps/ChatApproval.d.ts +18 -0
  127. package/dist/steps/ChatApproval.d.ts.map +1 -0
  128. package/dist/steps/ChatApproval.js +35 -0
  129. package/dist/steps/ChatApproval.js.map +1 -0
  130. package/dist/steps/Delegation.d.ts +77 -0
  131. package/dist/steps/Delegation.d.ts.map +1 -0
  132. package/dist/steps/Delegation.js +188 -0
  133. package/dist/steps/Delegation.js.map +1 -0
  134. package/dist/steps/LiveRail.d.ts +14 -0
  135. package/dist/steps/LiveRail.d.ts.map +1 -0
  136. package/dist/steps/LiveRail.js +16 -0
  137. package/dist/steps/LiveRail.js.map +1 -0
  138. package/dist/steps/StepDetail.d.ts +23 -0
  139. package/dist/steps/StepDetail.d.ts.map +1 -0
  140. package/dist/steps/StepDetail.js +195 -0
  141. package/dist/steps/StepDetail.js.map +1 -0
  142. package/dist/steps/StepDetailHost.d.ts +54 -0
  143. package/dist/steps/StepDetailHost.d.ts.map +1 -0
  144. package/dist/steps/StepDetailHost.js +175 -0
  145. package/dist/steps/StepDetailHost.js.map +1 -0
  146. package/dist/steps/StepRail.d.ts +38 -0
  147. package/dist/steps/StepRail.d.ts.map +1 -0
  148. package/dist/steps/StepRail.js +238 -0
  149. package/dist/steps/StepRail.js.map +1 -0
  150. package/dist/steps/approval.d.ts +73 -0
  151. package/dist/steps/approval.d.ts.map +1 -0
  152. package/dist/steps/approval.js +81 -0
  153. package/dist/steps/approval.js.map +1 -0
  154. package/dist/steps/model.d.ts +140 -0
  155. package/dist/steps/model.d.ts.map +1 -0
  156. package/dist/steps/model.js +433 -0
  157. package/dist/steps/model.js.map +1 -0
  158. package/dist/steps/outcome.d.ts +5 -0
  159. package/dist/steps/outcome.d.ts.map +1 -0
  160. package/dist/steps/outcome.js +34 -0
  161. package/dist/steps/outcome.js.map +1 -0
  162. package/dist/steps/peek.d.ts +35 -0
  163. package/dist/steps/peek.d.ts.map +1 -0
  164. package/dist/steps/peek.js +219 -0
  165. package/dist/steps/peek.js.map +1 -0
  166. package/dist/steps/plan.d.ts +50 -0
  167. package/dist/steps/plan.d.ts.map +1 -0
  168. package/dist/steps/plan.js +242 -0
  169. package/dist/steps/plan.js.map +1 -0
  170. package/dist/steps/useRailDetail.d.ts +25 -0
  171. package/dist/steps/useRailDetail.d.ts.map +1 -0
  172. package/dist/steps/useRailDetail.js +108 -0
  173. package/dist/steps/useRailDetail.js.map +1 -0
  174. package/dist/steps/words.d.ts +40 -0
  175. package/dist/steps/words.d.ts.map +1 -0
  176. package/dist/steps/words.js +247 -0
  177. package/dist/steps/words.js.map +1 -0
  178. package/dist/toolRender.d.ts +27 -1
  179. package/dist/toolRender.d.ts.map +1 -1
  180. package/dist/toolRender.js +72 -4
  181. package/dist/toolRender.js.map +1 -1
  182. package/dist/transcriptSkin.d.ts.map +1 -1
  183. package/dist/transcriptSkin.js +66 -0
  184. package/dist/transcriptSkin.js.map +1 -1
  185. package/dist/transcriptSkinCss.d.ts +35 -0
  186. package/dist/transcriptSkinCss.d.ts.map +1 -1
  187. package/dist/transcriptSkinCss.js +360 -19
  188. package/dist/transcriptSkinCss.js.map +1 -1
  189. package/dist/useHoldPress.d.ts +24 -0
  190. package/dist/useHoldPress.d.ts.map +1 -0
  191. package/dist/useHoldPress.js +85 -0
  192. package/dist/useHoldPress.js.map +1 -0
  193. package/package.json +5 -5
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  /* The in-progress answer under an arrival effect.
3
3
  *
4
4
  * The streamed text itself is never rewritten: a paced reveal decides how much
@@ -11,8 +11,9 @@ import { useEffect, useLayoutEffect, useRef, useState } from 'react';
11
11
  import { Markdown } from '../RichContent';
12
12
  import { prefersReducedMotion } from '../arrivalEffect';
13
13
  import { useReveal } from './useReveal';
14
+ import { paceConfig } from './pacer';
14
15
  import { TAIL_MAX, tailGlyphs, tailHost } from './tail';
15
- import { bandEnd, bandText, committedAt, isBandEffect, lineCount, paceFor, signalGlyphs, SIGNAL_TAIL } from './arrivalModes';
16
+ import { bandEnd, bandText, committedAt, gateLines, isBandEffect, lineCount, linePiece, signalGlyphs, SIGNAL_TAIL } from './arrivalModes';
16
17
  const TILE = 'display:inline-flex;align-items:center;justify-content:center;width:.95em;height:1.3em;margin:0 1px;border-radius:2px;' +
17
18
  'vertical-align:middle;background:linear-gradient(#262626 0 49%,#0a0a0a 49% 51%,#1d1d1d 51%);color:#f3f1e8;' +
18
19
  'font:700 .85em var(--font-mono, ui-monospace, monospace)';
@@ -23,8 +24,6 @@ const GLOW = 'var(--accent, #4fd1ff)';
23
24
  // Signal lock's small vertical roll as a new line starts: six steps, ~350 ms.
24
25
  const ROLL_PX = [-5, -3, 2, 4, 1, 0];
25
26
  const ROLL_MS = 350;
26
- // Teleprinter paper feed: one small step up, then back.
27
- const FEED_MS = 140;
28
27
  // Effects whose tail re-rolls between reveal ticks.
29
28
  const REROLL = new Set(['matrix', 'splitflap', 'decode', 'typewriter', 'signal']);
30
29
  function tailSpan(effect) {
@@ -52,14 +51,23 @@ function buildBand(effect, band) {
52
51
  const age = (words.length - 1 - i) / Math.max(1, words.length - 1);
53
52
  if (effect === 'radar') {
54
53
  el.dataset.fxContact = '';
54
+ // The newest contact carries the scan beam, so the beam needs no measuring.
55
+ if (age === 0) {
56
+ el.style.position = 'relative';
57
+ const beam = document.createElement('span');
58
+ beam.dataset.fxBeam = '';
59
+ beam.setAttribute('aria-hidden', 'true');
60
+ Object.assign(beam.style, S.beam);
61
+ el.appendChild(beam);
62
+ }
55
63
  // Newest contacts glow brightest and fade as the sweep moves on.
56
64
  el.style.textShadow = `0 0 ${Math.round(8 - age * 6)}px ${GLOW}`;
57
65
  }
58
66
  else {
59
67
  el.dataset.fxSketch = '';
60
- // Outline only: the fill is transparent, the stroke is the text colour.
61
- el.style.setProperty('-webkit-text-fill-color', 'transparent');
62
- el.style.setProperty('-webkit-text-stroke', '0.6px currentColor');
68
+ // A readable outline at any size: a faint fill inside an em-scaled stroke.
69
+ el.style.setProperty('-webkit-text-fill-color', 'color-mix(in srgb, currentColor 20%, transparent)');
70
+ el.style.setProperty('-webkit-text-stroke', '0.04em currentColor');
63
71
  el.style.opacity = String(0.9 - age * 0.25);
64
72
  }
65
73
  span.appendChild(el);
@@ -131,40 +139,159 @@ function makeCursor() {
131
139
  * run in a plain <div>, so the wrapper is never a block here; a nested list's
132
140
  * items come after their parent item, so the deepest newest item is last. */
133
141
  const BLOCKS = 'p, li, h1, h2, h3, h4, h5, h6, blockquote, pre, table';
142
+ /** Most fade animations a sweep keeps live at once: the per-block fades plus
143
+ * the shared ones, so the animation count stays bounded. */
144
+ const SWEEP_FADE_MAX = 30;
145
+ /** Shared fades (one custom property each) for blocks past the per-block budget. */
146
+ const SHARED_SLOTS = 4;
147
+ /** A batch joins the newest shared fade while it has played at most this
148
+ * share of its duration (its blocks start barely above 0); later, it takes a
149
+ * fresh slot. A running shared fade is never restarted. */
150
+ const JOIN_EARLY = 0.2;
151
+ /** A finished reveal says done once its fades end, or after this at the latest. */
152
+ const DONE_CAP_MS = 1000;
153
+ const slotProp = (k) => `--fx-sweep-o${k}`;
154
+ /** Register the shared fades' properties (a second registration throws and is
155
+ * ignored) so one animation can interpolate each as a number. False where the
156
+ * browser cannot (the shared fades are then skipped, not thrown). */
157
+ function registerSweepProperty() {
158
+ if (typeof CSS === 'undefined' || typeof CSS.registerProperty !== 'function')
159
+ return false;
160
+ for (let k = 0; k < SHARED_SLOTS; k++) {
161
+ try {
162
+ CSS.registerProperty({ name: slotProp(k), syntax: '<number>', inherits: true, initialValue: '1' });
163
+ }
164
+ catch {
165
+ // Already registered (another bundle copy, hot reload): still usable.
166
+ }
167
+ }
168
+ return true;
169
+ }
170
+ const isLive = (f) => !!f && f.playState !== 'finished' && f.playState !== 'idle';
171
+ const elapsedMs = (a) => (typeof a.currentTime === 'number' ? a.currentTime : Infinity);
134
172
  function renderedBlocks(root) {
135
173
  const md = root.querySelector('.agent-md');
136
174
  return md ? Array.from(md.querySelectorAll(BLOCKS)) : [];
137
175
  }
138
176
  export function LiveAnswer({ text, effect, complete = true, startAt = 0, onProgress, onDone }) {
139
177
  const active = effect !== 'none' && !prefersReducedMotion();
140
- const shown = useReveal(text, active, paceFor(effect), Math.min(startAt, text.length));
178
+ const r = useReveal(text, { active, effect, complete, start: Math.min(startAt, text.length) });
179
+ const shown = r.shown;
180
+ const sweeping = active && r.sweeping;
141
181
  /* Committed text never goes back within one answer: once Markdown has
142
182
  * rendered something, a later delta must not turn it back into decoration
143
183
  * (or hide it). A shorter text is a new answer and starts over. */
144
184
  const maxCommit = useRef({ len: text.length, at: 0 });
145
- if (text.length < maxCommit.current.len)
185
+ const shrunk = text.length < maxCommit.current.len;
186
+ if (shrunk)
146
187
  maxCommit.current = { len: text.length, at: 0 };
147
188
  maxCommit.current.len = text.length;
148
- const committed = active
149
- ? Math.min(text.length, Math.max(committedAt(effect, text, shown, complete), maxCommit.current.at))
189
+ /* Netsplit posts at most one line per lineGapMs. Not while sweeping (a
190
+ * backlog comes in at once) and not once the reveal has finished the text.
191
+ * `linePost` follows whatever else committed, so the gap counts from the
192
+ * last thing that appeared. */
193
+ const linePost = useRef({ committed: 0, postedAt: -Infinity });
194
+ // A hand-off resumes with lines already on screen: they stay, and are not re-posted.
195
+ const seeded = useRef(false);
196
+ if (!seeded.current) {
197
+ seeded.current = true;
198
+ if (active && effect === 'netsplit' && startAt > 0) {
199
+ const at = committedAt(effect, text, Math.min(startAt, text.length), complete);
200
+ maxCommit.current.at = at;
201
+ linePost.current = { committed: at, postedAt: -Infinity };
202
+ }
203
+ }
204
+ if (shrunk)
205
+ linePost.current = { committed: 0, postedAt: -Infinity };
206
+ if (linePost.current.committed > text.length)
207
+ linePost.current = { ...linePost.current, committed: text.length };
208
+ const ungated = active
209
+ ? Math.min(text.length, Math.max(sweeping ? shown : committedAt(effect, text, shown, complete || r.settled), maxCommit.current.at))
150
210
  : text.length;
211
+ const finished = (complete || r.settled) && shown >= text.length;
212
+ let committed = ungated;
213
+ if (active && effect === 'netsplit') {
214
+ if (sweeping || finished) {
215
+ linePost.current = { committed: Math.max(ungated, linePost.current.committed), postedAt: Date.now() };
216
+ committed = linePost.current.committed;
217
+ }
218
+ else {
219
+ linePost.current = gateLines(text, linePost.current, ungated, Date.now(), paceConfig(effect).lineGapMs, shown);
220
+ committed = Math.max(linePost.current.committed, maxCommit.current.at);
221
+ }
222
+ }
151
223
  maxCommit.current.at = committed;
224
+ // A held-back line (or the next piece of a long one) needs a render when its gap is up; nothing else may come.
225
+ const gated = committed < ungated
226
+ || (active && effect === 'netsplit' && !sweeping && !finished && linePiece(text, committed, shown) > committed);
227
+ const [, wake] = useState(0);
228
+ useEffect(() => {
229
+ if (!gated)
230
+ return;
231
+ const wait = Math.max(0, linePost.current.postedAt + paceConfig(effect).lineGapMs - Date.now());
232
+ const id = setTimeout(() => wake((n) => n + 1), wait);
233
+ return () => clearTimeout(id);
234
+ }, [gated, committed, effect]);
152
235
  const ref = useRef(null);
153
- const beamRef = useRef(null);
154
- const band = active && isBandEffect(effect) ? text.slice(committed, Math.max(committed, bandEnd(text, shown))) : '';
155
- const pending = !active || effect === 'netsplit' ? ''
236
+ const band = active && !sweeping && isBandEffect(effect) ? text.slice(committed, Math.max(committed, bandEnd(text, shown))) : '';
237
+ const pending = !active || sweeping || effect === 'netsplit' ? ''
156
238
  : isBandEffect(effect) ? band
157
239
  : text.slice(shown, shown + (effect === 'signal' ? SIGNAL_TAIL : TAIL_MAX));
158
240
  const cb = useRef({ onProgress, onDone });
159
241
  cb.current = { onProgress, onDone };
242
+ /* Every fade this answer starts (not the endless cursor blink), so done can
243
+ * wait for them: a hand-off unmounts on done, and unmounting mid-fade snaps
244
+ * the blocks to full and rebuilds the DOM. */
245
+ const started = useRef(new Set());
246
+ const own = (a) => {
247
+ if (!a)
248
+ return null;
249
+ for (const x of started.current)
250
+ if (!isLive(x))
251
+ started.current.delete(x);
252
+ started.current.add(a);
253
+ return a;
254
+ };
160
255
  const doneRef = useRef(false);
256
+ const doneCap = useRef(null);
257
+ const mounted = useRef(true);
258
+ useEffect(() => {
259
+ mounted.current = true;
260
+ return () => {
261
+ mounted.current = false;
262
+ if (doneCap.current !== null) {
263
+ clearTimeout(doneCap.current);
264
+ doneCap.current = null;
265
+ }
266
+ };
267
+ }, []);
161
268
  useEffect(() => {
162
269
  cb.current.onProgress?.(shown);
163
- if (!doneRef.current && text.length > 0 && shown >= text.length) {
164
- doneRef.current = true;
270
+ // Done only once the text is final: a reveal that caught up mid-stream is a
271
+ // pause (the chat's run-end hand-off waits for this).
272
+ if (doneRef.current || !complete || text.length === 0 || shown < text.length)
273
+ return;
274
+ doneRef.current = true;
275
+ // Layout effects (which start this render's fades) have already run.
276
+ const running = Array.from(started.current).filter((a) => a.playState === 'running');
277
+ if (running.length === 0) {
165
278
  cb.current.onDone?.();
279
+ return;
166
280
  }
167
- }, [shown, text.length]);
281
+ let fired = false;
282
+ const fire = () => {
283
+ if (fired || !mounted.current)
284
+ return;
285
+ fired = true;
286
+ if (doneCap.current !== null) {
287
+ clearTimeout(doneCap.current);
288
+ doneCap.current = null;
289
+ }
290
+ cb.current.onDone?.();
291
+ };
292
+ doneCap.current = setTimeout(fire, DONE_CAP_MS);
293
+ void Promise.all(running.map((a) => Promise.resolve(a.finished).then(() => undefined, () => undefined))).then(fire);
294
+ }, [shown, text.length, complete]);
168
295
  /* Line breaks crossed so far: the teleprinter feeds the paper at each one,
169
296
  * and a signal line starts rolling in. Tracked during render (not in an
170
297
  * effect) so the feed lands on the same frame as the line. */
@@ -176,42 +303,193 @@ export function LiveAnswer({ text, effect, complete = true, startAt = 0, onProgr
176
303
  const next = lines > lineWatch.lines;
177
304
  setLineWatch({ lines, at: next ? Date.now() : lineWatch.at, feeds: next ? lineWatch.feeds + 1 : lineWatch.feeds });
178
305
  }
179
- const [feeding, setFeeding] = useState(false);
180
- useEffect(() => {
181
- if (effect !== 'teleprinter' || !active || lineWatch.feeds === 0)
306
+ /* Teleprinter paper feed: at each line end the newest block steps up two
307
+ * pixels and back, in two steps. The answer's root is never transformed.
308
+ * Not while a sweep is bringing a backlog in. */
309
+ useLayoutEffect(() => {
310
+ const root = ref.current;
311
+ if (effect !== 'teleprinter' || !active || sweeping || lineWatch.feeds === 0 || !root)
182
312
  return;
183
- setFeeding(true);
184
- const id = setTimeout(() => setFeeding(false), FEED_MS);
185
- return () => clearTimeout(id);
186
- }, [effect, active, lineWatch.feeds]);
313
+ const blocks = renderedBlocks(root);
314
+ const newest = blocks[blocks.length - 1];
315
+ if (newest && typeof newest.animate === 'function') {
316
+ own(newest.animate([{ transform: 'translateY(-2px)' }, { transform: 'none' }], { duration: 120, easing: 'steps(2, end)' }));
317
+ }
318
+ }, [lineWatch.feeds]);
187
319
  /* Netsplit: each newly posted line slides in. Only NEW blocks (the block
188
320
  * count grew) -- never one that already had text, and never the wrapper
189
321
  * around the whole answer. -1: not counted yet (a hand-off resumes with
190
322
  * blocks already on screen; those do not slide in). Web Animations leave
191
323
  * the DOM and its text untouched, and do nothing where unsupported. */
192
- const blockCount = useRef(-1);
324
+ const posted = useRef({ blocks: -1, lines: 0, lastH: 0, committed: 0 });
193
325
  useLayoutEffect(() => {
194
326
  const root = ref.current;
195
327
  if (effect !== 'netsplit' || !active || !root) {
196
- blockCount.current = -1;
328
+ posted.current = { blocks: -1, lines: 0, lastH: 0, committed: 0 };
197
329
  return;
198
330
  }
199
331
  const blocks = renderedBlocks(root);
200
- const before = blockCount.current;
201
- blockCount.current = blocks.length;
202
- if (before < 0)
332
+ const lines = lineCount(text, committed);
333
+ const was = posted.current;
334
+ const last = blocks[blocks.length - 1];
335
+ const lastH = last ? last.getBoundingClientRect().height : 0;
336
+ posted.current = { blocks: blocks.length, lines, lastH, committed };
337
+ // While sweeping, the sweep fade owns the blocks it brings in.
338
+ if (was.blocks < 0 || sweeping)
203
339
  return;
204
- for (const block of blocks.slice(before)) {
340
+ for (const block of blocks.slice(was.blocks)) {
205
341
  if (typeof block.animate === 'function') {
206
- block.animate([{ opacity: 0, transform: 'translateY(4px)' }, { opacity: 1, transform: 'none' }], { duration: 200, easing: 'ease-out' });
342
+ own(block.animate([{ opacity: 0, transform: 'translateY(4px)' }, { opacity: 1, transform: 'none' }], { duration: 200, easing: 'ease-out' }));
207
343
  }
208
344
  }
345
+ /* A soft-break line, or the next piece of a long line, adds to the newest
346
+ * block rather than adding a block: wipe the new part in. */
347
+ const grown = Math.max(0, lastH - was.lastH);
348
+ const addedToLast = lines > was.lines || (committed > was.committed && grown > 0);
349
+ if (last && blocks.length === was.blocks && addedToLast && typeof last.animate === 'function') {
350
+ own(last.animate([{ clipPath: `inset(0 0 ${grown}px 0)` }, { clipPath: 'inset(0 0 0 0)' }], { duration: 200, easing: 'ease-out' }));
351
+ }
209
352
  }, [effect, active, committed]);
353
+ /* A sweep brings a big backlog in at once; each block it adds fades in so
354
+ * the arrival is never a hard pop. The count is kept on every render, so a
355
+ * sweep starting mid-answer fades only the blocks it adds. */
356
+ const sweepBlocks = useRef(0);
357
+ const fades = useRef([]);
358
+ const rootFade = useRef(null);
359
+ // The shared fades, one per slot, and the slot each marked block reads.
360
+ const slots = useRef([]);
361
+ const newestSlot = useRef(-1);
362
+ const marked = useRef(new Map());
363
+ useLayoutEffect(() => {
364
+ const root = ref.current;
365
+ if (!root)
366
+ return;
367
+ const blocks = renderedBlocks(root);
368
+ const before = sweepBlocks.current;
369
+ sweepBlocks.current = blocks.length;
370
+ /* The Markdown morph drops attributes the new html lacks, so the shared
371
+ * fades' markers are put back after every render, before anything else. */
372
+ for (const [b, k] of marked.current) {
373
+ if (!b.isConnected) {
374
+ marked.current.delete(b);
375
+ continue;
376
+ }
377
+ b.setAttribute('data-fx-sweep', String(k));
378
+ b.style.opacity = `var(${slotProp(k)}, 1)`;
379
+ }
380
+ if (!sweeping)
381
+ return;
382
+ const duration = paceConfig(effect).sweepMs;
383
+ const keyframes = [{ opacity: 0 }, { opacity: 1 }];
384
+ /* An answer arriving in one sweep from nothing fades in as ONE animation,
385
+ * on the Markdown root: every block, however many, shares it, so there is
386
+ * no per-block cost and nothing can pop. Blocks that join while it plays
387
+ * are under it already. */
388
+ if (isLive(rootFade.current))
389
+ return;
390
+ const md = root.querySelector('.agent-md');
391
+ if (before === 0 && blocks.length > 0 && md && typeof md.animate === 'function') {
392
+ rootFade.current = own(md.animate(keyframes, { duration, easing: 'ease-out' }));
393
+ return;
394
+ }
395
+ /* A sweep that starts mid-answer adds blocks under text already on screen,
396
+ * so those cannot share a root fade; each fades on its own, with the live
397
+ * per-block fades budgeted at SWEEP_FADE_MAX less the shared slots. Only
398
+ * when the blocks added now exceed what is left of the budget is anything
399
+ * measured (one batch of reads in this layout effect), and the blocks to
400
+ * fade are chosen BEFORE any animation starts: those in view, then the
401
+ * newest (the follow-scroll lands there), then those near the viewport.
402
+ * Nothing is created and then cancelled. */
403
+ fades.current = fades.current.filter(isLive);
404
+ const added = blocks.slice(before);
405
+ const budget = Math.max(0, SWEEP_FADE_MAX - SHARED_SLOTS - fades.current.length);
406
+ let chosen = added;
407
+ if (added.length > budget) {
408
+ const vh = window.innerHeight;
409
+ const newest = Math.floor(SWEEP_FADE_MAX / 3);
410
+ const rank = added.map((block, i) => {
411
+ const r = block.getBoundingClientRect();
412
+ if (r.bottom > 0 && r.top < vh)
413
+ return 0;
414
+ if (i >= added.length - newest)
415
+ return 1;
416
+ if (r.bottom > -vh && r.top < 2 * vh)
417
+ return 2;
418
+ return 3;
419
+ });
420
+ chosen = added
421
+ .map((block, i) => ({ block, i, rank: rank[i] }))
422
+ .filter((c) => c.rank < 3)
423
+ .sort((x, y) => x.rank - y.rank || x.i - y.i)
424
+ .slice(0, budget)
425
+ .map((c) => c.block);
426
+ }
427
+ for (const block of chosen) {
428
+ if (typeof block.animate !== 'function')
429
+ continue;
430
+ const fade = own(block.animate(keyframes, { duration, easing: 'ease-out' }));
431
+ if (fade)
432
+ fades.current.push(fade);
433
+ }
434
+ /* Blocks that got no fade of their own (over the budget) share one: each is
435
+ * marked with a slot, its opacity reads that slot's property, and one
436
+ * animation on the Markdown root runs the property 0 to 1. A running
437
+ * shared fade is never restarted (that would snap its partly faded blocks
438
+ * back to 0): a batch joins the newest one while it is still early, and
439
+ * otherwise takes a free slot; only with every slot busy does it join the
440
+ * newest late. A slot's markers go when its fade ends. Blocks already on
441
+ * screen are never marked. Where custom properties cannot be registered
442
+ * (no @property), the blocks simply appear. */
443
+ if (chosen !== added && md && typeof md.animate === 'function' && registerSweepProperty()) {
444
+ const picked = new Set(chosen);
445
+ const rest = added.filter((b) => !picked.has(b));
446
+ if (rest.length > 0) {
447
+ const newestFade = newestSlot.current >= 0 ? slots.current[newestSlot.current] : null;
448
+ let k = isLive(newestFade) && elapsedMs(newestFade) <= duration * JOIN_EARLY ? newestSlot.current : -1;
449
+ if (k < 0) {
450
+ for (let i = 0; i < SHARED_SLOTS; i++)
451
+ if (!isLive(slots.current[i])) {
452
+ k = i;
453
+ break;
454
+ }
455
+ if (k >= 0) {
456
+ const slot = k;
457
+ const anim = own(md.animate([{ [slotProp(slot)]: 0 }, { [slotProp(slot)]: 1 }], { duration, easing: 'ease-out' }));
458
+ slots.current[slot] = anim;
459
+ newestSlot.current = slot;
460
+ if (anim) {
461
+ anim.onfinish = () => {
462
+ if (slots.current[slot] !== anim)
463
+ return;
464
+ for (const [b, s] of marked.current) {
465
+ if (s !== slot)
466
+ continue;
467
+ b.removeAttribute('data-fx-sweep');
468
+ b.style.removeProperty('opacity');
469
+ marked.current.delete(b);
470
+ }
471
+ };
472
+ }
473
+ }
474
+ else {
475
+ k = newestSlot.current;
476
+ }
477
+ }
478
+ if (k >= 0) {
479
+ for (const block of rest) {
480
+ block.setAttribute('data-fx-sweep', String(k));
481
+ block.style.opacity = `var(${slotProp(k)}, 1)`;
482
+ marked.current.set(block, k);
483
+ }
484
+ }
485
+ }
486
+ }
487
+ }, [sweeping, effect, committed]);
210
488
  /* The teleprinter cursor: ONE node and ONE blink animation for as long as
211
489
  * the cursor shows, moved into each rebuilt tail; cancelled when the
212
490
  * cursor goes (caught up, effect change, unmount). */
213
491
  const cursorRef = useRef(null);
214
- const cursorOn = active && effect === 'teleprinter' && shown < text.length;
492
+ const cursorOn = active && !sweeping && effect === 'teleprinter' && shown < text.length;
215
493
  useEffect(() => {
216
494
  if (!cursorOn)
217
495
  return;
@@ -225,16 +503,12 @@ export function LiveAnswer({ text, effect, complete = true, startAt = 0, onProgr
225
503
  const root = ref.current;
226
504
  if (!root)
227
505
  return;
228
- const beam = beamRef.current;
229
506
  const clear = () => root.querySelectorAll('.fx-tail').forEach((n) => n.remove());
230
507
  const draw = () => {
231
508
  clear();
232
509
  const host = pending ? tailHost(root, { outsideInline: isBandEffect(effect) }) : null;
233
- if (!host) {
234
- if (beam)
235
- beam.style.display = 'none';
510
+ if (!host)
236
511
  return;
237
- }
238
512
  let cursor;
239
513
  if (effect === 'teleprinter') {
240
514
  if (!cursorRef.current)
@@ -245,8 +519,6 @@ export function LiveAnswer({ text, effect, complete = true, startAt = 0, onProgr
245
519
  : isBandEffect(effect) ? buildBand(effect, pending)
246
520
  : buildTail(effect, pending, cursor);
247
521
  host.appendChild(tail);
248
- if (beam)
249
- placeBeam(beam, root, tail);
250
522
  if (cursor && cursorRef.current && !cursorRef.current.anim)
251
523
  cursorRef.current.anim = blink(cursor);
252
524
  };
@@ -257,13 +529,18 @@ export function LiveAnswer({ text, effect, complete = true, startAt = 0, onProgr
257
529
  const id = setInterval(draw, 60);
258
530
  return () => { clearInterval(id); clear(); };
259
531
  }, [effect, pending, shown, lineStartAt]);
260
- const radar = active && effect === 'radar' && pending !== '';
261
- const style = radar
262
- ? { position: 'relative' }
263
- : effect === 'teleprinter' && active
264
- ? { transform: feeding ? 'translateY(-3px)' : '', transition: `transform ${FEED_MS - 20}ms steps(2, end)` }
265
- : undefined;
266
- return (_jsxs("div", { ref: ref, "data-fx": effect, style: style, children: [_jsx(Markdown, { text: active ? text.slice(0, committed) : text }), radar && _jsx("div", { ref: beamRef, "data-fx-beam": "", "aria-hidden": "true", style: S.beam })] }));
532
+ const onClick = (event) => {
533
+ if (!active)
534
+ return;
535
+ const target = event.target;
536
+ const hit = target instanceof Element ? target.closest('a, button, summary, input, textarea, select') : null;
537
+ if (hit && ref.current?.contains(hit))
538
+ return;
539
+ if (window.getSelection()?.toString())
540
+ return;
541
+ r.reveal();
542
+ };
543
+ return (_jsx("div", { ref: ref, "data-fx": effect, "data-fx-sweeping": sweeping ? '' : undefined, onClick: onClick, children: _jsx(Markdown, { text: active ? text.slice(0, committed) : text }) }));
267
544
  }
268
545
  /** The teleprinter cursor blinks: on half a second, off half a second, no
269
546
  * fade. Started once per cursor (LiveAnswer keeps the node and the
@@ -276,23 +553,11 @@ function blink(cursor) {
276
553
  a.startTime = 0;
277
554
  return a;
278
555
  }
279
- /** The radar beam rides the newest contact: its leading edge at the end of
280
- * the tail, on the tail's line. */
281
- function placeBeam(beam, root, tail) {
282
- const rects = tail.getClientRects();
283
- const r = rects.length ? rects[rects.length - 1] : tail.getBoundingClientRect();
284
- const base = root.getBoundingClientRect();
285
- beam.style.display = 'block';
286
- beam.style.left = `${r.right - base.left - BEAM_W}px`;
287
- beam.style.top = `${r.top - base.top}px`;
288
- beam.style.height = `${Math.max(r.height, 16)}px`;
289
- }
290
556
  const BEAM_W = 70;
291
557
  const S = {
292
558
  beam: {
293
- position: 'absolute', left: 0, top: 0, width: BEAM_W, height: 16, pointerEvents: 'none', userSelect: 'none',
559
+ position: 'absolute', right: '0', top: '0', bottom: '0', width: `${BEAM_W}px`, pointerEvents: 'none', userSelect: 'none',
294
560
  background: `linear-gradient(90deg, transparent, color-mix(in srgb, ${GLOW} 10%, transparent) 70%, color-mix(in srgb, ${GLOW} 45%, transparent) 97%, ${GLOW})`,
295
- transition: 'left 90ms linear, top 90ms linear',
296
561
  },
297
562
  };
298
563
  //# sourceMappingURL=LiveAnswer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveAnswer.js","sourceRoot":"","sources":["../../fx/LiveAnswer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LiveAnswer.js","sourceRoot":"","sources":["../../fx/LiveAnswer.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  import type { ArrivalEffect } from '../arrivalEffect';
2
- /** Reveal step per tick: typewriter keys at ~30 characters a second, the rest ~60. */
3
- export declare function paceFor(effect: ArrivalEffect): number;
4
2
  /** The end of the word containing (or starting at) `i`: the next whitespace. */
5
3
  export declare function bandEnd(text: string, i: number): number;
6
4
  /** How much of `text` Markdown renders once `shown` characters are revealed.
@@ -9,6 +7,23 @@ export declare function bandEnd(text: string, i: number): number;
9
7
  * and the effect's own rule still applies (netsplit holds back a partial
10
8
  * line, a band keeps its last words as decoration). */
11
9
  export declare function committedAt(effect: ArrivalEffect, text: string, shown: number, complete?: boolean): number;
10
+ export interface LinePost {
11
+ committed: number;
12
+ postedAt: number;
13
+ }
14
+ /** A pending line longer than this posts in pieces (netsplit). */
15
+ export declare const LONG_LINE = 120;
16
+ /** Netsplit: the next piece of a long unbroken line. When the revealed part of
17
+ * the line `from` is in (no line break revealed yet) is longer than LONG_LINE,
18
+ * the end of its last sentence (. ! or ? followed by a space, the space
19
+ * included), else of its last word (after the space); otherwise `from`. */
20
+ export declare function linePiece(text: string, from: number, revealed: number): number;
21
+ /** Netsplit: post at most one more line per `gapMs`. `candidate` is what
22
+ * committedAt allows; the result is `prev` until the gap has passed, then the
23
+ * end of the next line and any blank lines after it (never past the candidate, never back). A zero gap
24
+ * passes the candidate through. `revealed` (the reveal point): a long line
25
+ * with no break yet posts in pieces (linePiece), still one post per gap. */
26
+ export declare function gateLines(text: string, prev: LinePost, candidate: number, now: number, gapMs: number, revealed?: number): LinePost;
12
27
  /** True for the effects whose decoration is the trailing band of words. */
13
28
  export declare function isBandEffect(effect: ArrivalEffect): boolean;
14
29
  /** A band's words as decoration: Markdown markers dropped (the decoration must
@@ -1 +1 @@
1
- {"version":3,"file":"arrivalModes.d.ts","sourceRoot":"","sources":["../../fx/arrivalModes.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AActD,sFAAsF;AACtF,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAErD;AAID,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvD;AA6BD;;;;uDAIuD;AACvD,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,MAAM,CAWvG;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAE3D;AAED;mDACmD;AACnD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED,eAAO,MAAM,KAAK,uBAAuB,CAAC;AAC1C;uDACuD;AACvD,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B;;gDAEgD;AAChD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,MAAoB,GAAG,MAAM,EAAE,CAQxF"}
1
+ {"version":3,"file":"arrivalModes.d.ts","sourceRoot":"","sources":["../../fx/arrivalModes.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAgBtD,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvD;AA6BD;;;;uDAIuD;AACvD,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,MAAM,CAWvG;AAED,MAAM,WAAW,QAAQ;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAEjE,kEAAkE;AAClE,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B;;;2EAG2E;AAC3E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW9E;AAED;;;;4EAI4E;AAC5E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAY,GAAG,QAAQ,CAarI;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAE3D;AAED;mDACmD;AACnD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED,eAAO,MAAM,KAAK,uBAAuB,CAAC;AAC1C;uDACuD;AACvD,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B;;gDAEgD;AAChD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,MAAoB,GAAG,MAAM,EAAE,CAQxF"}