@ttt-productions/chat-core 0.4.22 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +6 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -5
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/mentions/MentionAutocomplete.d.ts +22 -0
- package/dist/mentions/MentionAutocomplete.d.ts.map +1 -0
- package/dist/mentions/MentionAutocomplete.js +21 -0
- package/dist/mentions/MentionAutocomplete.js.map +1 -0
- package/dist/mentions/MessageText.d.ts +27 -0
- package/dist/mentions/MessageText.d.ts.map +1 -0
- package/dist/mentions/MessageText.js +20 -0
- package/dist/mentions/MessageText.js.map +1 -0
- package/dist/mentions/parser.d.ts +33 -0
- package/dist/mentions/parser.d.ts.map +1 -0
- package/dist/mentions/parser.js +61 -0
- package/dist/mentions/parser.js.map +1 -0
- package/dist/mentions/types.d.ts +91 -0
- package/dist/mentions/types.d.ts.map +1 -0
- package/dist/mentions/types.js +14 -0
- package/dist/mentions/types.js.map +1 -0
- package/dist/mentions/use-mention-autocomplete.d.ts +81 -0
- package/dist/mentions/use-mention-autocomplete.d.ts.map +1 -0
- package/dist/mentions/use-mention-autocomplete.js +323 -0
- package/dist/mentions/use-mention-autocomplete.js.map +1 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +3 -0
- package/dist/react/index.js.map +1 -1
- package/dist/schemas/index.d.ts +14 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +14 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/types.d.ts +72 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ui/ChatShell.d.ts.map +1 -1
- package/dist/ui/ChatShell.js +1 -1
- package/dist/ui/ChatShell.js.map +1 -1
- package/dist/ui/Composer.d.ts +1 -0
- package/dist/ui/Composer.d.ts.map +1 -1
- package/dist/ui/Composer.js +30 -14
- package/dist/ui/Composer.js.map +1 -1
- package/dist/ui/MessageItemDefault.d.ts.map +1 -1
- package/dist/ui/MessageItemDefault.js +3 -2
- package/dist/ui/MessageItemDefault.js.map +1 -1
- package/package.json +8 -4
- package/src/styles/chat.css +14 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
/**
|
|
3
|
+
* Composer-side mention autocomplete state hook.
|
|
4
|
+
*
|
|
5
|
+
* Detects when the user types the trigger character (default `@`) inside the
|
|
6
|
+
* provided textarea, captures the live query (the text between the trigger
|
|
7
|
+
* and the cursor), debounces searches across all configured providers, and
|
|
8
|
+
* tracks the anchor positions of inserted mentions so the composer can
|
|
9
|
+
* convert display text back to wire tokens on send.
|
|
10
|
+
*
|
|
11
|
+
* Returns an `AutocompleteState` value tailored for the `<MentionAutocomplete>`
|
|
12
|
+
* UI component, plus an `insertMention` action and a `getValueWithTokens`
|
|
13
|
+
* accessor the composer calls on send.
|
|
14
|
+
*
|
|
15
|
+
* Generic over `TKind` and `TContext`; chat-core inspects neither.
|
|
16
|
+
*/
|
|
17
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
18
|
+
import { formatMentionToken } from './parser.js';
|
|
19
|
+
function isWordBoundary(ch) {
|
|
20
|
+
return ch === undefined || /\s/.test(ch);
|
|
21
|
+
}
|
|
22
|
+
export function useMentionAutocomplete(args) {
|
|
23
|
+
const { textareaRef, value, onChange, providers, context, recent, trigger = '@', minQueryLength = 0, searchDebounceMs = 200, } = args;
|
|
24
|
+
if (trigger.length !== 1) {
|
|
25
|
+
throw new Error(`useMentionAutocomplete: trigger must be a single character, got ${JSON.stringify(trigger)}`);
|
|
26
|
+
}
|
|
27
|
+
const [open, setOpen] = useState(false);
|
|
28
|
+
const [triggerIndex, setTriggerIndex] = useState(null);
|
|
29
|
+
const [query, setQuery] = useState('');
|
|
30
|
+
const [groups, setGroups] = useState([]);
|
|
31
|
+
const [showingRecent, setShowingRecent] = useState(false);
|
|
32
|
+
const [highlightedIndex, setHighlightedIndex] = useState(0);
|
|
33
|
+
const [anchors, setAnchors] = useState([]);
|
|
34
|
+
// Refs for the latest values so the debounced search reads fresh.
|
|
35
|
+
const valueRef = useRef(value);
|
|
36
|
+
const triggerIndexRef = useRef(triggerIndex);
|
|
37
|
+
const providersRef = useRef(providers);
|
|
38
|
+
const contextRef = useRef(context);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
valueRef.current = value;
|
|
41
|
+
triggerIndexRef.current = triggerIndex;
|
|
42
|
+
providersRef.current = providers;
|
|
43
|
+
contextRef.current = context;
|
|
44
|
+
});
|
|
45
|
+
const flatResults = useMemo(() => groups.flatMap((g) => g.results), [groups]);
|
|
46
|
+
const close = useCallback(() => {
|
|
47
|
+
setOpen(false);
|
|
48
|
+
setTriggerIndex(null);
|
|
49
|
+
setQuery('');
|
|
50
|
+
setGroups([]);
|
|
51
|
+
setHighlightedIndex(0);
|
|
52
|
+
setShowingRecent(false);
|
|
53
|
+
}, []);
|
|
54
|
+
/**
|
|
55
|
+
* Detect trigger state based on current value + cursor position.
|
|
56
|
+
* Called from useEffect on value changes.
|
|
57
|
+
*/
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
const ta = textareaRef.current;
|
|
60
|
+
if (!ta)
|
|
61
|
+
return;
|
|
62
|
+
const cursor = ta.selectionStart;
|
|
63
|
+
if (cursor === null)
|
|
64
|
+
return;
|
|
65
|
+
// Walk backwards from the cursor to find the trigger character, stopping
|
|
66
|
+
// at a whitespace boundary or the start of the string.
|
|
67
|
+
let i = cursor - 1;
|
|
68
|
+
while (i >= 0) {
|
|
69
|
+
const ch = value[i];
|
|
70
|
+
if (ch === trigger) {
|
|
71
|
+
// Trigger only counts if the character before it is whitespace or BoL.
|
|
72
|
+
if (i === 0 || /\s/.test(value[i - 1])) {
|
|
73
|
+
const q = value.slice(i + 1, cursor);
|
|
74
|
+
// If the slice contains whitespace, the trigger run has been broken.
|
|
75
|
+
if (/\s/.test(q)) {
|
|
76
|
+
close();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
setTriggerIndex(i);
|
|
80
|
+
setQuery(q);
|
|
81
|
+
setOpen(true);
|
|
82
|
+
setHighlightedIndex(0);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
// Inline `@` not at word boundary — not a trigger.
|
|
86
|
+
close();
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (/\s/.test(ch)) {
|
|
90
|
+
close();
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
i -= 1;
|
|
94
|
+
}
|
|
95
|
+
close();
|
|
96
|
+
// We intentionally watch value AND the textarea's cursor position via the
|
|
97
|
+
// event chain — selectionStart updates synchronously with input/key events.
|
|
98
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
99
|
+
}, [value, trigger]);
|
|
100
|
+
/**
|
|
101
|
+
* Recompute anchor offsets when the textarea value changes externally
|
|
102
|
+
* (e.g. user deletes text). Drop anchors whose displayed text no longer
|
|
103
|
+
* matches the underlying displayText at their range.
|
|
104
|
+
*/
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
setAnchors((prev) => prev.filter((a) => {
|
|
107
|
+
const expected = `${trigger}${a.ref.displayText}`;
|
|
108
|
+
return value.slice(a.start, a.end) === expected;
|
|
109
|
+
}));
|
|
110
|
+
}, [value, trigger]);
|
|
111
|
+
/**
|
|
112
|
+
* Search: fires whenever query opens / changes. Debounced. Cancels in-flight
|
|
113
|
+
* via AbortController.
|
|
114
|
+
*/
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
if (!open) {
|
|
117
|
+
setGroups([]);
|
|
118
|
+
setShowingRecent(false);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
let cancelled = false;
|
|
122
|
+
const controller = new AbortController();
|
|
123
|
+
if (query.length < minQueryLength) {
|
|
124
|
+
// Below threshold: show recent picks if adapter supplied.
|
|
125
|
+
if (recent) {
|
|
126
|
+
Promise.resolve(recent.getRecent())
|
|
127
|
+
.then((items) => {
|
|
128
|
+
if (cancelled)
|
|
129
|
+
return;
|
|
130
|
+
// Group recent by kind, preserving provider order.
|
|
131
|
+
const byKind = new Map();
|
|
132
|
+
for (const item of items) {
|
|
133
|
+
const arr = byKind.get(item.kind) ?? [];
|
|
134
|
+
arr.push(item);
|
|
135
|
+
byKind.set(item.kind, arr);
|
|
136
|
+
}
|
|
137
|
+
const recentGroups = providers
|
|
138
|
+
.map((p) => ({
|
|
139
|
+
kind: p.kind,
|
|
140
|
+
label: p.label,
|
|
141
|
+
results: byKind.get(p.kind) ?? [],
|
|
142
|
+
loading: false,
|
|
143
|
+
renderResult: p.renderResult,
|
|
144
|
+
}))
|
|
145
|
+
.filter((g) => g.results.length > 0);
|
|
146
|
+
setGroups(recentGroups);
|
|
147
|
+
setShowingRecent(true);
|
|
148
|
+
setHighlightedIndex(0);
|
|
149
|
+
})
|
|
150
|
+
.catch(() => {
|
|
151
|
+
if (!cancelled) {
|
|
152
|
+
setGroups([]);
|
|
153
|
+
setShowingRecent(false);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
setGroups([]);
|
|
159
|
+
setShowingRecent(false);
|
|
160
|
+
}
|
|
161
|
+
return () => {
|
|
162
|
+
cancelled = true;
|
|
163
|
+
controller.abort();
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
setShowingRecent(false);
|
|
167
|
+
// Initial: each group loading.
|
|
168
|
+
setGroups(providers.map((p) => ({
|
|
169
|
+
kind: p.kind,
|
|
170
|
+
label: p.label,
|
|
171
|
+
results: [],
|
|
172
|
+
loading: true,
|
|
173
|
+
renderResult: p.renderResult,
|
|
174
|
+
})));
|
|
175
|
+
const timer = setTimeout(() => {
|
|
176
|
+
providers.forEach((provider, i) => {
|
|
177
|
+
provider
|
|
178
|
+
.search({ query, context, signal: controller.signal })
|
|
179
|
+
.then((results) => {
|
|
180
|
+
if (cancelled)
|
|
181
|
+
return;
|
|
182
|
+
setGroups((prev) => {
|
|
183
|
+
const next = prev.slice();
|
|
184
|
+
next[i] = { ...next[i], results, loading: false };
|
|
185
|
+
return next;
|
|
186
|
+
});
|
|
187
|
+
})
|
|
188
|
+
.catch(() => {
|
|
189
|
+
if (cancelled)
|
|
190
|
+
return;
|
|
191
|
+
setGroups((prev) => {
|
|
192
|
+
const next = prev.slice();
|
|
193
|
+
next[i] = { ...next[i], results: [], loading: false };
|
|
194
|
+
return next;
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
}, searchDebounceMs);
|
|
199
|
+
return () => {
|
|
200
|
+
cancelled = true;
|
|
201
|
+
controller.abort();
|
|
202
|
+
clearTimeout(timer);
|
|
203
|
+
};
|
|
204
|
+
// We deliberately depend on `query` + `open` only; `providers` / `context`
|
|
205
|
+
// are read via refs to avoid re-firing on identity changes.
|
|
206
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
207
|
+
}, [open, query, minQueryLength, searchDebounceMs, recent]);
|
|
208
|
+
const insertMention = useCallback((ref) => {
|
|
209
|
+
const ti = triggerIndexRef.current;
|
|
210
|
+
if (ti === null)
|
|
211
|
+
return;
|
|
212
|
+
const ta = textareaRef.current;
|
|
213
|
+
if (!ta)
|
|
214
|
+
return;
|
|
215
|
+
const before = valueRef.current.slice(0, ti);
|
|
216
|
+
// Cursor at point of insertion — current selection end captures the
|
|
217
|
+
// typed query.
|
|
218
|
+
const cursor = ta.selectionStart ?? ti + 1 + query.length;
|
|
219
|
+
const after = valueRef.current.slice(cursor);
|
|
220
|
+
const insertion = `${trigger}${ref.displayText}`;
|
|
221
|
+
// Add a trailing space unless there is an explicit whitespace character
|
|
222
|
+
// immediately after the insertion point (don't double-space). End-of-string
|
|
223
|
+
// (after[0] === undefined) always adds a space so the cursor clears the
|
|
224
|
+
// trigger run and the autocomplete doesn't re-open.
|
|
225
|
+
const trailing = (after[0] !== undefined && isWordBoundary(after[0])) ? '' : ' ';
|
|
226
|
+
const next = `${before}${insertion}${trailing}${after}`;
|
|
227
|
+
const anchorStart = ti;
|
|
228
|
+
const anchorEnd = ti + insertion.length;
|
|
229
|
+
onChange(next);
|
|
230
|
+
setAnchors((prev) => {
|
|
231
|
+
// Shift any later anchors by the net change in length.
|
|
232
|
+
const delta = insertion.length + trailing.length - (cursor - ti);
|
|
233
|
+
const shifted = prev.map((a) => a.start >= cursor ? { ...a, start: a.start + delta, end: a.end + delta } : a);
|
|
234
|
+
return [...shifted, { start: anchorStart, end: anchorEnd, ref }];
|
|
235
|
+
});
|
|
236
|
+
// Fire recent-use without awaiting.
|
|
237
|
+
if (recent?.recordUse) {
|
|
238
|
+
try {
|
|
239
|
+
const result = recent.recordUse(ref);
|
|
240
|
+
if (result && typeof result.then === 'function') {
|
|
241
|
+
result.catch(() => undefined);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
// Swallow — recent-use is best-effort.
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
close();
|
|
249
|
+
// Move cursor to just after the inserted mention (+ optional trailing space).
|
|
250
|
+
// Defer so the controlled value flush completes first.
|
|
251
|
+
const newCursor = anchorEnd + trailing.length;
|
|
252
|
+
queueMicrotask(() => {
|
|
253
|
+
const t = textareaRef.current;
|
|
254
|
+
if (t) {
|
|
255
|
+
t.focus();
|
|
256
|
+
t.setSelectionRange(newCursor, newCursor);
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}, [trigger, query.length, onChange, recent, close, textareaRef]);
|
|
260
|
+
const handleKeyDown = useCallback((event) => {
|
|
261
|
+
if (!open)
|
|
262
|
+
return false;
|
|
263
|
+
if (flatResults.length === 0 && event.key !== 'Escape') {
|
|
264
|
+
// Allow Escape to close even with no results; otherwise pass through.
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
switch (event.key) {
|
|
268
|
+
case 'ArrowDown':
|
|
269
|
+
event.preventDefault();
|
|
270
|
+
setHighlightedIndex((i) => (i + 1) % Math.max(flatResults.length, 1));
|
|
271
|
+
return true;
|
|
272
|
+
case 'ArrowUp':
|
|
273
|
+
event.preventDefault();
|
|
274
|
+
setHighlightedIndex((i) => (i - 1 + flatResults.length) % Math.max(flatResults.length, 1));
|
|
275
|
+
return true;
|
|
276
|
+
case 'Enter':
|
|
277
|
+
case 'Tab': {
|
|
278
|
+
if (flatResults.length === 0)
|
|
279
|
+
return false;
|
|
280
|
+
event.preventDefault();
|
|
281
|
+
const pick = flatResults[Math.min(highlightedIndex, flatResults.length - 1)];
|
|
282
|
+
if (pick)
|
|
283
|
+
insertMention(pick);
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
case 'Escape':
|
|
287
|
+
event.preventDefault();
|
|
288
|
+
close();
|
|
289
|
+
return true;
|
|
290
|
+
default:
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
}, [open, flatResults, highlightedIndex, insertMention, close]);
|
|
294
|
+
const getValueWithTokens = useCallback(() => {
|
|
295
|
+
if (anchors.length === 0)
|
|
296
|
+
return valueRef.current;
|
|
297
|
+
// Sort anchors by start ASC, then substitute. Walk the value left → right
|
|
298
|
+
// building the result with mention tokens swapped in at each anchor's range.
|
|
299
|
+
const sorted = [...anchors].sort((a, b) => a.start - b.start);
|
|
300
|
+
const v = valueRef.current;
|
|
301
|
+
let out = '';
|
|
302
|
+
let cursor = 0;
|
|
303
|
+
for (const a of sorted) {
|
|
304
|
+
if (a.start < cursor)
|
|
305
|
+
continue; // overlapping; drop (shouldn't happen)
|
|
306
|
+
out += v.slice(cursor, a.start);
|
|
307
|
+
out += formatMentionToken(a.ref);
|
|
308
|
+
cursor = a.end;
|
|
309
|
+
}
|
|
310
|
+
out += v.slice(cursor);
|
|
311
|
+
return out;
|
|
312
|
+
}, [anchors]);
|
|
313
|
+
const state = {
|
|
314
|
+
open,
|
|
315
|
+
query,
|
|
316
|
+
groups,
|
|
317
|
+
showingRecent,
|
|
318
|
+
highlightedIndex,
|
|
319
|
+
flatResults,
|
|
320
|
+
};
|
|
321
|
+
return { state, handleKeyDown, insertMention, getValueWithTokens, anchors, close };
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=use-mention-autocomplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-mention-autocomplete.js","sourceRoot":"","sources":["../../src/mentions/use-mention-autocomplete.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -11,4 +11,7 @@ export { Composer } from "../ui/Composer.js";
|
|
|
11
11
|
export type { MessageItemDefaultProps } from "../ui/MessageItemDefault.js";
|
|
12
12
|
export { MessageItemDefault } from "../ui/MessageItemDefault.js";
|
|
13
13
|
export { MessageActions, ThreadActions } from "../ui/menus.js";
|
|
14
|
+
export { MessageText, type MessageTextProps } from "../mentions/MessageText.js";
|
|
15
|
+
export { MentionAutocomplete, type MentionAutocompleteProps, } from "../mentions/MentionAutocomplete.js";
|
|
16
|
+
export { useMentionAutocomplete, type UseMentionAutocompleteArgs, type UseMentionAutocompleteResult, type AutocompleteState, type AutocompleteResultGroup, } from "../mentions/use-mention-autocomplete.js";
|
|
14
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE1J,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE1J,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yCAAyC,CAAC"}
|
package/dist/react/index.js
CHANGED
|
@@ -7,4 +7,7 @@ export { MessageList } from "../ui/MessageList.js";
|
|
|
7
7
|
export { Composer } from "../ui/Composer.js";
|
|
8
8
|
export { MessageItemDefault } from "../ui/MessageItemDefault.js";
|
|
9
9
|
export { MessageActions, ThreadActions } from "../ui/menus.js";
|
|
10
|
+
export { MessageText } from "../mentions/MessageText.js";
|
|
11
|
+
export { MentionAutocomplete, } from "../mentions/MentionAutocomplete.js";
|
|
12
|
+
export { useMentionAutocomplete, } from "../mentions/use-mention-autocomplete.js";
|
|
10
13
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAG1J,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAG1J,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAyB,MAAM,4BAA4B,CAAC;AAChF,OAAO,EACL,mBAAmB,GAEpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,sBAAsB,GAKvB,MAAM,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* chat-core's schema-only subpath.
|
|
3
|
+
*
|
|
4
|
+
* Thin re-export of `@ttt-productions/chat-schemas`. Kept here for backward
|
|
5
|
+
* compatibility with consumers importing from `@ttt-productions/chat-core/schemas`
|
|
6
|
+
* and to satisfy the F21 subpath contract — the actual canonical Zod source
|
|
7
|
+
* lives in the tier-0 `chat-schemas` package, where it can be consumed by both
|
|
8
|
+
* chat-core (UI) and ttt-core (callable composition) without forcing the chat
|
|
9
|
+
* UI dependency graph on backend / schema callers.
|
|
10
|
+
*
|
|
11
|
+
* No React. No upload-ui. No browser code. No styles.
|
|
12
|
+
*/
|
|
13
|
+
export { ChatAttachmentSchema, ReplyToSchema, type ChatAttachment, type ReplyTo, } from '@ttt-productions/chat-schemas';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,OAAO,GACb,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* chat-core's schema-only subpath.
|
|
3
|
+
*
|
|
4
|
+
* Thin re-export of `@ttt-productions/chat-schemas`. Kept here for backward
|
|
5
|
+
* compatibility with consumers importing from `@ttt-productions/chat-core/schemas`
|
|
6
|
+
* and to satisfy the F21 subpath contract — the actual canonical Zod source
|
|
7
|
+
* lives in the tier-0 `chat-schemas` package, where it can be consumed by both
|
|
8
|
+
* chat-core (UI) and ttt-core (callable composition) without forcing the chat
|
|
9
|
+
* UI dependency graph on backend / schema callers.
|
|
10
|
+
*
|
|
11
|
+
* No React. No upload-ui. No browser code. No styles.
|
|
12
|
+
*/
|
|
13
|
+
export { ChatAttachmentSchema, ReplyToSchema, } from '@ttt-productions/chat-schemas';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,oBAAoB,EACpB,aAAa,GAGd,MAAM,+BAA+B,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Firestore } from "firebase/firestore";
|
|
2
2
|
import type { FirebaseStorage } from "firebase/storage";
|
|
3
|
-
import type {
|
|
3
|
+
import type { MediaOriginSpec } from "@ttt-productions/media-schemas";
|
|
4
4
|
export type ChatAttachment = {
|
|
5
5
|
id: string;
|
|
6
6
|
name: string;
|
|
@@ -70,15 +70,51 @@ export type ChatCoreConfig = {
|
|
|
70
70
|
threadAllowedUserIds?: string[];
|
|
71
71
|
createdAtField?: string;
|
|
72
72
|
pageSize?: number;
|
|
73
|
+
/**
|
|
74
|
+
* Optional mention system configuration. When present, the composer enables
|
|
75
|
+
* `@`-trigger autocomplete using the supplied providers and renders mention
|
|
76
|
+
* chips in messages. Each provider corresponds to one mention kind.
|
|
77
|
+
*/
|
|
78
|
+
mentionConfig?: ChatMentionConfig;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Pluggable upload-path strategy for chat attachments.
|
|
82
|
+
*
|
|
83
|
+
* Consumers supply this to tell chat-core (a) what opaque origin identifier
|
|
84
|
+
* to record for the upload, (b) how to build the Firebase Storage path for
|
|
85
|
+
* the temporary upload, and (c) optional extra metadata to attach to the
|
|
86
|
+
* Storage object.
|
|
87
|
+
*
|
|
88
|
+
* `buildUploadPath` and `buildUploadMetadata` receive the userId and
|
|
89
|
+
* attachmentId so consumers can interpolate them per their own conventions.
|
|
90
|
+
* chat-core does not interpret `originId` — it forwards it via callbacks
|
|
91
|
+
* and uses it for adapter identity only.
|
|
92
|
+
*/
|
|
93
|
+
export type ChatUploadAdapter = {
|
|
94
|
+
/** Opaque origin identifier (e.g. "chat-attachment"). Not interpreted by chat-core. */
|
|
95
|
+
originId: string;
|
|
96
|
+
/** Build the Firebase Storage path for the upload. Called once per attachment. */
|
|
97
|
+
buildUploadPath: (args: {
|
|
98
|
+
userId: string;
|
|
99
|
+
attachmentId: string;
|
|
100
|
+
}) => string;
|
|
101
|
+
/** Optional extra metadata merged onto the Storage object metadata (e.g. customMetadata). */
|
|
102
|
+
buildUploadMetadata?: (args: {
|
|
103
|
+
userId: string;
|
|
104
|
+
attachmentId: string;
|
|
105
|
+
}) => Record<string, unknown>;
|
|
73
106
|
};
|
|
74
107
|
export type ChatAttachmentConfig = {
|
|
75
|
-
attachmentSpec:
|
|
108
|
+
attachmentSpec: MediaOriginSpec;
|
|
76
109
|
storage: FirebaseStorage;
|
|
110
|
+
/** The current user's auth uid. Forwarded to `uploadAdapter` callbacks. */
|
|
111
|
+
userId: string;
|
|
77
112
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
113
|
+
* Pluggable upload-path strategy. Consumers wire this to their app's
|
|
114
|
+
* conventions (e.g. for TTT: originId "chat-attachment", path
|
|
115
|
+
* `uploads/chat-attachment/{userId}/{attachmentId}`).
|
|
80
116
|
*/
|
|
81
|
-
|
|
117
|
+
uploadAdapter: ChatUploadAdapter;
|
|
82
118
|
};
|
|
83
119
|
/**
|
|
84
120
|
* Called by Composer after the file has been uploaded to Storage. The consumer
|
|
@@ -102,6 +138,37 @@ export type SendAttachmentInput = {
|
|
|
102
138
|
replyTo?: ChatMessageV1["replyTo"];
|
|
103
139
|
};
|
|
104
140
|
export type SendAttachmentFn = (input: SendAttachmentInput) => Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Pluggable mention system config. When attached to ChatCoreConfig, the
|
|
143
|
+
* composer enables `@`-trigger autocomplete and the message renderer parses
|
|
144
|
+
* mention tokens out of `text`.
|
|
145
|
+
*
|
|
146
|
+
* Generic over `TKind` and `TContext` is intentionally NOT exposed here at
|
|
147
|
+
* the type level — `ChatCoreConfig` would have to become generic too, which
|
|
148
|
+
* cascades. Instead this type accepts permissive `string`-keyed providers;
|
|
149
|
+
* consumers binding stricter kind unions narrow at the call site via their
|
|
150
|
+
* provider definitions.
|
|
151
|
+
*/
|
|
152
|
+
export type ChatMentionConfig = {
|
|
153
|
+
/** Providers in display order. */
|
|
154
|
+
providers: import('./mentions/types.js').MentionProvider<string, unknown>[];
|
|
155
|
+
/** Context object forwarded to every provider's `search`. */
|
|
156
|
+
context: unknown;
|
|
157
|
+
/** Optional recent-mentions adapter. */
|
|
158
|
+
recent?: import('./mentions/types.js').RecentMentionsAdapter<string>;
|
|
159
|
+
/** Trigger character. Defaults to `'@'`. */
|
|
160
|
+
trigger?: string;
|
|
161
|
+
/** Minimum query length before search fires. Default: 0. */
|
|
162
|
+
minQueryLength?: number;
|
|
163
|
+
/** Search debounce window in ms. Default: 200. */
|
|
164
|
+
searchDebounceMs?: number;
|
|
165
|
+
/**
|
|
166
|
+
* Optional custom renderer for mentions inside rendered message text.
|
|
167
|
+
* When omitted, the default chip (`<span class="chat-mention-chip">`) is
|
|
168
|
+
* used. Receives the resolved MentionRef.
|
|
169
|
+
*/
|
|
170
|
+
renderMention?: (ref: import('./mentions/types.js').MentionRef) => import('react').ReactNode;
|
|
171
|
+
};
|
|
105
172
|
export type ModerationHandlers = {
|
|
106
173
|
onReportMessage?: (messageId: string, reason?: string) => void | Promise<void>;
|
|
107
174
|
onReportThread?: (threadId: string, reason?: string) => void | Promise<void>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAuOA,+CAA+C;AAC/C,kDAAkD;AAClD,+CAA+C;AAE/C,iEAAiE;AACjE,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatShell.d.ts","sourceRoot":"","sources":["../../src/ui/ChatShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAQrB,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,cAAc,CAAC;IAGvB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAGzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5E,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAG9B,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,mBAAmB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAC5C,mBAAmB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAC5C,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAGrC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAGhE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"ChatShell.d.ts","sourceRoot":"","sources":["../../src/ui/ChatShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAQrB,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,cAAc,CAAC;IAGvB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAGzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5E,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAG9B,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,mBAAmB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAC5C,mBAAmB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAC5C,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAGrC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAGhE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CA2G9C"}
|
package/dist/ui/ChatShell.js
CHANGED
|
@@ -17,6 +17,6 @@ export function ChatShell(props) {
|
|
|
17
17
|
if (isInitialLoading) {
|
|
18
18
|
return (_jsxs(Card, { className: "w-full", children: [_jsxs(CardHeader, { className: "space-y-2", children: [_jsx(Skeleton, { className: "h-5 w-40" }), _jsx(Skeleton, { className: "h-3 w-56" })] }), _jsx(CardContent, { children: _jsx(Skeleton, { className: "h-[240px] w-full" }) }), _jsx(CardFooter, { children: _jsx(Skeleton, { className: "h-10 w-full" }) })] }));
|
|
19
19
|
}
|
|
20
|
-
return (_jsxs(Card, { className: "w-full", children: [(header || handlers) && (_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-4 space-y-0", children: [_jsx("div", { children: header }), _jsx("div", { className: "flex flex-col items-end gap-2", children: _jsx(ThreadActions, { threadId: config.threadId, isAdmin: config.isAdmin, handlers: handlers }) })] })), renderAboveMessages && (_jsx("div", { className: "border-b", children: renderAboveMessages() })), _jsx(CardContent, { className: "p-0", children: _jsx(MessageList, { messages: messages, currentUserId: config.currentUserId, isAdmin: config.isAdmin, isFetchingOlder: isFetchingOlder, hasOlder: hasOlder, onLoadOlder: () => fetchOlder(), renderMessage: renderMessage, messageRenderers: messageRenderers, showScrollToBottom: showScrollToBottom, onScrollToBottom: () => setShowScrollToBottom(false), handlers: handlers, onSenderClick: onSenderClick }) }), renderBelowMessages && (_jsx("div", { className: "border-t", children: renderBelowMessages() })), renderFooter ? (_jsx(CardFooter, { className: "border-t", children: renderFooter() })) : (_jsx(CardFooter, { className: "border-t", children: _jsx(KeyboardAvoidingView, { padding: true, offset: 8, className: "w-full", children: _jsx(Composer, { onSend: onSend, attachmentConfig: attachmentConfig, sendAttachment: sendAttachment, disabled: composerDisabled, autoFocus: autoFocus, placeholder: composerPlaceholder }) }) }))] }));
|
|
20
|
+
return (_jsxs(Card, { className: "w-full", children: [(header || handlers) && (_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-4 space-y-0", children: [_jsx("div", { children: header }), _jsx("div", { className: "flex flex-col items-end gap-2", children: _jsx(ThreadActions, { threadId: config.threadId, isAdmin: config.isAdmin, handlers: handlers }) })] })), renderAboveMessages && (_jsx("div", { className: "border-b", children: renderAboveMessages() })), _jsx(CardContent, { className: "p-0", children: _jsx(MessageList, { messages: messages, currentUserId: config.currentUserId, isAdmin: config.isAdmin, isFetchingOlder: isFetchingOlder, hasOlder: hasOlder, onLoadOlder: () => fetchOlder(), renderMessage: renderMessage, messageRenderers: messageRenderers, showScrollToBottom: showScrollToBottom, onScrollToBottom: () => setShowScrollToBottom(false), handlers: handlers, onSenderClick: onSenderClick }) }), renderBelowMessages && (_jsx("div", { className: "border-t", children: renderBelowMessages() })), renderFooter ? (_jsx(CardFooter, { className: "border-t", children: renderFooter() })) : (_jsx(CardFooter, { className: "border-t", children: _jsx(KeyboardAvoidingView, { padding: true, offset: 8, className: "w-full", children: _jsx(Composer, { onSend: onSend, attachmentConfig: attachmentConfig, sendAttachment: sendAttachment, disabled: composerDisabled, autoFocus: autoFocus, placeholder: composerPlaceholder, mentionConfig: config.mentionConfig }) }) }))] }));
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=ChatShell.js.map
|
package/dist/ui/ChatShell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatShell.js","sourceRoot":"","sources":["../../src/ui/ChatShell.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ChatShell.js","sourceRoot":"","sources":["../../src/ui/ChatShell.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/Composer.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export type ComposerProps = {
|
|
|
17
17
|
disabled?: boolean;
|
|
18
18
|
autoFocus?: boolean;
|
|
19
19
|
placeholder?: string;
|
|
20
|
+
mentionConfig?: import('../types.js').ChatMentionConfig;
|
|
20
21
|
};
|
|
21
22
|
export declare function Composer(props: ComposerProps): import("react/jsx-runtime").JSX.Element;
|
|
22
23
|
//# sourceMappingURL=Composer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/ui/Composer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/ui/Composer.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAkB,oBAAoB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAwBzG,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5E,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAElC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,aAAa,EAAE,iBAAiB,CAAC;CACzD,CAAC;AAEF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CAkL5C"}
|