@assistant-ui/react-ink 0.0.12 → 0.0.15

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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="@assistant-ui/core/react" />
2
- export type { ThreadMessage, ThreadUserMessage, ThreadAssistantMessage, ThreadSystemMessage, MessageStatus, MessageRole, ThreadMessageLike, AppendMessage, RunConfig, TextMessagePart, ReasoningMessagePart, SourceMessagePart, ToolCallMessagePart, ImageMessagePart, FileMessagePart, DataMessagePart, Unstable_AudioMessagePart, ThreadUserMessagePart, ThreadAssistantMessagePart, AssistantRuntime, ThreadRuntime, MessageRuntime, ThreadComposerRuntime, EditComposerRuntime, ComposerRuntime, ThreadListRuntime, ThreadListItemRuntime, ChatModelAdapter, ChatModelRunOptions, ChatModelRunResult, RuntimeCapabilities, Attachment, PendingAttachment, CreateAttachment, AttachmentRuntime, AttachmentAdapter, ThreadHistoryAdapter, FeedbackAdapter, RealtimeVoiceAdapter, VoiceSessionControls, VoiceSessionHelpers, SuggestionAdapter, Unsubscribe, } from "@assistant-ui/core";
2
+ export type { ThreadMessage, ThreadUserMessage, ThreadAssistantMessage, ThreadSystemMessage, MessageStatus, MessageRole, ThreadMessageLike, AppendMessage, RunConfig, TextMessagePart, ReasoningMessagePart, SourceMessagePart, ToolCallMessagePart, ImageMessagePart, FileMessagePart, DataMessagePart, Unstable_AudioMessagePart, ThreadUserMessagePart, ThreadAssistantMessagePart, AssistantRuntime, ThreadRuntime, MessageRuntime, ThreadComposerRuntime, EditComposerRuntime, ComposerRuntime, ThreadListRuntime, ThreadListItemRuntime, ChatModelAdapter, ChatModelRunOptions, ChatModelRunResult, RuntimeCapabilities, Attachment, PendingAttachment, CompleteAttachment, CreateAttachment, AttachmentRuntime, AttachmentAdapter, ThreadHistoryAdapter, FeedbackAdapter, RealtimeVoiceAdapter, VoiceSessionControls, VoiceSessionHelpers, SuggestionAdapter, Unsubscribe, } from "@assistant-ui/core";
3
3
  export type { RemoteThreadListAdapter, RemoteThreadListOptions, } from "@assistant-ui/core";
4
4
  export { InMemoryThreadListAdapter } from "@assistant-ui/core";
5
5
  export { createVoiceSession } from "@assistant-ui/core";
@@ -7,6 +7,7 @@ export { SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, CompositeAtt
7
7
  export type { ThreadState, ThreadsState, MessageState, ComposerState, AttachmentState, ThreadListItemState, } from "@assistant-ui/core/store";
8
8
  export { useAui, useAuiState, useAuiEvent, AuiProvider, AuiIf, type AssistantClient, type AssistantState, type AssistantEventScope, type AssistantEventSelector, type AssistantEventName, type AssistantEventPayload, type AssistantEventCallback, } from "@assistant-ui/store";
9
9
  export { AssistantRuntimeProvider } from "./context/AssistantContext.js";
10
+ export { RuntimeAdapterProvider, useRuntimeAdapters, type RuntimeAdapters, } from "@assistant-ui/core/react";
10
11
  export { useLocalRuntime, type LocalRuntimeOptions, } from "./runtimes/useLocalRuntime.js";
11
12
  export { useRemoteThreadListRuntime } from "./runtimes/useRemoteThreadListRuntime.js";
12
13
  export * as ThreadPrimitive from "./primitives/thread.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ export { SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, CompositeAtt
7
7
  export { useAui, useAuiState, useAuiEvent, AuiProvider, AuiIf, } from "@assistant-ui/store";
8
8
  // Context providers
9
9
  export { AssistantRuntimeProvider } from "./context/AssistantContext.js";
10
+ export { RuntimeAdapterProvider, useRuntimeAdapters, } from "@assistant-ui/core/react";
10
11
  // Runtime
11
12
  export { useLocalRuntime, } from "./runtimes/useLocalRuntime.js";
12
13
  export { useRemoteThreadListRuntime } from "./runtimes/useRemoteThreadListRuntime.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AA6DlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,qCAAqC;AACrC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAY5B,6BAA6B;AAC7B,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,WAAW,EACX,KAAK,GAQN,MAAM,qBAAqB,CAAC;AAE7B,oBAAoB;AACpB,OAAO,EAAE,wBAAwB,EAAE,sCAAmC;AAEtE,UAAU;AACV,OAAO,EACL,eAAe,GAEhB,sCAAmC;AACpC,OAAO,EAAE,0BAA0B,EAAE,iDAA8C;AAEnF,aAAa;AACb,OAAO,KAAK,eAAe,+BAA4B;AACvD,OAAO,KAAK,iBAAiB,iCAA8B;AAC3D,OAAO,KAAK,gBAAgB,gCAA6B;AACzD,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,kBAAkB,kCAA+B;AAC7D,OAAO,KAAK,qBAAqB,qCAAkC;AACnE,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,iBAAiB,iCAA8B;AAC3D,OAAO,KAAK,cAAc,oCAA2B;AACrD,OAAO,KAAK,aAAa,6BAA0B;AACnD,OAAO,EAAE,QAAQ,EAAsB,sCAAmC;AAE1E,6CAA6C;AAC7C,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,iCAAiC;AACjC,OAAO,EACL,iBAAiB,EAEjB,mBAAmB,EAEnB,mBAAmB,EAEnB,gBAAgB,EAEhB,kBAAkB,EAElB,kBAAkB,EAElB,wBAAwB,EACxB,mBAAmB,EAEnB,eAAe,EAGf,KAAK,EACL,aAAa,EACb,aAAa,EACb,wBAAwB,EAExB,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAyB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAO1D,iBAAiB;AACjB,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA0BhE,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AA8DlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,qCAAqC;AACrC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAY5B,6BAA6B;AAC7B,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,WAAW,EACX,KAAK,GAQN,MAAM,qBAAqB,CAAC;AAE7B,oBAAoB;AACpB,OAAO,EAAE,wBAAwB,EAAE,sCAAmC;AACtE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,0BAA0B,CAAC;AAElC,UAAU;AACV,OAAO,EACL,eAAe,GAEhB,sCAAmC;AACpC,OAAO,EAAE,0BAA0B,EAAE,iDAA8C;AAEnF,aAAa;AACb,OAAO,KAAK,eAAe,+BAA4B;AACvD,OAAO,KAAK,iBAAiB,iCAA8B;AAC3D,OAAO,KAAK,gBAAgB,gCAA6B;AACzD,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,kBAAkB,kCAA+B;AAC7D,OAAO,KAAK,qBAAqB,qCAAkC;AACnE,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,iBAAiB,iCAA8B;AAC3D,OAAO,KAAK,cAAc,oCAA2B;AACrD,OAAO,KAAK,aAAa,6BAA0B;AACnD,OAAO,EAAE,QAAQ,EAAsB,sCAAmC;AAE1E,6CAA6C;AAC7C,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,iCAAiC;AACjC,OAAO,EACL,iBAAiB,EAEjB,mBAAmB,EAEnB,mBAAmB,EAEnB,gBAAgB,EAEhB,kBAAkB,EAElB,kBAAkB,EAElB,wBAAwB,EACxB,mBAAmB,EAEnB,eAAe,EAGf,KAAK,EACL,aAAa,EACb,aAAa,EACb,wBAAwB,EAExB,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAyB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAO1D,iBAAiB;AACjB,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA0BhE,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC"}
@@ -1,12 +1,11 @@
1
1
  import type { ComponentProps } from "react";
2
2
  import { Box } from "ink";
3
3
  export type ComposerInputProps = ComponentProps<typeof Box> & {
4
- /** Submit the message when Enter is pressed. @default false */
5
4
  submitOnEnter?: boolean | undefined;
6
- /** Placeholder text shown when the input is empty. */
7
5
  placeholder?: string | undefined;
8
- /** Whether this input should receive focus automatically. @default true */
9
6
  autoFocus?: boolean | undefined;
7
+ multiLine?: boolean | undefined;
8
+ onSubmit?: ((text: string) => void) | undefined;
10
9
  };
11
- export declare const ComposerInput: ({ submitOnEnter, placeholder, autoFocus, ...boxProps }: ComposerInputProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const ComposerInput: ({ submitOnEnter, placeholder, autoFocus, multiLine, onSubmit, ...boxProps }: ComposerInputProps) => import("react/jsx-runtime").JSX.Element;
12
11
  //# sourceMappingURL=ComposerInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerInput.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,GAAG,EAA4B,MAAM,KAAK,CAAC;AAGpD,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG;IAC5D,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,wDAK3B,kBAAkB,4CA8BpB,CAAC"}
1
+ {"version":3,"file":"ComposerInput.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,GAAG,EAA4B,MAAM,KAAK,CAAC;AAWpD,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG;IAC5D,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACjD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,6EAO3B,kBAAkB,4CA4MpB,CAAC"}
@@ -1,25 +1,169 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from "react";
2
3
  import { Box, Text, useFocus, useInput } from "ink";
3
4
  import { useAui, useAuiState } from "@assistant-ui/store";
4
- export const ComposerInput = ({ submitOnEnter = false, placeholder = "", autoFocus = true, ...boxProps }) => {
5
+ import { getGraphemeAt, textBufferReducer, useTextBuffer, } from "./useTextBuffer.js";
6
+ // cap dedup map so a store that drops echoes can't grow the counter without bound
7
+ const PENDING_SYNC_CAP = 64;
8
+ export const ComposerInput = ({ submitOnEnter = false, placeholder = "", autoFocus = true, multiLine = false, onSubmit, ...boxProps }) => {
5
9
  const aui = useAui();
6
- const text = useAuiState((s) => s.composer.text);
10
+ const storeText = useAuiState((s) => s.composer.text);
7
11
  const { isFocused } = useFocus({ autoFocus });
12
+ const { text, cursorOffset, preferredColumn, dispatchAction, setText } = useTextBuffer(storeText);
13
+ const bufferStateRef = useRef({ text, cursorOffset, preferredColumn });
14
+ const pendingLocalSyncTextsRef = useRef(new Map());
15
+ bufferStateRef.current = { text, cursorOffset, preferredColumn };
16
+ useEffect(() => {
17
+ const counter = pendingLocalSyncTextsRef.current;
18
+ const pending = counter.get(storeText) ?? 0;
19
+ if (pending > 0) {
20
+ if (pending === 1)
21
+ counter.delete(storeText);
22
+ else
23
+ counter.set(storeText, pending - 1);
24
+ return;
25
+ }
26
+ if (storeText === text)
27
+ return;
28
+ counter.clear();
29
+ setText(storeText);
30
+ bufferStateRef.current = {
31
+ text: storeText,
32
+ cursorOffset: storeText.length,
33
+ preferredColumn: undefined,
34
+ };
35
+ }, [setText, storeText, text]);
36
+ const commitAction = (action, options) => {
37
+ const currentState = bufferStateRef.current;
38
+ // run the reducer eagerly so submit-after-edit sees post-action state before react commits
39
+ const nextState = textBufferReducer(currentState, action);
40
+ dispatchAction(action);
41
+ bufferStateRef.current = nextState;
42
+ if (options?.syncText !== false && nextState.text !== currentState.text) {
43
+ const counter = pendingLocalSyncTextsRef.current;
44
+ if (counter.size >= PENDING_SYNC_CAP)
45
+ counter.clear();
46
+ counter.set(nextState.text, (counter.get(nextState.text) ?? 0) + 1);
47
+ aui.composer().setText(nextState.text);
48
+ }
49
+ };
50
+ const submit = () => {
51
+ const submittedText = bufferStateRef.current.text;
52
+ if (onSubmit) {
53
+ onSubmit(submittedText);
54
+ return;
55
+ }
56
+ aui.composer().send();
57
+ };
8
58
  useInput((input, key) => {
59
+ const extendedKey = key;
60
+ const lowerInput = input.toLowerCase();
61
+ if (key.ctrl) {
62
+ // ctrl+j may also report key.return; swallow so single-line never submits
63
+ if (lowerInput === "j") {
64
+ if (multiLine) {
65
+ commitAction({ type: "insert", text: "\n" });
66
+ }
67
+ return;
68
+ }
69
+ if (lowerInput === "a") {
70
+ commitAction({ type: "move-home", multiLine }, { syncText: false });
71
+ return;
72
+ }
73
+ if (lowerInput === "e") {
74
+ commitAction({ type: "move-end", multiLine }, { syncText: false });
75
+ return;
76
+ }
77
+ if (lowerInput === "w") {
78
+ commitAction({ type: "kill-word-backward" });
79
+ return;
80
+ }
81
+ if (lowerInput === "u") {
82
+ commitAction({ type: "kill-start", multiLine });
83
+ return;
84
+ }
85
+ if (lowerInput === "k") {
86
+ commitAction({ type: "kill-end", multiLine });
87
+ return;
88
+ }
89
+ if (lowerInput === "d") {
90
+ commitAction({ type: "delete-forward" });
91
+ return;
92
+ }
93
+ }
94
+ if (key.meta) {
95
+ if (lowerInput === "b") {
96
+ commitAction({ type: "move-word-left" }, { syncText: false });
97
+ return;
98
+ }
99
+ if (lowerInput === "f") {
100
+ commitAction({ type: "move-word-right" }, { syncText: false });
101
+ return;
102
+ }
103
+ if (lowerInput === "d") {
104
+ commitAction({ type: "kill-word-forward" });
105
+ return;
106
+ }
107
+ }
9
108
  if (key.return) {
109
+ const shouldInsertNewline = multiLine && (!submitOnEnter || extendedKey.shift);
110
+ if (shouldInsertNewline) {
111
+ commitAction({ type: "insert", text: "\n" });
112
+ return;
113
+ }
10
114
  if (submitOnEnter) {
11
- aui.composer().send();
115
+ submit();
12
116
  }
13
117
  return;
14
118
  }
15
- if (key.backspace || key.delete) {
16
- aui.composer().setText(text.slice(0, -1));
119
+ if (key.leftArrow) {
120
+ commitAction({ type: "move-left" }, { syncText: false });
121
+ return;
122
+ }
123
+ if (key.rightArrow) {
124
+ commitAction({ type: "move-right" }, { syncText: false });
125
+ return;
126
+ }
127
+ if (multiLine && key.upArrow) {
128
+ commitAction({ type: "move-up" }, { syncText: false });
129
+ return;
130
+ }
131
+ if (multiLine && key.downArrow) {
132
+ commitAction({ type: "move-down" }, { syncText: false });
133
+ return;
134
+ }
135
+ if (extendedKey.home) {
136
+ commitAction({ type: "move-home", multiLine }, { syncText: false });
137
+ return;
138
+ }
139
+ if (extendedKey.end) {
140
+ commitAction({ type: "move-end", multiLine }, { syncText: false });
141
+ return;
142
+ }
143
+ if (key.backspace) {
144
+ commitAction({ type: "delete-backward" });
145
+ return;
146
+ }
147
+ if (key.delete) {
148
+ commitAction({ type: "delete-forward" });
17
149
  return;
18
150
  }
19
151
  if (input && !key.ctrl && !key.meta) {
20
- aui.composer().setText(text + input);
152
+ commitAction({ type: "insert", text: input });
21
153
  }
22
154
  }, { isActive: isFocused });
23
- return (_jsxs(Box, { ...boxProps, children: [_jsx(Text, { dimColor: !text && !!placeholder, children: text || placeholder }), isFocused && _jsx(Text, { children: "\u258B" })] }));
155
+ const hasText = text.length > 0;
156
+ const isShowingPlaceholder = !hasText && placeholder.length > 0;
157
+ const before = hasText ? text.slice(0, cursorOffset) : "";
158
+ const charAtCursor = hasText ? getGraphemeAt(text, cursorOffset) : "";
159
+ const isOnNewline = charAtCursor === "\n";
160
+ // render a space when on a newline so the inverse cursor cell stays visible
161
+ const atCursor = charAtCursor === "" || isOnNewline ? " " : charAtCursor;
162
+ const after = hasText
163
+ ? isOnNewline
164
+ ? text.slice(cursorOffset)
165
+ : text.slice(cursorOffset + charAtCursor.length)
166
+ : placeholder;
167
+ return (_jsx(Box, { ...boxProps, children: !isFocused ? (_jsx(Text, { dimColor: isShowingPlaceholder, children: hasText ? text : placeholder })) : (_jsxs(Text, { dimColor: isShowingPlaceholder, children: [before, _jsx(Text, { inverse: true, children: atCursor }), after] })) }));
24
168
  };
25
169
  //# sourceMappingURL=ComposerInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerInput.js","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerInput.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAW1D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,EAAE,EAChB,SAAS,GAAG,IAAI,EAChB,GAAG,QAAQ,EACQ,EAAE,EAAE;IACvB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAE9C,QAAQ,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACb,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,aAAa,EAAE,CAAC;gBAClB,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,OAAK,QAAQ,aACf,KAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,YAAG,IAAI,IAAI,WAAW,GAAQ,EACnE,SAAS,IAAI,KAAC,IAAI,yBAAS,IACxB,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ComposerInput.js","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,aAAa,GACd,2BAAwB;AAEzB,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAU5B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,EAAE,EAChB,SAAS,GAAG,IAAI,EAChB,SAAS,GAAG,KAAK,EACjB,QAAQ,EACR,GAAG,QAAQ,EACQ,EAAE,EAAE;IACvB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,GACpE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC3B,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAAC;IACvE,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;IACnE,cAAc,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;IAEjE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,OAAO,KAAK,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;gBACxC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO;QAE/B,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,SAAS,CAAC,CAAC;QACnB,cAAc,CAAC,OAAO,GAAG;YACvB,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,SAAS,CAAC,MAAM;YAC9B,eAAe,EAAE,SAAS;SAC3B,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,MAAM,YAAY,GAAG,CACnB,MAA+C,EAC/C,OAAgC,EAChC,EAAE;QACF,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC;QAC5C,2FAA2F;QAC3F,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1D,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,cAAc,CAAC,OAAO,GAAG,SAAS,CAAC;QAEnC,IAAI,OAAO,EAAE,QAAQ,KAAK,KAAK,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YACxE,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACjD,IAAI,OAAO,CAAC,IAAI,IAAI,gBAAgB;gBAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,aAAa,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,QAAQ,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACb,MAAM,WAAW,GAAG,GAInB,CAAC;QACF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAEvC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,0EAA0E;YAC1E,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnE,OAAO;YACT,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,YAAY,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,mBAAmB,GACvB,SAAS,IAAI,CAAC,CAAC,aAAa,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,mBAAmB,EAAE,CAAC;gBACxB,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,EAAE,CAAC;YACX,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC7B,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,SAAS,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAC/B,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;YACrB,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,YAAY,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,MAAM,oBAAoB,GAAG,CAAC,OAAO,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,WAAW,GAAG,YAAY,KAAK,IAAI,CAAC;IAC1C,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,YAAY,KAAK,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;IACzE,MAAM,KAAK,GAAG,OAAO;QACnB,CAAC,CAAC,WAAW;YACX,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;QAClD,CAAC,CAAC,WAAW,CAAC;IAEhB,OAAO,CACL,KAAC,GAAG,OAAK,QAAQ,YACd,CAAC,SAAS,CAAC,CAAC,CAAC,CACZ,KAAC,IAAI,IAAC,QAAQ,EAAE,oBAAoB,YACjC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,GACxB,CACR,CAAC,CAAC,CAAC,CACF,MAAC,IAAI,IAAC,QAAQ,EAAE,oBAAoB,aACjC,MAAM,EACP,KAAC,IAAI,IAAC,OAAO,kBAAE,QAAQ,GAAQ,EAC9B,KAAK,IACD,CACR,GACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,58 @@
1
+ export type TextBufferState = {
2
+ text: string;
3
+ cursorOffset: number;
4
+ preferredColumn: number | undefined;
5
+ };
6
+ export type TextBufferAction = {
7
+ type: "insert";
8
+ text: string;
9
+ } | {
10
+ type: "delete-backward";
11
+ } | {
12
+ type: "delete-forward";
13
+ } | {
14
+ type: "move-left";
15
+ } | {
16
+ type: "move-right";
17
+ } | {
18
+ type: "move-up";
19
+ } | {
20
+ type: "move-down";
21
+ } | {
22
+ type: "move-home";
23
+ multiLine: boolean;
24
+ } | {
25
+ type: "move-end";
26
+ multiLine: boolean;
27
+ } | {
28
+ type: "move-word-left";
29
+ } | {
30
+ type: "move-word-right";
31
+ } | {
32
+ type: "kill-word-backward";
33
+ } | {
34
+ type: "kill-word-forward";
35
+ } | {
36
+ type: "kill-start";
37
+ multiLine: boolean;
38
+ } | {
39
+ type: "kill-end";
40
+ multiLine: boolean;
41
+ } | {
42
+ type: "set-text";
43
+ text: string;
44
+ } | {
45
+ type: "set-cursor";
46
+ cursorOffset: number;
47
+ };
48
+ export declare const getGraphemeAt: (text: string, offset: number) => string;
49
+ export declare const textBufferReducer: (state: TextBufferState, action: TextBufferAction) => TextBufferState;
50
+ export declare const createTextBufferState: (text?: string) => TextBufferState;
51
+ export declare const useTextBuffer: (text?: string) => {
52
+ dispatchAction: import("react").ActionDispatch<[action: TextBufferAction]>;
53
+ setText: (nextText: string) => void;
54
+ text: string;
55
+ cursorOffset: number;
56
+ preferredColumn: number | undefined;
57
+ };
58
+ //# sourceMappingURL=useTextBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTextBuffer.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/useTextBuffer.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AA6BjD,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,WAOzD,CAAC;AA2EF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,eAAe,EACtB,QAAQ,gBAAgB,KACvB,eAyKF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,aAAS,KAAG,eAIhD,CAAC;AAEH,eAAO,MAAM,aAAa,GAAI,aAAS;;wBAMxB,MAAM;UA/Tb,MAAM;kBACE,MAAM;qBACH,MAAM,GAAG,SAAS;CAsUpC,CAAC"}
@@ -0,0 +1,211 @@
1
+ import { useCallback, useReducer } from "react";
2
+ const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
3
+ const graphemeSegmenter = new Intl.Segmenter(undefined, {
4
+ granularity: "grapheme",
5
+ });
6
+ const wordSegmenter = new Intl.Segmenter(undefined, { granularity: "word" });
7
+ const stepGraphemeLeft = (text, offset) => {
8
+ if (offset <= 0)
9
+ return 0;
10
+ let previous = 0;
11
+ for (const { index } of graphemeSegmenter.segment(text)) {
12
+ if (index >= offset)
13
+ break;
14
+ previous = index;
15
+ }
16
+ return previous;
17
+ };
18
+ const stepGraphemeRight = (text, offset) => {
19
+ if (offset >= text.length)
20
+ return text.length;
21
+ for (const { index, segment } of graphemeSegmenter.segment(text)) {
22
+ const end = index + segment.length;
23
+ if (end > offset)
24
+ return end;
25
+ }
26
+ return text.length;
27
+ };
28
+ export const getGraphemeAt = (text, offset) => {
29
+ if (offset >= text.length)
30
+ return "";
31
+ for (const { index, segment } of graphemeSegmenter.segment(text)) {
32
+ if (index === offset)
33
+ return segment;
34
+ if (index > offset)
35
+ return "";
36
+ }
37
+ return "";
38
+ };
39
+ const getLineStart = (text, cursorOffset) => {
40
+ if (cursorOffset === 0)
41
+ return 0;
42
+ const lineBreakIndex = text.lastIndexOf("\n", cursorOffset - 1);
43
+ return lineBreakIndex === -1 ? 0 : lineBreakIndex + 1;
44
+ };
45
+ const getLineEnd = (text, cursorOffset) => {
46
+ const lineBreakIndex = text.indexOf("\n", cursorOffset);
47
+ return lineBreakIndex === -1 ? text.length : lineBreakIndex;
48
+ };
49
+ const getLineRange = (text, cursorOffset) => {
50
+ const start = getLineStart(text, cursorOffset);
51
+ const end = getLineEnd(text, cursorOffset);
52
+ return { start, end };
53
+ };
54
+ const getPreviousWordOffset = (text, cursorOffset) => {
55
+ let result = 0;
56
+ for (const segment of wordSegmenter.segment(text)) {
57
+ if (segment.index >= cursorOffset)
58
+ break;
59
+ if (segment.isWordLike)
60
+ result = segment.index;
61
+ }
62
+ return result;
63
+ };
64
+ const getNextWordOffset = (text, cursorOffset) => {
65
+ for (const segment of wordSegmenter.segment(text)) {
66
+ const end = segment.index + segment.segment.length;
67
+ if (end <= cursorOffset)
68
+ continue;
69
+ if (segment.isWordLike)
70
+ return end;
71
+ }
72
+ return text.length;
73
+ };
74
+ const moveVertical = (text, cursorOffset, preferredColumn, direction) => {
75
+ const { start, end } = getLineRange(text, cursorOffset);
76
+ const currentColumn = preferredColumn ?? cursorOffset - start;
77
+ const adjacentBreakIndex = direction === -1 ? start - 1 : end;
78
+ if (adjacentBreakIndex < 0 || adjacentBreakIndex >= text.length) {
79
+ return { cursorOffset, preferredColumn: currentColumn };
80
+ }
81
+ const adjacentCursorBase = direction === -1 ? adjacentBreakIndex : adjacentBreakIndex + 1;
82
+ const adjacentRange = getLineRange(text, adjacentCursorBase);
83
+ const nextCursorOffset = clamp(adjacentRange.start + currentColumn, adjacentRange.start, adjacentRange.end);
84
+ return {
85
+ cursorOffset: nextCursorOffset,
86
+ preferredColumn: currentColumn,
87
+ };
88
+ };
89
+ const clearPreferredColumn = (state, cursorOffset) => ({
90
+ ...state,
91
+ cursorOffset,
92
+ preferredColumn: undefined,
93
+ });
94
+ export const textBufferReducer = (state, action) => {
95
+ switch (action.type) {
96
+ case "insert": {
97
+ if (!action.text)
98
+ return state;
99
+ const nextText = state.text.slice(0, state.cursorOffset) +
100
+ action.text +
101
+ state.text.slice(state.cursorOffset);
102
+ const nextCursorOffset = state.cursorOffset + action.text.length;
103
+ return clearPreferredColumn({ ...state, text: nextText }, nextCursorOffset);
104
+ }
105
+ case "delete-backward": {
106
+ if (state.cursorOffset === 0)
107
+ return state;
108
+ const previousOffset = stepGraphemeLeft(state.text, state.cursorOffset);
109
+ const nextText = state.text.slice(0, previousOffset) +
110
+ state.text.slice(state.cursorOffset);
111
+ return clearPreferredColumn({ ...state, text: nextText }, previousOffset);
112
+ }
113
+ case "delete-forward": {
114
+ if (state.cursorOffset >= state.text.length)
115
+ return state;
116
+ const nextOffset = stepGraphemeRight(state.text, state.cursorOffset);
117
+ const nextText = state.text.slice(0, state.cursorOffset) + state.text.slice(nextOffset);
118
+ return clearPreferredColumn({ ...state, text: nextText }, state.cursorOffset);
119
+ }
120
+ case "move-left":
121
+ return clearPreferredColumn(state, stepGraphemeLeft(state.text, state.cursorOffset));
122
+ case "move-right":
123
+ return clearPreferredColumn(state, stepGraphemeRight(state.text, state.cursorOffset));
124
+ case "move-up": {
125
+ const next = moveVertical(state.text, state.cursorOffset, state.preferredColumn, -1);
126
+ return { ...state, ...next };
127
+ }
128
+ case "move-down": {
129
+ const next = moveVertical(state.text, state.cursorOffset, state.preferredColumn, 1);
130
+ return { ...state, ...next };
131
+ }
132
+ case "move-home": {
133
+ const nextCursorOffset = action.multiLine
134
+ ? getLineStart(state.text, state.cursorOffset)
135
+ : 0;
136
+ return clearPreferredColumn(state, nextCursorOffset);
137
+ }
138
+ case "move-end": {
139
+ const nextCursorOffset = action.multiLine
140
+ ? getLineEnd(state.text, state.cursorOffset)
141
+ : state.text.length;
142
+ return clearPreferredColumn(state, nextCursorOffset);
143
+ }
144
+ case "move-word-left":
145
+ return clearPreferredColumn(state, getPreviousWordOffset(state.text, state.cursorOffset));
146
+ case "move-word-right":
147
+ return clearPreferredColumn(state, getNextWordOffset(state.text, state.cursorOffset));
148
+ case "kill-word-backward": {
149
+ const nextCursorOffset = getPreviousWordOffset(state.text, state.cursorOffset);
150
+ if (nextCursorOffset === state.cursorOffset)
151
+ return state;
152
+ const nextText = state.text.slice(0, nextCursorOffset) +
153
+ state.text.slice(state.cursorOffset);
154
+ return clearPreferredColumn({ ...state, text: nextText }, nextCursorOffset);
155
+ }
156
+ case "kill-word-forward": {
157
+ const nextOffset = getNextWordOffset(state.text, state.cursorOffset);
158
+ if (nextOffset === state.cursorOffset)
159
+ return state;
160
+ const nextText = state.text.slice(0, state.cursorOffset) + state.text.slice(nextOffset);
161
+ return clearPreferredColumn({ ...state, text: nextText }, state.cursorOffset);
162
+ }
163
+ case "kill-start": {
164
+ const rangeStart = action.multiLine
165
+ ? getLineStart(state.text, state.cursorOffset)
166
+ : 0;
167
+ if (rangeStart === state.cursorOffset)
168
+ return state;
169
+ const nextText = state.text.slice(0, rangeStart) + state.text.slice(state.cursorOffset);
170
+ return clearPreferredColumn({ ...state, text: nextText }, rangeStart);
171
+ }
172
+ case "kill-end": {
173
+ const lineEnd = action.multiLine
174
+ ? getLineEnd(state.text, state.cursorOffset)
175
+ : state.text.length;
176
+ // emacs convention: ctrl+k at EOL kills the trailing newline so the next line joins
177
+ const rangeEnd = action.multiLine &&
178
+ lineEnd === state.cursorOffset &&
179
+ lineEnd < state.text.length
180
+ ? lineEnd + 1
181
+ : lineEnd;
182
+ if (rangeEnd === state.cursorOffset)
183
+ return state;
184
+ const nextText = state.text.slice(0, state.cursorOffset) + state.text.slice(rangeEnd);
185
+ return clearPreferredColumn({ ...state, text: nextText }, state.cursorOffset);
186
+ }
187
+ case "set-text":
188
+ return {
189
+ text: action.text,
190
+ cursorOffset: action.text.length,
191
+ preferredColumn: undefined,
192
+ };
193
+ case "set-cursor":
194
+ return clearPreferredColumn(state, clamp(action.cursorOffset, 0, state.text.length));
195
+ }
196
+ };
197
+ export const createTextBufferState = (text = "") => ({
198
+ text,
199
+ cursorOffset: text.length,
200
+ preferredColumn: undefined,
201
+ });
202
+ export const useTextBuffer = (text = "") => {
203
+ const [state, dispatch] = useReducer(textBufferReducer, createTextBufferState(text));
204
+ const setText = useCallback((nextText) => dispatch({ type: "set-text", text: nextText }), []);
205
+ return {
206
+ ...state,
207
+ dispatchAction: dispatch,
208
+ setText,
209
+ };
210
+ };
211
+ //# sourceMappingURL=useTextBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTextBuffer.js","sourceRoot":"","sources":["../../../src/primitives/composer/useTextBuffer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/react-ink",
3
- "version": "0.0.12",
3
+ "version": "0.0.15",
4
4
  "description": "React Ink (terminal UI) bindings for assistant-ui",
5
5
  "keywords": [
6
6
  "assistant",
@@ -32,14 +32,14 @@
32
32
  ],
33
33
  "sideEffects": false,
34
34
  "dependencies": {
35
- "@assistant-ui/core": "^0.1.15",
36
- "@assistant-ui/store": "^0.2.8",
37
- "@assistant-ui/tap": "^0.5.9",
38
- "assistant-stream": "^0.3.12",
35
+ "@assistant-ui/core": "^0.2.0",
36
+ "@assistant-ui/store": "^0.2.10",
37
+ "@assistant-ui/tap": "^0.5.11",
38
+ "assistant-stream": "^0.3.13",
39
39
  "diff": "^9.0.0",
40
40
  "ink-spinner": "^5.0.0",
41
41
  "parse-diff": "^0.12.0",
42
- "zustand": "^5.0.12"
42
+ "zustand": "^5.0.13"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@types/react": "*",
@@ -53,11 +53,11 @@
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/react": "^19.2.14",
56
- "ink": "^7.0.1",
56
+ "ink": "^7.0.2",
57
57
  "ink-testing-library": "^4.0.0",
58
58
  "react": "^19.2.5",
59
59
  "vitest": "^4.1.5",
60
- "@assistant-ui/x-buildutils": "0.0.6"
60
+ "@assistant-ui/x-buildutils": "0.0.7"
61
61
  },
62
62
  "publishConfig": {
63
63
  "access": "public",
package/src/index.ts CHANGED
@@ -40,6 +40,7 @@ export type {
40
40
  // Attachment types
41
41
  Attachment,
42
42
  PendingAttachment,
43
+ CompleteAttachment,
43
44
  CreateAttachment,
44
45
  AttachmentRuntime,
45
46
  // Adapter types
@@ -97,6 +98,11 @@ export {
97
98
 
98
99
  // Context providers
99
100
  export { AssistantRuntimeProvider } from "./context/AssistantContext";
101
+ export {
102
+ RuntimeAdapterProvider,
103
+ useRuntimeAdapters,
104
+ type RuntimeAdapters,
105
+ } from "@assistant-ui/core/react";
100
106
 
101
107
  // Runtime
102
108
  export {