@corenel/web-ui 0.13.2 → 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.
- package/dist/Composer.d.ts +30 -1
- package/dist/Composer.d.ts.map +1 -1
- package/dist/Composer.js +111 -19
- package/dist/Composer.js.map +1 -1
- package/dist/ContextBar.d.ts +9 -3
- package/dist/ContextBar.d.ts.map +1 -1
- package/dist/ContextBar.js +14 -7
- package/dist/ContextBar.js.map +1 -1
- package/dist/ContextManager.d.ts +10 -2
- package/dist/ContextManager.d.ts.map +1 -1
- package/dist/ContextManager.js +14 -10
- package/dist/ContextManager.js.map +1 -1
- package/dist/DictateButton.d.ts +21 -1
- package/dist/DictateButton.d.ts.map +1 -1
- package/dist/DictateButton.js +73 -10
- package/dist/DictateButton.js.map +1 -1
- package/dist/PickChips.d.ts +6 -0
- package/dist/PickChips.d.ts.map +1 -0
- package/dist/PickChips.js +55 -0
- package/dist/PickChips.js.map +1 -0
- package/dist/ProcessDock.d.ts +10 -0
- package/dist/ProcessDock.d.ts.map +1 -1
- package/dist/ProcessDock.js +24 -1
- package/dist/ProcessDock.js.map +1 -1
- package/dist/RichContent.d.ts.map +1 -1
- package/dist/RichContent.js +102 -24
- package/dist/RichContent.js.map +1 -1
- package/dist/SummaryTranscript.d.ts +5 -1
- package/dist/SummaryTranscript.d.ts.map +1 -1
- package/dist/SummaryTranscript.js +5 -3
- package/dist/SummaryTranscript.js.map +1 -1
- package/dist/TodoBar.d.ts +2 -0
- package/dist/TodoBar.d.ts.map +1 -1
- package/dist/TodoBar.js +8 -0
- package/dist/TodoBar.js.map +1 -1
- package/dist/TodoLine.d.ts +11 -0
- package/dist/TodoLine.d.ts.map +1 -0
- package/dist/TodoLine.js +55 -0
- package/dist/TodoLine.js.map +1 -0
- package/dist/ToolFold.js +1 -1
- package/dist/ToolFold.js.map +1 -1
- package/dist/Transcript.d.ts +19 -1
- package/dist/Transcript.d.ts.map +1 -1
- package/dist/Transcript.js +127 -58
- package/dist/Transcript.js.map +1 -1
- package/dist/agentChat/AgentChat.d.ts +42 -0
- package/dist/agentChat/AgentChat.d.ts.map +1 -1
- package/dist/agentChat/AgentChat.js +573 -100
- package/dist/agentChat/AgentChat.js.map +1 -1
- package/dist/agentChat/ChatSettingsSheet.d.ts +9 -0
- package/dist/agentChat/ChatSettingsSheet.d.ts.map +1 -0
- package/dist/agentChat/ChatSettingsSheet.js +103 -0
- package/dist/agentChat/ChatSettingsSheet.js.map +1 -0
- package/dist/agentChat/OptionsDrawer.d.ts +8 -0
- package/dist/agentChat/OptionsDrawer.d.ts.map +1 -1
- package/dist/agentChat/OptionsDrawer.js +24 -215
- package/dist/agentChat/OptionsDrawer.js.map +1 -1
- package/dist/agentChat/PlanReview.d.ts +1 -1
- package/dist/agentChat/PlanReview.d.ts.map +1 -1
- package/dist/agentChat/PlanReview.js +1 -1
- package/dist/agentChat/PlanReview.js.map +1 -1
- package/dist/agentChat/SourceGroups.d.ts +24 -0
- package/dist/agentChat/SourceGroups.d.ts.map +1 -0
- package/dist/agentChat/SourceGroups.js +117 -0
- package/dist/agentChat/SourceGroups.js.map +1 -0
- package/dist/agentChat/controller.d.ts +30 -1
- package/dist/agentChat/controller.d.ts.map +1 -1
- package/dist/agentChat/controller.js.map +1 -1
- package/dist/agentChat/pendingQueue.d.ts +4 -0
- package/dist/agentChat/pendingQueue.d.ts.map +1 -1
- package/dist/agentChat/pendingQueue.js +7 -0
- package/dist/agentChat/pendingQueue.js.map +1 -1
- package/dist/agentChat/planTool.d.ts +4 -0
- package/dist/agentChat/planTool.d.ts.map +1 -0
- package/dist/agentChat/planTool.js +4 -0
- package/dist/agentChat/planTool.js.map +1 -0
- package/dist/agentChat/testSheetHost.d.ts +3 -0
- package/dist/agentChat/testSheetHost.d.ts.map +1 -0
- package/dist/agentChat/testSheetHost.js +9 -0
- package/dist/agentChat/testSheetHost.js.map +1 -0
- package/dist/agentChat/useChatOptions.d.ts +63 -0
- package/dist/agentChat/useChatOptions.d.ts.map +1 -0
- package/dist/agentChat/useChatOptions.js +156 -0
- package/dist/agentChat/useChatOptions.js.map +1 -0
- package/dist/chatRefreshContext.d.ts +8 -0
- package/dist/chatRefreshContext.d.ts.map +1 -0
- package/dist/chatRefreshContext.js +14 -0
- package/dist/chatRefreshContext.js.map +1 -0
- package/dist/chatSkinContext.d.ts +13 -6
- package/dist/chatSkinContext.d.ts.map +1 -1
- package/dist/chatSkinContext.js +18 -4
- package/dist/chatSkinContext.js.map +1 -1
- package/dist/chatSkinCss.d.ts.map +1 -1
- package/dist/chatSkinCss.js +108 -22
- package/dist/chatSkinCss.js.map +1 -1
- package/dist/composerAction.d.ts +16 -0
- package/dist/composerAction.d.ts.map +1 -0
- package/dist/composerAction.js +20 -0
- package/dist/composerAction.js.map +1 -0
- package/dist/composerHistory.d.ts.map +1 -1
- package/dist/composerHistory.js +4 -1
- package/dist/composerHistory.js.map +1 -1
- package/dist/fx/LiveAnswer.d.ts.map +1 -1
- package/dist/fx/LiveAnswer.js +324 -59
- package/dist/fx/LiveAnswer.js.map +1 -1
- package/dist/fx/arrivalModes.d.ts +17 -2
- package/dist/fx/arrivalModes.d.ts.map +1 -1
- package/dist/fx/arrivalModes.js +46 -4
- package/dist/fx/arrivalModes.js.map +1 -1
- package/dist/fx/pacer.d.ts +41 -0
- package/dist/fx/pacer.d.ts.map +1 -0
- package/dist/fx/pacer.js +66 -0
- package/dist/fx/pacer.js.map +1 -0
- package/dist/fx/useReveal.d.ts +16 -1
- package/dist/fx/useReveal.d.ts.map +1 -1
- package/dist/fx/useReveal.js +101 -41
- package/dist/fx/useReveal.js.map +1 -1
- package/dist/localAddress.d.ts +2 -0
- package/dist/localAddress.d.ts.map +1 -0
- package/dist/localAddress.js +56 -0
- package/dist/localAddress.js.map +1 -0
- package/dist/steps/AfterReply.d.ts +67 -0
- package/dist/steps/AfterReply.d.ts.map +1 -0
- package/dist/steps/AfterReply.js +217 -0
- package/dist/steps/AfterReply.js.map +1 -0
- package/dist/steps/ChatApproval.d.ts +18 -0
- package/dist/steps/ChatApproval.d.ts.map +1 -0
- package/dist/steps/ChatApproval.js +35 -0
- package/dist/steps/ChatApproval.js.map +1 -0
- package/dist/steps/Delegation.d.ts +77 -0
- package/dist/steps/Delegation.d.ts.map +1 -0
- package/dist/steps/Delegation.js +188 -0
- package/dist/steps/Delegation.js.map +1 -0
- package/dist/steps/LiveRail.d.ts +14 -0
- package/dist/steps/LiveRail.d.ts.map +1 -0
- package/dist/steps/LiveRail.js +16 -0
- package/dist/steps/LiveRail.js.map +1 -0
- package/dist/steps/StepDetail.d.ts +23 -0
- package/dist/steps/StepDetail.d.ts.map +1 -0
- package/dist/steps/StepDetail.js +195 -0
- package/dist/steps/StepDetail.js.map +1 -0
- package/dist/steps/StepDetailHost.d.ts +54 -0
- package/dist/steps/StepDetailHost.d.ts.map +1 -0
- package/dist/steps/StepDetailHost.js +175 -0
- package/dist/steps/StepDetailHost.js.map +1 -0
- package/dist/steps/StepRail.d.ts +38 -0
- package/dist/steps/StepRail.d.ts.map +1 -0
- package/dist/steps/StepRail.js +238 -0
- package/dist/steps/StepRail.js.map +1 -0
- package/dist/steps/approval.d.ts +73 -0
- package/dist/steps/approval.d.ts.map +1 -0
- package/dist/steps/approval.js +81 -0
- package/dist/steps/approval.js.map +1 -0
- package/dist/steps/model.d.ts +140 -0
- package/dist/steps/model.d.ts.map +1 -0
- package/dist/steps/model.js +433 -0
- package/dist/steps/model.js.map +1 -0
- package/dist/steps/outcome.d.ts +5 -0
- package/dist/steps/outcome.d.ts.map +1 -0
- package/dist/steps/outcome.js +34 -0
- package/dist/steps/outcome.js.map +1 -0
- package/dist/steps/peek.d.ts +35 -0
- package/dist/steps/peek.d.ts.map +1 -0
- package/dist/steps/peek.js +219 -0
- package/dist/steps/peek.js.map +1 -0
- package/dist/steps/plan.d.ts +50 -0
- package/dist/steps/plan.d.ts.map +1 -0
- package/dist/steps/plan.js +242 -0
- package/dist/steps/plan.js.map +1 -0
- package/dist/steps/useRailDetail.d.ts +25 -0
- package/dist/steps/useRailDetail.d.ts.map +1 -0
- package/dist/steps/useRailDetail.js +108 -0
- package/dist/steps/useRailDetail.js.map +1 -0
- package/dist/steps/words.d.ts +40 -0
- package/dist/steps/words.d.ts.map +1 -0
- package/dist/steps/words.js +247 -0
- package/dist/steps/words.js.map +1 -0
- package/dist/toolRender.d.ts +27 -1
- package/dist/toolRender.d.ts.map +1 -1
- package/dist/toolRender.js +72 -4
- package/dist/toolRender.js.map +1 -1
- package/dist/transcriptSkin.d.ts.map +1 -1
- package/dist/transcriptSkin.js +66 -0
- package/dist/transcriptSkin.js.map +1 -1
- package/dist/transcriptSkinCss.d.ts +35 -0
- package/dist/transcriptSkinCss.d.ts.map +1 -1
- package/dist/transcriptSkinCss.js +360 -19
- package/dist/transcriptSkinCss.js.map +1 -1
- package/dist/useHoldPress.d.ts +24 -0
- package/dist/useHoldPress.d.ts.map +1 -0
- package/dist/useHoldPress.js +85 -0
- package/dist/useHoldPress.js.map +1 -0
- package/package.json +5 -5
package/dist/fx/LiveAnswer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
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,
|
|
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
|
-
//
|
|
61
|
-
el.style.setProperty('-webkit-text-fill-color', 'transparent');
|
|
62
|
-
el.style.setProperty('-webkit-text-stroke', '0.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
149
|
-
|
|
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
|
|
154
|
-
const
|
|
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
|
-
|
|
164
|
-
|
|
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
|
-
|
|
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
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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
|
-
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
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
|
|
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
|
-
|
|
328
|
+
posted.current = { blocks: -1, lines: 0, lastH: 0, committed: 0 };
|
|
197
329
|
return;
|
|
198
330
|
}
|
|
199
331
|
const blocks = renderedBlocks(root);
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
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(
|
|
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
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
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',
|
|
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;
|
|
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"}
|