Skip to content

Commit 9345fa4

Browse files
committed
Removed bad casting in trigger state
1 parent 24915a0 commit 9345fa4

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/prompt-input/tokens/use-token-mode.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ export interface UseTokenModeResult {
256256

257257
/** Tracks the state of a trigger element — its DOM node, dismissal, and cancellation status. */
258258
export interface TriggerState {
259-
element: HTMLElement;
259+
element: HTMLElement | null;
260260
dismissed: boolean;
261261
dismissedValue: string | null;
262262
cancelled: boolean;
@@ -321,7 +321,7 @@ function useTokenProcessor(config: ProcessorConfig) {
321321
} else {
322322
// Pre-populate — element will be filled in when renderTokens runs
323323
state.triggerStates.current.set(id, {
324-
element: null as unknown as HTMLElement,
324+
element: null,
325325
dismissed: false,
326326
dismissedValue: null,
327327
cancelled: true,
@@ -625,7 +625,9 @@ export function useTokenMode(config: UseTokenModeConfig): UseTokenModeResult {
625625
const triggerElements = new Map<string, HTMLElement>();
626626
const cancelledIds = new Set<string>();
627627
shortcutsState.triggerStates.current.forEach((state, id) => {
628-
triggerElements.set(id, state.element);
628+
if (state.element) {
629+
triggerElements.set(id, state.element);
630+
}
629631
if (state.cancelled) {
630632
cancelledIds.add(id);
631633
}
@@ -698,6 +700,9 @@ export function useTokenMode(config: UseTokenModeConfig): UseTokenModeResult {
698700
continue;
699701
}
700702
const trigger = triggerState.element;
703+
if (!trigger) {
704+
continue;
705+
}
701706
const filterText = (trigger.textContent || '').substring(1);
702707
if (!filterText) {
703708
continue;
@@ -752,7 +757,7 @@ export function useTokenMode(config: UseTokenModeConfig): UseTokenModeResult {
752757

753758
const newTriggers = extractedTokens.filter(isTriggerToken);
754759

755-
const existingTriggerElements: HTMLElement[] = [];
760+
const existingTriggerElements: (HTMLElement | null)[] = [];
756761
const existingTriggerIds = new Set<string>();
757762
shortcutsState.triggerStates.current.forEach((state, id) => {
758763
existingTriggerElements.push(state.element);
@@ -762,7 +767,7 @@ export function useTokenMode(config: UseTokenModeConfig): UseTokenModeResult {
762767
const isNewTrigger = newTriggers.some(t => t.id && !existingTriggerIds.has(t.id));
763768

764769
const hasStylingChange = newTriggers.some(newT => {
765-
const domElement = existingTriggerElements.find(el => el.id === newT.id);
770+
const domElement = existingTriggerElements.find(el => el?.id === newT.id);
766771
if (!domElement) {
767772
return false;
768773
}
@@ -785,7 +790,7 @@ export function useTokenMode(config: UseTokenModeConfig): UseTokenModeResult {
785790
} else if (hasStylingChange) {
786791
// Track which trigger had its styling changed for cursor restoration
787792
const changedTriggerId = newTriggers.find(newT => {
788-
const domElement = existingTriggerElements.find(el => el.id === newT.id);
793+
const domElement = existingTriggerElements.find(el => el?.id === newT.id);
789794
if (!domElement) {
790795
return false;
791796
}
@@ -795,7 +800,7 @@ export function useTokenMode(config: UseTokenModeConfig): UseTokenModeResult {
795800
})?.id;
796801

797802
newTriggers.forEach(newT => {
798-
const domElement = existingTriggerElements.find(el => el.id === newT.id);
803+
const domElement = existingTriggerElements.find(el => el?.id === newT.id);
799804
if (domElement) {
800805
const shouldHaveClass = newT.value.length > 0;
801806
domElement.className = `${styles['trigger-base']} ${shouldHaveClass ? styles['trigger-token'] : ''}`;

0 commit comments

Comments
 (0)