@assistant-ui/react 0.4.0 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.js +41 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +41 -30
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
@@ -831,21 +831,30 @@ var ActionBarPrimitiveRoot = forwardRef(({ hideWhenRunning, autohide, autohideFl
|
|
831
831
|
ActionBarPrimitiveRoot.displayName = "ActionBarPrimitive.Root";
|
832
832
|
|
833
833
|
// src/utils/createActionButton.tsx
|
834
|
-
import { composeEventHandlers } from "@radix-ui/primitive";
|
835
|
-
import { Primitive as Primitive2 } from "@radix-ui/react-primitive";
|
836
834
|
import { forwardRef as forwardRef2 } from "react";
|
835
|
+
import { Primitive as Primitive2 } from "@radix-ui/react-primitive";
|
836
|
+
import { composeEventHandlers } from "@radix-ui/primitive";
|
837
837
|
import { jsx as jsx5 } from "react/jsx-runtime";
|
838
|
-
var createActionButton = (displayName, useActionButton) => {
|
838
|
+
var createActionButton = (displayName, useActionButton, forwardProps = []) => {
|
839
839
|
const ActionButton = forwardRef2((props, forwardedRef) => {
|
840
|
-
const
|
840
|
+
const forwardedProps = {};
|
841
|
+
const primitiveProps = {};
|
842
|
+
Object.keys(props).forEach((key) => {
|
843
|
+
if (forwardProps.includes(key)) {
|
844
|
+
forwardedProps[key] = props[key];
|
845
|
+
} else {
|
846
|
+
primitiveProps[key] = props[key];
|
847
|
+
}
|
848
|
+
});
|
849
|
+
const callback = useActionButton(forwardedProps);
|
841
850
|
return /* @__PURE__ */ jsx5(
|
842
851
|
Primitive2.button,
|
843
852
|
{
|
844
853
|
type: "button",
|
845
854
|
disabled: !callback,
|
846
|
-
...
|
855
|
+
...primitiveProps,
|
847
856
|
ref: forwardedRef,
|
848
|
-
onClick: composeEventHandlers(
|
857
|
+
onClick: composeEventHandlers(primitiveProps.onClick, () => {
|
849
858
|
callback?.();
|
850
859
|
})
|
851
860
|
}
|
@@ -858,7 +867,8 @@ var createActionButton = (displayName, useActionButton) => {
|
|
858
867
|
// src/primitives/actionBar/ActionBarCopy.tsx
|
859
868
|
var ActionBarPrimitiveCopy = createActionButton(
|
860
869
|
"ActionBarPrimitive.Copy",
|
861
|
-
useActionBarCopy
|
870
|
+
useActionBarCopy,
|
871
|
+
["copiedDuration"]
|
862
872
|
);
|
863
873
|
|
864
874
|
// src/primitives/actionBar/ActionBarReload.tsx
|
@@ -1171,7 +1181,8 @@ import { forwardRef as forwardRef7 } from "react";
|
|
1171
1181
|
// src/utils/hooks/useSmooth.tsx
|
1172
1182
|
import { useEffect as useEffect8, useState as useState5 } from "react";
|
1173
1183
|
var TextStreamAnimator = class {
|
1174
|
-
constructor(setText) {
|
1184
|
+
constructor(currentText, setText) {
|
1185
|
+
this.currentText = currentText;
|
1175
1186
|
this.setText = setText;
|
1176
1187
|
}
|
1177
1188
|
animationFrameId = null;
|
@@ -1192,33 +1203,31 @@ var TextStreamAnimator = class {
|
|
1192
1203
|
const currentTime = Date.now();
|
1193
1204
|
const deltaTime = currentTime - this.lastUpdateTime;
|
1194
1205
|
let timeToConsume = deltaTime;
|
1195
|
-
this.
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
let charsToAdd = 0;
|
1204
|
-
while (timeToConsume >= baseTimePerChar && charsToAdd < remainingChars) {
|
1205
|
-
charsToAdd++;
|
1206
|
-
timeToConsume -= baseTimePerChar;
|
1207
|
-
}
|
1206
|
+
const remainingChars = this.targetText.length - this.currentText.length;
|
1207
|
+
const baseTimePerChar = Math.min(5, 250 / remainingChars);
|
1208
|
+
let charsToAdd = 0;
|
1209
|
+
while (timeToConsume >= baseTimePerChar && charsToAdd < remainingChars) {
|
1210
|
+
charsToAdd++;
|
1211
|
+
timeToConsume -= baseTimePerChar;
|
1212
|
+
}
|
1213
|
+
if (charsToAdd !== remainingChars) {
|
1208
1214
|
this.animationFrameId = requestAnimationFrame(this.animate);
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1215
|
+
} else {
|
1216
|
+
this.animationFrameId = null;
|
1217
|
+
}
|
1218
|
+
if (charsToAdd === 0) return;
|
1219
|
+
this.currentText = this.targetText.slice(
|
1220
|
+
0,
|
1221
|
+
this.currentText.length + charsToAdd
|
1222
|
+
);
|
1223
|
+
this.lastUpdateTime = currentTime - timeToConsume;
|
1224
|
+
this.setText(this.currentText);
|
1216
1225
|
};
|
1217
1226
|
};
|
1218
1227
|
var useSmooth = (text, smooth = false) => {
|
1219
1228
|
const [displayedText, setDisplayedText] = useState5(text);
|
1220
1229
|
const [animatorRef] = useState5(
|
1221
|
-
new TextStreamAnimator(setDisplayedText)
|
1230
|
+
new TextStreamAnimator(text, setDisplayedText)
|
1222
1231
|
);
|
1223
1232
|
useEffect8(() => {
|
1224
1233
|
if (!smooth) {
|
@@ -1227,6 +1236,7 @@ var useSmooth = (text, smooth = false) => {
|
|
1227
1236
|
}
|
1228
1237
|
if (!text.startsWith(animatorRef.targetText)) {
|
1229
1238
|
setDisplayedText(text);
|
1239
|
+
animatorRef.currentText = text;
|
1230
1240
|
animatorRef.targetText = text;
|
1231
1241
|
animatorRef.stop();
|
1232
1242
|
return;
|
@@ -1885,7 +1895,8 @@ var ThreadPrimitiveScrollToBottom = createActionButton(
|
|
1885
1895
|
// src/primitives/thread/ThreadSuggestion.tsx
|
1886
1896
|
var ThreadPrimitiveSuggestion = createActionButton(
|
1887
1897
|
"ThreadPrimitive.Suggestion",
|
1888
|
-
useThreadSuggestion
|
1898
|
+
useThreadSuggestion,
|
1899
|
+
["prompt", "autoSend", "method"]
|
1889
1900
|
);
|
1890
1901
|
|
1891
1902
|
// src/runtimes/local/useLocalRuntime.tsx
|