@assistant-ui/react
Version:
Open-source TypeScript/React library for building production-grade AI chat experiences
39 lines (38 loc) • 1.26 kB
JavaScript
import { detectTrigger } from "./detectTrigger.js";
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
import { useState } from "@assistant-ui/tap/react-shim";
import { resource } from "@assistant-ui/tap";
// src/primitives/composer/trigger/triggerDetectionResource.ts
/** Tracks cursor position and derives the active trigger + query from composer text. */
const useTriggerDetectionResource = (t0) => {
const $ = c(8);
const { text, triggerChar, matcher } = t0;
const [cursorPosition, setCursorPosition] = useState(text.length);
const pos = Math.min(cursorPosition, text.length);
let t1;
if ($[0] !== matcher || $[1] !== pos || $[2] !== text || $[3] !== triggerChar) {
t1 = detectTrigger(text, triggerChar, pos, matcher);
$[0] = matcher;
$[1] = pos;
$[2] = text;
$[3] = triggerChar;
$[4] = t1;
} else t1 = $[4];
const trigger = t1;
const query = trigger?.query ?? "";
let t2;
if ($[5] !== query || $[6] !== trigger) {
t2 = {
trigger,
query,
setCursorPosition
};
$[5] = query;
$[6] = trigger;
$[7] = t2;
} else t2 = $[7];
return t2;
};
const TriggerDetectionResource = resource(useTriggerDetectionResource);
export { TriggerDetectionResource };
//# sourceMappingURL=triggerDetectionResource.js.map