@copilotkit/react-textarea 0.19.0-alpha.2 → 0.19.0-alpha.3

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.
Files changed (44) hide show
  1. package/.turbo/turbo-build.log +287 -287
  2. package/CHANGELOG.md +11 -0
  3. package/dist/{chunk-ITZHK3YV.mjs → chunk-23UHDUUY.mjs} +52 -68
  4. package/dist/chunk-23UHDUUY.mjs.map +1 -0
  5. package/dist/{chunk-RPDVSCLO.mjs → chunk-4MDDCR32.mjs} +2 -2
  6. package/dist/chunk-CZMPLTHF.mjs +20 -0
  7. package/dist/chunk-CZMPLTHF.mjs.map +1 -0
  8. package/dist/chunk-FN7GDKKG.mjs +29 -0
  9. package/dist/chunk-FN7GDKKG.mjs.map +1 -0
  10. package/dist/{chunk-7SMDOAG2.mjs → chunk-OS2YW2UX.mjs} +6 -6
  11. package/dist/{chunk-PF3XRNDB.mjs → chunk-U5GM2PRT.mjs} +3 -3
  12. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +12 -12
  13. package/dist/components/copilot-textarea/copilot-textarea.mjs +14 -14
  14. package/dist/components/hovering-toolbar/hovering-toolbar.mjs +5 -5
  15. package/dist/components/hovering-toolbar/text-insertion-prompt-box/{mode-suggestion-appearing.d.ts → hovering-insertion-prompt-box-core.d.ts} +5 -13
  16. package/dist/components/hovering-toolbar/text-insertion-prompt-box/{mode-suggestion-appearing.mjs → hovering-insertion-prompt-box-core.mjs} +4 -3
  17. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs +4 -4
  18. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs +4 -4
  19. package/dist/components/index.mjs +14 -14
  20. package/dist/components/source-search-box/source-search-box.mjs +3 -2
  21. package/dist/components/ui/button.d.ts +1 -1
  22. package/dist/index.css +0 -15
  23. package/dist/index.css.map +1 -1
  24. package/dist/index.mjs +14 -14
  25. package/dist/lib/stream-promise-flatten.d.ts +3 -0
  26. package/dist/lib/stream-promise-flatten.mjs +4 -0
  27. package/package.json +4 -4
  28. package/src/components/hovering-toolbar/text-insertion-prompt-box/{mode-suggestion-appearing.tsx → hovering-insertion-prompt-box-core.tsx} +57 -64
  29. package/src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx +9 -52
  30. package/src/components/source-search-box/source-search-box.tsx +1 -1
  31. package/src/lib/stream-promise-flatten.ts +25 -0
  32. package/dist/chunk-CDB7HFCY.mjs +0 -65
  33. package/dist/chunk-CDB7HFCY.mjs.map +0 -1
  34. package/dist/chunk-ITZHK3YV.mjs.map +0 -1
  35. package/dist/chunk-OM5WQQOU.mjs +0 -47
  36. package/dist/chunk-OM5WQQOU.mjs.map +0 -1
  37. package/dist/components/hovering-toolbar/text-insertion-prompt-box/mode-pre-suggestion.d.ts +0 -16
  38. package/dist/components/hovering-toolbar/text-insertion-prompt-box/mode-pre-suggestion.mjs +0 -5
  39. package/src/components/hovering-toolbar/text-insertion-prompt-box/mode-pre-suggestion.tsx +0 -83
  40. /package/dist/{chunk-RPDVSCLO.mjs.map → chunk-4MDDCR32.mjs.map} +0 -0
  41. /package/dist/{chunk-7SMDOAG2.mjs.map → chunk-OS2YW2UX.mjs.map} +0 -0
  42. /package/dist/{chunk-PF3XRNDB.mjs.map → chunk-U5GM2PRT.mjs.map} +0 -0
  43. /package/dist/components/hovering-toolbar/text-insertion-prompt-box/{mode-pre-suggestion.mjs.map → hovering-insertion-prompt-box-core.mjs.map} +0 -0
  44. /package/dist/{components/hovering-toolbar/text-insertion-prompt-box/mode-suggestion-appearing.mjs.map → lib/stream-promise-flatten.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # ui
2
2
 
3
+ ## 0.19.0-alpha.3
4
+
5
+ ### Minor Changes
6
+
7
+ - textarea edits mvp
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+ - @copilotkit/react-core@0.8.0-alpha.3
13
+
3
14
  ## 0.19.0-alpha.2
4
15
 
5
16
  ### Patch Changes
@@ -1,7 +1,8 @@
1
1
  import { use_autosize_textarea_default } from './chunk-ND5PXTAW.mjs';
2
+ import { Button } from './chunk-2NURR2DX.mjs';
2
3
  import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator } from './chunk-3YJ63D5D.mjs';
3
4
  import { Label } from './chunk-5EJ5XOGP.mjs';
4
- import { Button } from './chunk-2NURR2DX.mjs';
5
+ import { streamPromiseFlatten } from './chunk-FN7GDKKG.mjs';
5
6
  import { __objRest, __spreadProps, __spreadValues, __async } from './chunk-MRXNTQOX.mjs';
6
7
  import { useState, useRef, useEffect } from 'react';
7
8
  import { Calendar, Smile, Calculator } from 'lucide-react';
@@ -9,37 +10,29 @@ import Chip from '@mui/material/Chip';
9
10
  import Avatar from '@mui/material/Avatar';
10
11
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
11
12
 
12
- var SuggestionAppearing = ({
13
- performInsertion,
14
- state,
15
- goBack,
16
- insertionOrEditingFunction,
17
- onGeneratedText
18
- }) => {
19
- useState([state.initialSuggestion]);
13
+ var HoveringInsertionPromptBoxCore = ({ performInsertion, state, insertionOrEditingFunction }) => {
20
14
  const [editSuggestion, setEditSuggestion] = useState("");
21
15
  const [suggestionIsLoading, setSuggestionIsLoading] = useState(false);
22
16
  const [adjustmentPrompt, setAdjustmentPrompt] = useState("");
23
- const [adjustmentLoading, setAdjustmentLoading] = useState(false);
24
- const suggestionTextAreaRef = useRef(null);
17
+ const [generatingSuggestion, setGeneratingSuggestion] = useState(null);
25
18
  const adjustmentTextAreaRef = useRef(null);
19
+ const suggestionTextAreaRef = useRef(null);
26
20
  const [filePointers, setFilePointers] = useState([]);
27
21
  use_autosize_textarea_default(suggestionTextAreaRef, editSuggestion || "");
28
22
  use_autosize_textarea_default(adjustmentTextAreaRef, adjustmentPrompt || "");
29
23
  useEffect(() => {
30
- var _a, _b;
31
- (_a = suggestionTextAreaRef.current) == null ? void 0 : _a.focus();
32
- (_b = suggestionTextAreaRef.current) == null ? void 0 : _b.setSelectionRange(
33
- editSuggestion.length,
34
- editSuggestion.length
35
- );
24
+ var _a;
25
+ (_a = adjustmentTextAreaRef.current) == null ? void 0 : _a.focus();
36
26
  }, []);
37
27
  useEffect(() => {
38
- if (state.initialSuggestion.generatingSuggestion.locked) {
28
+ if (!generatingSuggestion) {
29
+ return;
30
+ }
31
+ if (generatingSuggestion.locked) {
39
32
  return;
40
33
  }
41
34
  setEditSuggestion("");
42
- const reader = state.initialSuggestion.generatingSuggestion.getReader();
35
+ const reader = generatingSuggestion.getReader();
43
36
  const read = () => __async(void 0, null, function* () {
44
37
  setSuggestionIsLoading(true);
45
38
  while (true) {
@@ -68,28 +61,34 @@ var SuggestionAppearing = ({
68
61
  });
69
62
  releaseLockIfNotClosed();
70
63
  };
71
- }, [state]);
72
- const generateAdjustment = () => __async(void 0, null, function* () {
64
+ }, [generatingSuggestion]);
65
+ const begingGeneratingAdjustment = () => __async(void 0, null, function* () {
73
66
  if (!adjustmentPrompt.trim()) {
74
67
  return;
75
68
  }
76
- setAdjustmentLoading(true);
77
- const adjustmentSuggestionTextStream = yield insertionOrEditingFunction(
78
- __spreadProps(__spreadValues({}, state.initialSuggestion.editorState), {
79
- selectedText: editSuggestion
80
- }),
69
+ let editorState = state.editorState;
70
+ if (editSuggestion !== "") {
71
+ editorState.selectedText = editSuggestion;
72
+ }
73
+ const adjustmentSuggestionTextStreamPromise = insertionOrEditingFunction(
74
+ editorState,
81
75
  adjustmentPrompt,
82
76
  new AbortController().signal
83
77
  );
84
- setAdjustmentLoading(false);
85
- onGeneratedText(adjustmentSuggestionTextStream);
78
+ const adjustmentSuggestionTextStream = streamPromiseFlatten(
79
+ adjustmentSuggestionTextStreamPromise
80
+ );
81
+ setGeneratingSuggestion(adjustmentSuggestionTextStream);
86
82
  });
87
- const showLoading = suggestionIsLoading || adjustmentLoading;
83
+ const isLoading = suggestionIsLoading;
84
+ const textToEdit = editSuggestion || state.editorState.selectedText;
85
+ const adjustmentLabel = textToEdit === "" ? "Describe the text you want to insert" : "Describe adjustments to the suggested text";
86
+ const placeholder = textToEdit === "" ? "e.g. 'summarize the client's top 3 pain-points from @CallTranscript'" : "e.g. 'make it more formal', 'be more specific', ...";
88
87
  const AdjustmentPromptComponent = /* @__PURE__ */ jsxs(Fragment, {
89
88
  children: [
90
89
  /* @__PURE__ */ jsx(Label, {
91
90
  className: "",
92
- children: "Describe adjustments to the suggested text:"
91
+ children: adjustmentLabel
93
92
  }),
94
93
  /* @__PURE__ */ jsxs("div", {
95
94
  className: "relative w-full flex items-center",
@@ -105,16 +104,16 @@ var SuggestionAppearing = ({
105
104
  setAdjustmentPrompt(adjustmentPrompt + "\n");
106
105
  } else if (e.key === "Enter") {
107
106
  e.preventDefault();
108
- generateAdjustment();
107
+ begingGeneratingAdjustment();
109
108
  }
110
109
  },
111
- placeholder: '"make it more formal", "be more specific", ...',
110
+ placeholder,
112
111
  style: { minHeight: "3rem" },
113
112
  className: "w-full bg-slate-100 h-auto h-min-14 text-sm p-2 rounded-md resize-none overflow-visible focus:outline-none focus:ring-0 focus:border-non pr-[3rem]",
114
113
  rows: 1
115
114
  }),
116
115
  /* @__PURE__ */ jsx("button", {
117
- onClick: generateAdjustment,
116
+ onClick: begingGeneratingAdjustment,
118
117
  className: "absolute right-2 bg-blue-500 text-white w-8 h-8 rounded-full flex items-center justify-center",
119
118
  children: /* @__PURE__ */ jsx("i", {
120
119
  className: "material-icons",
@@ -136,7 +135,7 @@ var SuggestionAppearing = ({
136
135
  }),
137
136
  /* @__PURE__ */ jsx("div", {
138
137
  className: "ml-auto",
139
- children: showLoading && /* @__PURE__ */ jsx("div", {
138
+ children: isLoading && /* @__PURE__ */ jsx("div", {
140
139
  className: "flex justify-center items-center",
141
140
  children: /* @__PURE__ */ jsx("div", {
142
141
  className: "inline-block h-4 w-4 animate-spin rounded-full border-4 border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite]",
@@ -153,43 +152,28 @@ var SuggestionAppearing = ({
153
152
  /* @__PURE__ */ jsx("textarea", {
154
153
  ref: suggestionTextAreaRef,
155
154
  value: editSuggestion,
156
- disabled: adjustmentLoading,
155
+ disabled: suggestionIsLoading,
157
156
  onChange: (e) => setEditSuggestion(e.target.value),
158
157
  className: "w-full text-base p-2 border border-gray-300 rounded-md resize-none bg-green-50",
159
158
  style: { overflow: "auto", maxHeight: "10em" }
160
159
  })
161
160
  ]
162
161
  });
163
- const SubmitComponent = /* @__PURE__ */ jsxs("div", {
162
+ const SubmitComponent = /* @__PURE__ */ jsx("div", {
164
163
  className: "flex w-full gap-4 justify-start",
165
- children: [
166
- /* @__PURE__ */ jsxs(Button, {
167
- className: " bg-gray-300",
168
- onClick: () => {
169
- goBack();
170
- },
171
- children: [
172
- /* @__PURE__ */ jsx("i", {
173
- className: "material-icons",
174
- children: "arrow_back"
175
- }),
176
- " Back"
177
- ]
178
- }),
179
- /* @__PURE__ */ jsxs(Button, {
180
- className: " bg-green-700 text-white",
181
- onClick: () => {
182
- performInsertion(editSuggestion);
183
- },
184
- children: [
185
- "Insert ",
186
- /* @__PURE__ */ jsx("i", {
187
- className: "material-icons",
188
- children: "check"
189
- })
190
- ]
191
- })
192
- ]
164
+ children: /* @__PURE__ */ jsxs(Button, {
165
+ className: " bg-green-700 text-white",
166
+ onClick: () => {
167
+ performInsertion(editSuggestion);
168
+ },
169
+ children: [
170
+ "Insert ",
171
+ /* @__PURE__ */ jsx("i", {
172
+ className: "material-icons",
173
+ children: "check"
174
+ })
175
+ ]
176
+ })
193
177
  });
194
178
  const sourceSearchCandidate = adjustmentPrompt.split(" ").pop();
195
179
  const sourceSearchWord = (sourceSearchCandidate == null ? void 0 : sourceSearchCandidate.startsWith("@")) ? sourceSearchCandidate.slice(1) : void 0;
@@ -213,8 +197,8 @@ var SuggestionAppearing = ({
213
197
  (_a = adjustmentTextAreaRef.current) == null ? void 0 : _a.focus();
214
198
  }
215
199
  }),
216
- SuggestionComponent,
217
- SubmitComponent
200
+ generatingSuggestion ? SuggestionComponent : null,
201
+ generatingSuggestion ? SubmitComponent : null
218
202
  ]
219
203
  });
220
204
  };
@@ -472,6 +456,6 @@ function Logo({
472
456
  });
473
457
  }
474
458
 
475
- export { FileChipPreview, IconForFilePointer, IncludedFilesPreview, Logo, SourceSearchBox, SuggestionAppearing };
459
+ export { FileChipPreview, HoveringInsertionPromptBoxCore, IconForFilePointer, IncludedFilesPreview, Logo, SourceSearchBox };
476
460
  //# sourceMappingURL=out.js.map
477
- //# sourceMappingURL=chunk-ITZHK3YV.mjs.map
461
+ //# sourceMappingURL=chunk-23UHDUUY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/source-search-box/source-search-box.tsx","../src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx"],"names":["useState","jsx","jsxs"],"mappings":"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","sourcesContent":["import { useState } from \"react\";\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n} from \"../ui/command\";\n\nimport {\n Calculator,\n Calendar,\n CreditCard,\n Settings,\n Smile,\n User,\n} from \"lucide-react\";\nimport { IconForFilePointer } from \"../hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core\";\n\nexport interface FilePointer {\n name: string;\n sourceApplication: string;\n getContents: () => Promise<string>;\n}\n\nexport interface SourceSearchBoxProps {\n searchTerm: string;\n recentFiles: FilePointer[];\n onSelectedFile: (filePointer: FilePointer) => void;\n}\n\nexport function SourceSearchBox(props: SourceSearchBoxProps) {\n const [selectedValue, setSelectedValue] = useState<string>(\"\");\n\n return (\n <Command\n className=\"rounded-lg border shadow-md\"\n value={selectedValue}\n onValueChange={(value) => {\n setSelectedValue(value);\n }}\n filter={(value, search) => {\n // if the search term is empty, show all commands\n if (props.searchTerm === \"\") return 1;\n\n // if the search term is a prefix of the command, show it\n if (value.startsWith(props.searchTerm)) return 1;\n\n // otherwise, don't show it\n return 0;\n }}\n >\n <CommandInput\n value={props.searchTerm}\n className=\"rounded-t-lg hidden\"\n placeholder=\"Search for a command...\"\n />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n\n <CommandGroup heading=\"Recents\">\n {props.recentFiles.map((filePointer) => {\n return (\n <CommandItem\n key={`word-${filePointer.sourceApplication}.${filePointer.name}`}\n value={filePointer.name}\n onSelect={(value) => {\n console.log(filePointer.name);\n props.onSelectedFile(filePointer);\n }}\n >\n <div className=\"flex flex-row gap-3 items-center bg-slate-400 \">\n <Logo size=\"40px\">\n <IconForFilePointer\n filePointer={filePointer}\n className=\"mx-auto my-auto\"\n />\n </Logo>\n {filePointer.name}\n </div>\n </CommandItem>\n );\n })}\n </CommandGroup>\n\n <CommandGroup heading=\"Suggestions\">\n <CommandItem\n onSelect={(value) => {\n console.log(value);\n console.log(value);\n }}\n >\n <Calendar className=\"mr-2 h-4 w-4\" />\n <span>Calendar</span>\n </CommandItem>\n <CommandItem>\n <Smile className=\"mr-2 h-4 w-4\" />\n <span>Search Emoji</span>\n </CommandItem>\n <CommandItem>\n <Calculator className=\"mr-2 h-4 w-4\" />\n <span>Calculator</span>\n </CommandItem>\n </CommandGroup>\n <CommandSeparator />\n </CommandList>\n </Command>\n );\n}\n\nexport function Logo({\n children,\n size = \"20px\",\n}: {\n children: React.ReactNode;\n size?: string;\n}) {\n return (\n <div\n className={\"\"}\n style={{\n width: size,\n height: size,\n }}\n >\n <div className={\"\"}>{children}</div>\n </div>\n );\n}\n","import useAutosizeTextArea from \"../../../hooks/misc/use-autosize-textarea\";\nimport { MinimalChatGPTMessage } from \"../../../types\";\nimport {\n EditingEditorState,\n Generator_InsertionOrEditingSuggestion,\n} from \"../../../types/base/autosuggestions-bare-function\";\nimport {\n FilePointer,\n SourceSearchBox,\n} from \"../../source-search-box/source-search-box\";\nimport { Button } from \"../../ui/button\";\nimport { Label } from \"../../ui/label\";\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport Chip from \"@mui/material/Chip\";\nimport Avatar from \"@mui/material/Avatar\";\nimport { streamPromiseFlatten } from \"../../../lib/stream-promise-flatten\";\n\nexport type SuggestionState = {\n editorState: EditingEditorState;\n};\n\nexport interface HoveringInsertionPromptBoxCoreProps {\n state: SuggestionState;\n performInsertion: (insertedText: string) => void;\n insertionOrEditingFunction: Generator_InsertionOrEditingSuggestion;\n}\n\nexport const HoveringInsertionPromptBoxCore: React.FC<\n HoveringInsertionPromptBoxCoreProps\n> = ({ performInsertion, state, insertionOrEditingFunction }) => {\n const [editSuggestion, setEditSuggestion] = useState<string>(\"\");\n const [suggestionIsLoading, setSuggestionIsLoading] =\n useState<boolean>(false);\n\n const [adjustmentPrompt, setAdjustmentPrompt] = useState<string>(\"\");\n\n const [generatingSuggestion, setGeneratingSuggestion] =\n useState<ReadableStream<string> | null>(null);\n\n const adjustmentTextAreaRef = useRef<HTMLTextAreaElement>(null);\n const suggestionTextAreaRef = useRef<HTMLTextAreaElement>(null);\n\n const [filePointers, setFilePointers] = useState<FilePointer[]>([]);\n\n useAutosizeTextArea(suggestionTextAreaRef, editSuggestion || \"\");\n useAutosizeTextArea(adjustmentTextAreaRef, adjustmentPrompt || \"\");\n\n // initially focus on the adjustment prompt text area\n useEffect(() => {\n adjustmentTextAreaRef.current?.focus();\n }, []);\n\n useEffect(() => {\n // if no generating suggestion, do nothing\n if (!generatingSuggestion) {\n return;\n }\n\n // Check if the stream is already locked (i.e. already reading from it)\n if (generatingSuggestion.locked) {\n return;\n }\n\n // reset the edit suggestion\n setEditSuggestion(\"\");\n\n // read the generating suggestion stream and continuously update the edit suggestion\n const reader = generatingSuggestion.getReader();\n\n const read = async () => {\n setSuggestionIsLoading(true);\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n setEditSuggestion((prev) => {\n const newSuggestion = prev + value;\n\n // Scroll to the bottom of the textarea. We call this here to make sure scroll-to-bottom is synchronous with the state update.\n if (suggestionTextAreaRef.current) {\n suggestionTextAreaRef.current.scrollTop =\n suggestionTextAreaRef.current.scrollHeight;\n }\n return newSuggestion;\n });\n }\n\n setSuggestionIsLoading(false);\n };\n read();\n\n return () => {\n const releaseLockIfNotClosed = async () => {\n try {\n await reader.closed;\n } catch {\n reader.releaseLock();\n }\n };\n\n releaseLockIfNotClosed();\n };\n }, [generatingSuggestion]);\n\n const begingGeneratingAdjustment = async () => {\n // don't generate text if the prompt is empty\n if (!adjustmentPrompt.trim()) {\n return;\n }\n\n // if the current edit suggestion is not empty, then use it as the selected text instead of the editor state's selected text\n let editorState = state.editorState;\n if (editSuggestion !== \"\") {\n editorState.selectedText = editSuggestion;\n }\n\n const adjustmentSuggestionTextStreamPromise = insertionOrEditingFunction(\n editorState,\n adjustmentPrompt,\n new AbortController().signal\n );\n const adjustmentSuggestionTextStream = streamPromiseFlatten(\n adjustmentSuggestionTextStreamPromise\n );\n\n setGeneratingSuggestion(adjustmentSuggestionTextStream);\n };\n\n const isLoading = suggestionIsLoading;\n\n const textToEdit = editSuggestion || state.editorState.selectedText;\n const adjustmentLabel =\n textToEdit === \"\"\n ? \"Describe the text you want to insert\"\n : \"Describe adjustments to the suggested text\";\n const placeholder =\n textToEdit === \"\"\n ? \"e.g. 'summarize the client's top 3 pain-points from @CallTranscript'\"\n : \"e.g. 'make it more formal', 'be more specific', ...\";\n\n const AdjustmentPromptComponent = (\n <>\n <Label className=\"\">{adjustmentLabel}</Label>\n <div className=\"relative w-full flex items-center\">\n <textarea\n disabled={suggestionIsLoading}\n ref={adjustmentTextAreaRef}\n value={adjustmentPrompt}\n onChange={(e) => setAdjustmentPrompt(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && e.shiftKey) {\n e.preventDefault();\n setAdjustmentPrompt(adjustmentPrompt + \"\\n\");\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n begingGeneratingAdjustment();\n }\n }}\n placeholder={placeholder}\n style={{ minHeight: \"3rem\" }}\n className=\"w-full bg-slate-100 h-auto h-min-14 text-sm p-2 rounded-md resize-none overflow-visible focus:outline-none focus:ring-0 focus:border-non pr-[3rem]\"\n rows={1}\n />\n <button\n onClick={begingGeneratingAdjustment}\n className=\"absolute right-2 bg-blue-500 text-white w-8 h-8 rounded-full flex items-center justify-center\"\n >\n <i className=\"material-icons\">arrow_forward</i>\n </button>\n </div>\n </>\n );\n\n const SuggestionComponent = (\n <>\n <div className=\"flex justify-between items-end w-full\">\n <Label className=\"mt-4\">Suggested:</Label>\n <div className=\"ml-auto\">\n {isLoading && (\n <div className=\"flex justify-center items-center\">\n <div\n className=\"inline-block h-4 w-4 animate-spin rounded-full border-4 border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite]\"\n role=\"status\"\n >\n <span className=\"!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]\">\n Loading...\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n <textarea\n ref={suggestionTextAreaRef}\n value={editSuggestion}\n disabled={suggestionIsLoading}\n onChange={(e) => setEditSuggestion(e.target.value)}\n className=\"w-full text-base p-2 border border-gray-300 rounded-md resize-none bg-green-50\"\n style={{ overflow: \"auto\", maxHeight: \"10em\" }}\n />\n </>\n );\n\n const SubmitComponent = (\n <div className=\"flex w-full gap-4 justify-start\">\n <Button\n className=\" bg-green-700 text-white\"\n onClick={() => {\n performInsertion(editSuggestion);\n }}\n >\n Insert <i className=\"material-icons\">check</i>\n </Button>\n </div>\n );\n\n // show source search if the last word in the adjustment prompt BEGINS with an @\n const sourceSearchCandidate = adjustmentPrompt.split(\" \").pop();\n // if the candidate is @someCandidate, then 'someCandidate', otherwise undefined\n const sourceSearchWord = sourceSearchCandidate?.startsWith(\"@\")\n ? sourceSearchCandidate.slice(1)\n : undefined;\n\n return (\n <div className=\"w-full flex flex-col items-start relative gap-2\">\n {AdjustmentPromptComponent}\n {filePointers.length > 0 && (\n <IncludedFilesPreview\n includedFiles={filePointers}\n setIncludedFiles={setFilePointers}\n />\n )}\n {sourceSearchWord !== undefined && (\n <SourceSearchBox\n searchTerm={sourceSearchWord}\n recentFiles={mockFiles}\n onSelectedFile={(filePointer) => {\n setAdjustmentPrompt(\n adjustmentPrompt.replace(new RegExp(`@${sourceSearchWord}$`), \"\")\n );\n setFilePointers((prev) => [...prev, filePointer]);\n\n // focus back on the adjustment prompt, and move the cursor to the end\n adjustmentTextAreaRef.current?.focus();\n }}\n />\n )}\n {generatingSuggestion ? SuggestionComponent : null}\n {generatingSuggestion ? SubmitComponent : null}\n </div>\n );\n};\n\ninterface IncludedFilesPreviewProps {\n includedFiles: FilePointer[];\n setIncludedFiles: React.Dispatch<React.SetStateAction<FilePointer[]>>;\n}\n\nexport const IncludedFilesPreview: React.FC<IncludedFilesPreviewProps> = ({\n includedFiles,\n setIncludedFiles,\n}) => {\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap gap-2\">\n {includedFiles.map((filePointer, index) => {\n return (\n <FileChipPreview\n key={`file-${filePointer.sourceApplication}.${filePointer.name}`}\n filePointer={filePointer}\n onDelete={() => {\n setIncludedFiles((prev) =>\n prev.filter((fp) => fp !== filePointer)\n );\n }}\n />\n );\n })}\n </div>\n </div>\n );\n};\n\nexport interface FileChipPreviewProp {\n filePointer: FilePointer;\n onDelete: () => void;\n}\n\nexport const FileChipPreview: React.FC<FileChipPreviewProp> = ({\n filePointer,\n onDelete,\n}) => {\n return (\n <Chip\n label={filePointer.name}\n onDelete={onDelete}\n avatar={\n <Avatar sx={{ backgroundColor: \"transparent\" }}>\n <IconForFilePointer\n filePointer={filePointer}\n className=\"w-4 h-4 object-contain\"\n />\n </Avatar>\n }\n />\n );\n};\n\nexport function IconForFilePointer({\n filePointer,\n className,\n}: {\n filePointer: FilePointer;\n className: string;\n}): JSX.Element {\n if (filePointer.sourceApplication === \"Salesforce\") {\n return <IconSalesforce className={className} />;\n } else {\n return <IconSalesforce className={className} />;\n }\n}\n\nfunction IconSalesforce({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n preserveAspectRatio=\"xMidYMid meet\"\n viewBox=\"0 0 273 191\"\n {...props}\n >\n <title>{\"Salesforce.com logo\"}</title>\n <defs>\n <path id=\"a\" d=\"M.06.5h272v190H.06z\" />\n </defs>\n <g fillRule=\"evenodd\">\n <mask id=\"b\" fill=\"#fff\">\n <use xlinkHref=\"#a\" />\n </mask>\n <path\n fill=\"#00A1E0\"\n d=\"M113 21.3c8.78-9.14 21-14.8 34.5-14.8 18 0 33.6 10 42 24.9a58 58 0 0 1 23.7-5.05c32.4 0 58.7 26.5 58.7 59.2s-26.3 59.2-58.7 59.2c-3.96 0-7.82-.398-11.6-1.15-7.35 13.1-21.4 22-37.4 22a42.7 42.7 0 0 1-18.8-4.32c-7.45 17.5-24.8 29.8-45 29.8-21.1 0-39-13.3-45.9-32a45.1 45.1 0 0 1-9.34.972c-25.1 0-45.4-20.6-45.4-45.9 0-17 9.14-31.8 22.7-39.8a52.6 52.6 0 0 1-4.35-21c0-29.2 23.7-52.8 52.9-52.8 17.1 0 32.4 8.15 42 20.8\"\n mask=\"url(#b)\"\n />\n <path\n fill=\"#FFFFFE\"\n d=\"M39.4 99.3c-.171.446.061.539.116.618.511.37 1.03.638 1.55.939 2.78 1.47 5.4 1.9 8.14 1.9 5.58 0 9.05-2.97 9.05-7.75v-.094c0-4.42-3.92-6.03-7.58-7.18l-.479-.155c-2.77-.898-5.16-1.68-5.16-3.5v-.093c0-1.56 1.4-2.71 3.56-2.71 2.4 0 5.26.799 7.09 1.81 0 0 .542.35.739-.173.107-.283 1.04-2.78 1.14-3.06.106-.293-.08-.514-.271-.628-2.1-1.28-5-2.15-8-2.15l-.557.002c-5.11 0-8.68 3.09-8.68 7.51v.095c0 4.66 3.94 6.18 7.62 7.23l.592.184c2.68.824 5 1.54 5 3.42v.094c0 1.73-1.51 3.02-3.93 3.02-.941 0-3.94-.016-7.19-2.07-.393-.229-.617-.394-.92-.579-.16-.097-.56-.272-.734.252l-1.1 3.06m81.7 0c-.171.446.061.539.118.618.509.37 1.03.638 1.55.939 2.78 1.47 5.4 1.9 8.14 1.9 5.58 0 9.05-2.97 9.05-7.75v-.094c0-4.42-3.91-6.03-7.58-7.18l-.479-.155c-2.77-.898-5.16-1.68-5.16-3.5v-.093c0-1.56 1.4-2.71 3.56-2.71 2.4 0 5.25.799 7.09 1.81 0 0 .542.35.74-.173.106-.283 1.04-2.78 1.13-3.06.107-.293-.08-.514-.27-.628-2.1-1.28-5-2.15-8-2.15l-.558.002c-5.11 0-8.68 3.09-8.68 7.51v.095c0 4.66 3.94 6.18 7.62 7.23l.591.184c2.69.824 5 1.54 5 3.42v.094c0 1.73-1.51 3.02-3.93 3.02-.943 0-3.95-.016-7.19-2.07-.393-.229-.623-.387-.921-.579-.101-.064-.572-.248-.733.252l-1.1 3.06m55.8-9.36c0 2.7-.504 4.83-1.49 6.34-.984 1.49-2.47 2.22-4.54 2.22s-3.55-.724-4.52-2.21c-.977-1.5-1.47-3.64-1.47-6.34 0-2.7.496-4.82 1.47-6.31.968-1.48 2.44-2.19 4.52-2.19s3.56.717 4.54 2.19c.992 1.49 1.49 3.61 1.49 6.31m4.66-5.01c-.459-1.55-1.17-2.91-2.12-4.05a10.151 10.151 0 0 0-3.58-2.72c-1.42-.665-3.1-1-5-1s-3.57.337-5 1c-1.42.664-2.63 1.58-3.58 2.72-.948 1.14-1.66 2.5-2.12 4.05-.455 1.54-.686 3.22-.686 5.01 0 1.79.231 3.47.686 5.01.457 1.55 1.17 2.91 2.12 4.05.951 1.14 2.16 2.05 3.58 2.7 1.43.648 3.11.978 5 .978 1.89 0 3.57-.33 4.99-.978 1.42-.648 2.63-1.56 3.58-2.7.949-1.14 1.66-2.5 2.12-4.05.454-1.54.685-3.22.685-5.01 0-1.78-.231-3.47-.685-5.01m38.3 12.8c-.153-.453-.595-.282-.595-.282-.677.259-1.4.499-2.17.619-.776.122-1.64.183-2.55.183-2.25 0-4.05-.671-5.33-2-1.29-1.33-2.01-3.47-2-6.37.007-2.64.645-4.62 1.79-6.14 1.13-1.5 2.87-2.28 5.17-2.28 1.92 0 3.39.223 4.93.705 0 0 .365.159.54-.322.409-1.13.711-1.94 1.15-3.18.124-.355-.18-.505-.291-.548-.604-.236-2.03-.623-3.11-.786-1.01-.154-2.18-.234-3.5-.234-1.96 0-3.7.335-5.19.999-1.49.663-2.75 1.58-3.75 2.72-1 1.14-1.76 2.5-2.27 4.05-.505 1.54-.76 3.23-.76 5.02 0 3.86 1.04 6.99 3.1 9.28 2.06 2.3 5.16 3.46 9.2 3.46 2.39 0 4.84-.483 6.6-1.18 0 0 .336-.162.19-.554l-1.15-3.16m8.15-10.4c.223-1.5.634-2.75 1.28-3.72.967-1.48 2.44-2.29 4.51-2.29s3.44.814 4.42 2.29c.65.975.934 2.27 1.04 3.72l-11.3-.002zm15.7-3.3c-.397-1.49-1.38-3-2.02-3.69-1.02-1.09-2.01-1.86-3-2.28a11.5 11.5 0 0 0-4.52-.917c-1.97 0-3.76.333-5.21 1.01-1.45.682-2.67 1.61-3.63 2.77-.959 1.16-1.68 2.53-2.14 4.1-.46 1.55-.692 3.25-.692 5.03 0 1.82.241 3.51.715 5.04.479 1.54 1.25 2.89 2.29 4.01 1.04 1.13 2.37 2.01 3.97 2.63 1.59.615 3.52.934 5.73.927 4.56-.015 6.96-1.03 7.94-1.58.175-.098.34-.267.134-.754l-1.03-2.89c-.158-.431-.594-.275-.594-.275-1.13.422-2.73 1.18-6.48 1.17-2.45-.004-4.26-.727-5.4-1.86-1.16-1.16-1.74-2.85-1.83-5.25l15.8.012s.416-.004.459-.41c.017-.168.541-3.24-.471-6.79zm-142 3.3c.223-1.5.635-2.75 1.28-3.72.968-1.48 2.44-2.29 4.51-2.29s3.44.814 4.42 2.29c.649.975.933 2.27 1.04 3.72l-11.3-.002zm15.7-3.3c-.396-1.49-1.38-3-2.02-3.69-1.02-1.09-2.01-1.86-3-2.28a11.5 11.5 0 0 0-4.52-.917c-1.97 0-3.76.333-5.21 1.01-1.45.682-2.67 1.61-3.63 2.77-.957 1.16-1.68 2.53-2.14 4.1-.459 1.55-.69 3.25-.69 5.03 0 1.82.239 3.51.716 5.04.478 1.54 1.25 2.89 2.28 4.01 1.04 1.13 2.37 2.01 3.97 2.63 1.59.615 3.51.934 5.73.927 4.56-.015 6.96-1.03 7.94-1.58.174-.098.34-.267.133-.754l-1.03-2.89c-.159-.431-.595-.275-.595-.275-1.13.422-2.73 1.18-6.48 1.17-2.44-.004-4.26-.727-5.4-1.86-1.16-1.16-1.74-2.85-1.83-5.25l15.8.012s.416-.004.459-.41c.017-.168.541-3.24-.472-6.79zm-49.8 13.6c-.619-.494-.705-.615-.91-.936-.313-.483-.473-1.17-.473-2.05 0-1.38.46-2.38 1.41-3.05-.01.002 1.36-1.18 4.58-1.14a32 32 0 0 1 4.28.365v7.17h.002s-2 .431-4.26.567c-3.21.193-4.63-.924-4.62-.921zm6.28-11.1c-.64-.047-1.47-.07-2.46-.07-1.35 0-2.66.168-3.88.498-1.23.332-2.34.846-3.29 1.53a7.63 7.63 0 0 0-2.29 2.6c-.559 1.04-.844 2.26-.844 3.64 0 1.4.243 2.61.723 3.6a6.54 6.54 0 0 0 2.06 2.47c.877.638 1.96 1.11 3.21 1.39 1.24.283 2.64.426 4.18.426 1.62 0 3.23-.136 4.79-.399a95.1 95.1 0 0 0 3.97-.772c.526-.121 1.11-.28 1.11-.28.39-.099.36-.516.36-.516l-.009-14.4c0-3.16-.844-5.51-2.51-6.96-1.66-1.45-4.09-2.18-7.24-2.18-1.18 0-3.09.16-4.23.389 0 0-3.44.668-4.86 1.78 0 0-.312.192-.142.627l1.12 3c.139.389.518.256.518.256s.119-.047.259-.13c3.03-1.65 6.87-1.6 6.87-1.6 1.7 0 3.02.345 3.9 1.02.861.661 1.3 1.66 1.3 3.76v.667c-1.35-.196-2.6-.309-2.6-.309zm127-8.13a.428.428 0 0 0-.237-.568c-.269-.102-1.61-.385-2.64-.449-1.98-.124-3.08.21-4.07.654-.978.441-2.06 1.15-2.66 1.97l-.002-1.92c0-.264-.187-.477-.453-.477h-4.04c-.262 0-.452.213-.452.477v23.5a.48.48 0 0 0 .479.479h4.14a.479.479 0 0 0 .478-.479v-11.8c0-1.58.174-3.15.521-4.14.342-.979.807-1.76 1.38-2.32a4.79 4.79 0 0 1 1.95-1.17 7.68 7.68 0 0 1 2.12-.298c.825 0 1.73.212 1.73.212.304.034.473-.152.576-.426.271-.721 1.04-2.88 1.19-3.31\"\n />\n <path\n fill=\"#FFFFFE\"\n d=\"M162.201 67.548a13.258 13.258 0 0 0-1.559-.37 12.217 12.217 0 0 0-2.144-.166c-2.853 0-5.102.806-6.681 2.398-1.568 1.58-2.635 3.987-3.17 7.154l-.193 1.069h-3.581s-.437-.018-.529.459l-.588 3.28c-.041.314.094.51.514.508h3.486l-3.537 19.743c-.277 1.59-.594 2.898-.945 3.889-.346.978-.684 1.711-1.1 2.243-.403.515-.785.894-1.444 1.115-.544.183-1.17.267-1.856.267-.382 0-.89-.064-1.265-.139-.375-.074-.57-.158-.851-.276 0 0-.409-.156-.57.254-.131.335-1.06 2.89-1.17 3.206-.112.312.045.558.243.629.464.166.809.272 1.441.421.878.207 1.618.22 2.311.22 1.452 0 2.775-.204 3.872-.6 1.104-.399 2.065-1.094 2.915-2.035.919-1.015 1.497-2.078 2.05-3.528.547-1.437 1.013-3.221 1.386-5.3l3.554-20.109h5.196s.438.016.529-.459l.588-3.28c.041-.314-.093-.51-.515-.508h-5.043c.025-.114.254-1.888.833-3.558.247-.713.712-1.288 1.106-1.683a3.273 3.273 0 0 1 1.321-.822 5.48 5.48 0 0 1 1.693-.244c.475 0 .941.057 1.296.131.489.104.679.159.807.197.514.157.583.005.684-.244l1.206-3.312c.124-.356-.178-.506-.29-.55m-70.474 34.117c0 .264-.188.479-.452.479h-4.183c-.265 0-.453-.215-.453-.479V67.997c0-.263.188-.476.453-.476h4.183c.264 0 .452.213.452.476v33.668\"\n />\n </g>\n </svg>\n );\n}\n\nconst mockFiles: FilePointer[] = [\n {\n name: \"prospecting call transcript\",\n sourceApplication: \"Salesforce\",\n getContents: async () => {\n return \"some contents\";\n },\n },\n {\n name: \"customer feedback\",\n sourceApplication: \"Zendesk\",\n getContents: async () => {\n return \"some contents\";\n },\n },\n {\n name: \"product specifications\",\n sourceApplication: \"Google Docs\",\n getContents: async () => {\n return \"some contents\";\n },\n },\n {\n name: \"meeting minutes\",\n sourceApplication: \"Microsoft Teams\",\n getContents: async () => {\n return \"some contents\";\n },\n },\n {\n name: \"project plan\",\n sourceApplication: \"Trello\",\n getContents: async () => {\n return \"some contents\";\n },\n },\n {\n name: \"code review comments\",\n sourceApplication: \"Github\",\n getContents: async () => {\n return \"some contents\";\n },\n },\n];\n"]}
@@ -1,4 +1,4 @@
1
- import { HoveringInsertionPromptBox } from './chunk-OM5WQQOU.mjs';
1
+ import { HoveringInsertionPromptBox } from './chunk-CZMPLTHF.mjs';
2
2
  import { useHoveringEditorContext } from './chunk-YW3REYX6.mjs';
3
3
  import { Portal, Menu } from './chunk-XHUMROEY.mjs';
4
4
  import { getTextAroundSelection, getFullEditorTextWithNewlines } from './chunk-IXJ2HCOA.mjs';
@@ -104,4 +104,4 @@ function editorState(editor, selection) {
104
104
 
105
105
  export { HoveringToolbar };
106
106
  //# sourceMappingURL=out.js.map
107
- //# sourceMappingURL=chunk-RPDVSCLO.mjs.map
107
+ //# sourceMappingURL=chunk-4MDDCR32.mjs.map
@@ -0,0 +1,20 @@
1
+ import { HoveringInsertionPromptBoxCore } from './chunk-23UHDUUY.mjs';
2
+ import { jsx } from 'react/jsx-runtime';
3
+
4
+ var HoveringInsertionPromptBox = (props) => {
5
+ return /* @__PURE__ */ jsx("div", {
6
+ className: "flex flex-col justify-center items-center space-y-4 rounded-md border shadow-lg p-4 border-gray- bg-white",
7
+ style: { width: "35rem" },
8
+ children: /* @__PURE__ */ jsx(HoveringInsertionPromptBoxCore, {
9
+ state: {
10
+ editorState: props.editorState
11
+ },
12
+ performInsertion: props.performInsertion,
13
+ insertionOrEditingFunction: props.apiConfig.insertionOrEditingFunction
14
+ })
15
+ });
16
+ };
17
+
18
+ export { HoveringInsertionPromptBox };
19
+ //# sourceMappingURL=out.js.map
20
+ //# sourceMappingURL=chunk-CZMPLTHF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx"],"names":[],"mappings":";;;;;AAoBM;AANC,IAAM,6BAA8C,CAAC,UAAU;AACpE,SACE,oBAAC;AAAA,IACC,WAAU;AAAA,IACV,OAAO,EAAE,OAAO,QAAQ;AAAA,IAExB,8BAAC;AAAA,MACC,OAAO;AAAA,QACL,aAAa,MAAM;AAAA,MACrB;AAAA,MACA,kBAAkB,MAAM;AAAA,MACxB,4BAA4B,MAAM,UAAU;AAAA,KAC9C;AAAA,GACF;AAEJ","sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport { HoveringInsertionPromptBoxCore } from \"./hovering-insertion-prompt-box-core\";\nimport {\n EditingEditorState,\n InsertionEditorApiConfig,\n} from \"../../../types/base/autosuggestions-bare-function\";\n\nexport interface Props {\n editorState: EditingEditorState;\n apiConfig: InsertionEditorApiConfig;\n performInsertion: (insertedText: string) => void;\n closeWindow: () => void;\n}\n\nexport const HoveringInsertionPromptBox: React.FC<Props> = (props) => {\n return (\n <div\n className=\"flex flex-col justify-center items-center space-y-4 rounded-md border shadow-lg p-4 border-gray- bg-white\"\n style={{ width: \"35rem\" }}\n >\n <HoveringInsertionPromptBoxCore\n state={{\n editorState: props.editorState,\n }}\n performInsertion={props.performInsertion}\n insertionOrEditingFunction={props.apiConfig.insertionOrEditingFunction}\n />\n </div>\n );\n};\n"]}
@@ -0,0 +1,29 @@
1
+ import { __async } from './chunk-MRXNTQOX.mjs';
2
+
3
+ // src/lib/stream-promise-flatten.ts
4
+ function streamPromiseFlatten(promise) {
5
+ return new ReadableStream({
6
+ start(controller) {
7
+ return __async(this, null, function* () {
8
+ try {
9
+ const stream = yield promise;
10
+ const reader = stream.getReader();
11
+ while (true) {
12
+ const { done, value } = yield reader.read();
13
+ if (done) {
14
+ controller.close();
15
+ return;
16
+ }
17
+ controller.enqueue(value);
18
+ }
19
+ } catch (error) {
20
+ controller.error(error);
21
+ }
22
+ });
23
+ }
24
+ });
25
+ }
26
+
27
+ export { streamPromiseFlatten };
28
+ //# sourceMappingURL=out.js.map
29
+ //# sourceMappingURL=chunk-FN7GDKKG.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/stream-promise-flatten.ts"],"names":[],"mappings":";;;;;AAAO,SAAS,qBACd,SACmB;AACnB,SAAO,IAAI,eAAkB;AAAA,IACrB,MAAM,YAAY;AAAA;AACtB,YAAI;AACF,gBAAM,SAAS,MAAM;AACrB,gBAAM,SAAS,OAAO,UAAU;AAEhC,iBAAO,MAAM;AACX,kBAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAE1C,gBAAI,MAAM;AACR,yBAAW,MAAM;AACjB;AAAA,YACF;AAEA,uBAAW,QAAQ,KAAK;AAAA,UAC1B;AAAA,QACF,SAAS,OAAP;AACA,qBAAW,MAAM,KAAK;AAAA,QACxB;AAAA,MACF;AAAA;AAAA,EACF,CAAC;AACH","sourcesContent":["export function streamPromiseFlatten<A>(\n promise: Promise<ReadableStream<A>>\n): ReadableStream<A> {\n return new ReadableStream<A>({\n async start(controller) {\n try {\n const stream = await promise;\n const reader = stream.getReader();\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n controller.close();\n return;\n }\n\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n },\n });\n}\n"]}
@@ -1,16 +1,16 @@
1
+ import { useAutosuggestions } from './chunk-UHD44NC5.mjs';
2
+ import { useCopilotTextareaEditor } from './chunk-CSGFJU3L.mjs';
1
3
  import { usePopulateCopilotTextareaRef } from './chunk-YQU7WG7T.mjs';
2
4
  import { addAutocompletionsToEditor } from './chunk-WJYQWL4I.mjs';
3
5
  import { clearAutocompletionsFromEditor } from './chunk-F3MHL6ZY.mjs';
4
6
  import { replaceEditorText } from './chunk-RQHOUUXQ.mjs';
5
- import { useAutosuggestions } from './chunk-UHD44NC5.mjs';
6
- import { useCopilotTextareaEditor } from './chunk-CSGFJU3L.mjs';
7
+ import { makeRenderPlaceholderFunction } from './chunk-OELUUJZY.mjs';
8
+ import { TrackerTextEditedSinceLastCursorMovement } from './chunk-OD7ZMOVE.mjs';
7
9
  import { useAddBrandingCss } from './chunk-MPME5BW2.mjs';
8
- import { HoveringToolbar } from './chunk-RPDVSCLO.mjs';
10
+ import { HoveringToolbar } from './chunk-4MDDCR32.mjs';
9
11
  import { useHoveringEditorContext, HoveringEditorProvider } from './chunk-YW3REYX6.mjs';
10
12
  import { defaultBaseAutosuggestionsConfig } from './chunk-D7SEV5PR.mjs';
11
13
  import { makeRenderElementFunction } from './chunk-LNAIMEB2.mjs';
12
- import { makeRenderPlaceholderFunction } from './chunk-OELUUJZY.mjs';
13
- import { TrackerTextEditedSinceLastCursorMovement } from './chunk-OD7ZMOVE.mjs';
14
14
  import { getTextAroundCollapsedCursor, getFullEditorTextWithNewlines } from './chunk-IXJ2HCOA.mjs';
15
15
  import { __spreadValues, __objRest, __spreadProps } from './chunk-MRXNTQOX.mjs';
16
16
  import React, { useMemo, useState, useCallback, useEffect } from 'react';
@@ -198,4 +198,4 @@ var BaseCopilotTextarea = React.forwardRef(
198
198
 
199
199
  export { BaseCopilotTextarea };
200
200
  //# sourceMappingURL=out.js.map
201
- //# sourceMappingURL=chunk-7SMDOAG2.mjs.map
201
+ //# sourceMappingURL=chunk-OS2YW2UX.mjs.map
@@ -1,7 +1,7 @@
1
- import { useMakeStandardAutosuggestionFunction } from './chunk-HAFHLU4N.mjs';
2
1
  import { useMakeStandardInsertionOrEditingFunction } from './chunk-VBIJPE3H.mjs';
2
+ import { useMakeStandardAutosuggestionFunction } from './chunk-HAFHLU4N.mjs';
3
3
  import { defaultAutosuggestionsConfig } from './chunk-QL2GYGG5.mjs';
4
- import { BaseCopilotTextarea } from './chunk-7SMDOAG2.mjs';
4
+ import { BaseCopilotTextarea } from './chunk-OS2YW2UX.mjs';
5
5
  import { __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
6
6
  import React from 'react';
7
7
  import merge from 'lodash.merge';
@@ -41,4 +41,4 @@ var CopilotTextarea = React.forwardRef(
41
41
 
42
42
  export { CopilotTextarea };
43
43
  //# sourceMappingURL=out.js.map
44
- //# sourceMappingURL=chunk-PF3XRNDB.mjs.map
44
+ //# sourceMappingURL=chunk-U5GM2PRT.mjs.map
@@ -1,31 +1,31 @@
1
- export { BaseCopilotTextarea } from '../../chunk-7SMDOAG2.mjs';
2
- import '../../chunk-YQU7WG7T.mjs';
3
- import '../../chunk-WJYQWL4I.mjs';
4
- import '../../chunk-F3MHL6ZY.mjs';
5
- import '../../chunk-RQHOUUXQ.mjs';
1
+ export { BaseCopilotTextarea } from '../../chunk-OS2YW2UX.mjs';
6
2
  import '../../chunk-UHD44NC5.mjs';
7
3
  import '../../chunk-JAFCXEPU.mjs';
8
4
  import '../../chunk-CSGFJU3L.mjs';
9
5
  import '../../chunk-KCHYD3EB.mjs';
6
+ import '../../chunk-YQU7WG7T.mjs';
7
+ import '../../chunk-WJYQWL4I.mjs';
8
+ import '../../chunk-F3MHL6ZY.mjs';
9
+ import '../../chunk-RQHOUUXQ.mjs';
10
+ import '../../chunk-OELUUJZY.mjs';
11
+ import '../../chunk-OD7ZMOVE.mjs';
10
12
  import '../../chunk-MPME5BW2.mjs';
11
- import '../../chunk-RPDVSCLO.mjs';
13
+ import '../../chunk-4MDDCR32.mjs';
12
14
  import '../../chunk-L7VVZH4Q.mjs';
13
- import '../../chunk-OM5WQQOU.mjs';
14
- import '../../chunk-CDB7HFCY.mjs';
15
+ import '../../chunk-CZMPLTHF.mjs';
15
16
  import '../../chunk-YW3REYX6.mjs';
16
17
  import '../../chunk-XHUMROEY.mjs';
17
- import '../../chunk-ITZHK3YV.mjs';
18
+ import '../../chunk-23UHDUUY.mjs';
18
19
  import '../../chunk-ND5PXTAW.mjs';
20
+ import '../../chunk-2NURR2DX.mjs';
19
21
  import '../../chunk-3YJ63D5D.mjs';
20
22
  import '../../chunk-O5OWT5GE.mjs';
21
23
  import '../../chunk-5EJ5XOGP.mjs';
22
- import '../../chunk-2NURR2DX.mjs';
24
+ import '../../chunk-FN7GDKKG.mjs';
23
25
  import '../../chunk-KGKLUWKW.mjs';
24
26
  import '../../chunk-WJHSY5T6.mjs';
25
27
  import '../../chunk-D7SEV5PR.mjs';
26
28
  import '../../chunk-LNAIMEB2.mjs';
27
- import '../../chunk-OELUUJZY.mjs';
28
- import '../../chunk-OD7ZMOVE.mjs';
29
29
  import '../../chunk-NKW5OU2S.mjs';
30
30
  import '../../chunk-YTOPHPSG.mjs';
31
31
  import '../../chunk-IXJ2HCOA.mjs';
@@ -1,40 +1,40 @@
1
- export { CopilotTextarea } from '../../chunk-PF3XRNDB.mjs';
2
- import '../../chunk-HAFHLU4N.mjs';
1
+ export { CopilotTextarea } from '../../chunk-U5GM2PRT.mjs';
3
2
  import '../../chunk-VBIJPE3H.mjs';
3
+ import '../../chunk-HAFHLU4N.mjs';
4
4
  import '../../chunk-5FO6ISW4.mjs';
5
5
  import '../../chunk-QL2GYGG5.mjs';
6
6
  import '../../chunk-55EGOC5T.mjs';
7
7
  import '../../chunk-XDT7BF3V.mjs';
8
8
  import '../../chunk-A2RRLD23.mjs';
9
9
  import '../../chunk-5ARCOTW3.mjs';
10
- import '../../chunk-7SMDOAG2.mjs';
11
- import '../../chunk-YQU7WG7T.mjs';
12
- import '../../chunk-WJYQWL4I.mjs';
13
- import '../../chunk-F3MHL6ZY.mjs';
14
- import '../../chunk-RQHOUUXQ.mjs';
10
+ import '../../chunk-OS2YW2UX.mjs';
15
11
  import '../../chunk-UHD44NC5.mjs';
16
12
  import '../../chunk-JAFCXEPU.mjs';
17
13
  import '../../chunk-CSGFJU3L.mjs';
18
14
  import '../../chunk-KCHYD3EB.mjs';
15
+ import '../../chunk-YQU7WG7T.mjs';
16
+ import '../../chunk-WJYQWL4I.mjs';
17
+ import '../../chunk-F3MHL6ZY.mjs';
18
+ import '../../chunk-RQHOUUXQ.mjs';
19
+ import '../../chunk-OELUUJZY.mjs';
20
+ import '../../chunk-OD7ZMOVE.mjs';
19
21
  import '../../chunk-MPME5BW2.mjs';
20
- import '../../chunk-RPDVSCLO.mjs';
22
+ import '../../chunk-4MDDCR32.mjs';
21
23
  import '../../chunk-L7VVZH4Q.mjs';
22
- import '../../chunk-OM5WQQOU.mjs';
23
- import '../../chunk-CDB7HFCY.mjs';
24
+ import '../../chunk-CZMPLTHF.mjs';
24
25
  import '../../chunk-YW3REYX6.mjs';
25
26
  import '../../chunk-XHUMROEY.mjs';
26
- import '../../chunk-ITZHK3YV.mjs';
27
+ import '../../chunk-23UHDUUY.mjs';
27
28
  import '../../chunk-ND5PXTAW.mjs';
29
+ import '../../chunk-2NURR2DX.mjs';
28
30
  import '../../chunk-3YJ63D5D.mjs';
29
31
  import '../../chunk-O5OWT5GE.mjs';
30
32
  import '../../chunk-5EJ5XOGP.mjs';
31
- import '../../chunk-2NURR2DX.mjs';
33
+ import '../../chunk-FN7GDKKG.mjs';
32
34
  import '../../chunk-KGKLUWKW.mjs';
33
35
  import '../../chunk-WJHSY5T6.mjs';
34
36
  import '../../chunk-D7SEV5PR.mjs';
35
37
  import '../../chunk-LNAIMEB2.mjs';
36
- import '../../chunk-OELUUJZY.mjs';
37
- import '../../chunk-OD7ZMOVE.mjs';
38
38
  import '../../chunk-NKW5OU2S.mjs';
39
39
  import '../../chunk-YTOPHPSG.mjs';
40
40
  import '../../chunk-IXJ2HCOA.mjs';
@@ -1,15 +1,15 @@
1
- export { HoveringToolbar } from '../../chunk-RPDVSCLO.mjs';
1
+ export { HoveringToolbar } from '../../chunk-4MDDCR32.mjs';
2
2
  import '../../chunk-L7VVZH4Q.mjs';
3
- import '../../chunk-OM5WQQOU.mjs';
4
- import '../../chunk-CDB7HFCY.mjs';
3
+ import '../../chunk-CZMPLTHF.mjs';
5
4
  import '../../chunk-YW3REYX6.mjs';
6
5
  import '../../chunk-XHUMROEY.mjs';
7
- import '../../chunk-ITZHK3YV.mjs';
6
+ import '../../chunk-23UHDUUY.mjs';
8
7
  import '../../chunk-ND5PXTAW.mjs';
8
+ import '../../chunk-2NURR2DX.mjs';
9
9
  import '../../chunk-3YJ63D5D.mjs';
10
10
  import '../../chunk-O5OWT5GE.mjs';
11
11
  import '../../chunk-5EJ5XOGP.mjs';
12
- import '../../chunk-2NURR2DX.mjs';
12
+ import '../../chunk-FN7GDKKG.mjs';
13
13
  import '../../chunk-KGKLUWKW.mjs';
14
14
  import '../../chunk-IXJ2HCOA.mjs';
15
15
  import '../../chunk-MRXNTQOX.mjs';
@@ -2,23 +2,15 @@ import { EditingEditorState, Generator_InsertionOrEditingSuggestion } from '../.
2
2
  import { FilePointer } from '../../source-search-box/source-search-box.js';
3
3
  import React__default from 'react';
4
4
 
5
- type State_SuggestionAppearing = {
6
- type: "suggestion-appearing";
7
- initialSuggestion: SuggestionSnapshot;
8
- };
9
- type SuggestionSnapshot = {
10
- adjustmentPrompt: string;
11
- generatingSuggestion: ReadableStream<string>;
5
+ type SuggestionState = {
12
6
  editorState: EditingEditorState;
13
7
  };
14
- interface SuggestionAppearingProps {
15
- state: State_SuggestionAppearing;
8
+ interface HoveringInsertionPromptBoxCoreProps {
9
+ state: SuggestionState;
16
10
  performInsertion: (insertedText: string) => void;
17
- goBack: () => void;
18
11
  insertionOrEditingFunction: Generator_InsertionOrEditingSuggestion;
19
- onGeneratedText: (generatedText: ReadableStream<string>) => void;
20
12
  }
21
- declare const SuggestionAppearing: React__default.FC<SuggestionAppearingProps>;
13
+ declare const HoveringInsertionPromptBoxCore: React__default.FC<HoveringInsertionPromptBoxCoreProps>;
22
14
  interface IncludedFilesPreviewProps {
23
15
  includedFiles: FilePointer[];
24
16
  setIncludedFiles: React__default.Dispatch<React__default.SetStateAction<FilePointer[]>>;
@@ -34,4 +26,4 @@ declare function IconForFilePointer({ filePointer, className, }: {
34
26
  className: string;
35
27
  }): JSX.Element;
36
28
 
37
- export { FileChipPreview, FileChipPreviewProp, IconForFilePointer, IncludedFilesPreview, State_SuggestionAppearing, SuggestionAppearing, SuggestionAppearingProps };
29
+ export { FileChipPreview, FileChipPreviewProp, HoveringInsertionPromptBoxCore, HoveringInsertionPromptBoxCoreProps, IconForFilePointer, IncludedFilesPreview, SuggestionState };
@@ -1,10 +1,11 @@
1
- export { FileChipPreview, IconForFilePointer, IncludedFilesPreview, SuggestionAppearing } from '../../../chunk-ITZHK3YV.mjs';
1
+ export { FileChipPreview, HoveringInsertionPromptBoxCore, IconForFilePointer, IncludedFilesPreview } from '../../../chunk-23UHDUUY.mjs';
2
2
  import '../../../chunk-ND5PXTAW.mjs';
3
+ import '../../../chunk-2NURR2DX.mjs';
3
4
  import '../../../chunk-3YJ63D5D.mjs';
4
5
  import '../../../chunk-O5OWT5GE.mjs';
5
6
  import '../../../chunk-5EJ5XOGP.mjs';
6
- import '../../../chunk-2NURR2DX.mjs';
7
+ import '../../../chunk-FN7GDKKG.mjs';
7
8
  import '../../../chunk-KGKLUWKW.mjs';
8
9
  import '../../../chunk-MRXNTQOX.mjs';
9
10
  //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=mode-suggestion-appearing.mjs.map
11
+ //# sourceMappingURL=hovering-insertion-prompt-box-core.mjs.map
@@ -1,11 +1,11 @@
1
- export { HoveringInsertionPromptBox } from '../../../chunk-OM5WQQOU.mjs';
2
- import '../../../chunk-CDB7HFCY.mjs';
3
- import '../../../chunk-ITZHK3YV.mjs';
1
+ export { HoveringInsertionPromptBox } from '../../../chunk-CZMPLTHF.mjs';
2
+ import '../../../chunk-23UHDUUY.mjs';
4
3
  import '../../../chunk-ND5PXTAW.mjs';
4
+ import '../../../chunk-2NURR2DX.mjs';
5
5
  import '../../../chunk-3YJ63D5D.mjs';
6
6
  import '../../../chunk-O5OWT5GE.mjs';
7
7
  import '../../../chunk-5EJ5XOGP.mjs';
8
- import '../../../chunk-2NURR2DX.mjs';
8
+ import '../../../chunk-FN7GDKKG.mjs';
9
9
  import '../../../chunk-KGKLUWKW.mjs';
10
10
  import '../../../chunk-MRXNTQOX.mjs';
11
11
  //# sourceMappingURL=out.js.map
@@ -1,12 +1,12 @@
1
1
  import '../../../chunk-L7VVZH4Q.mjs';
2
- export { HoveringInsertionPromptBox } from '../../../chunk-OM5WQQOU.mjs';
3
- import '../../../chunk-CDB7HFCY.mjs';
4
- import '../../../chunk-ITZHK3YV.mjs';
2
+ export { HoveringInsertionPromptBox } from '../../../chunk-CZMPLTHF.mjs';
3
+ import '../../../chunk-23UHDUUY.mjs';
5
4
  import '../../../chunk-ND5PXTAW.mjs';
5
+ import '../../../chunk-2NURR2DX.mjs';
6
6
  import '../../../chunk-3YJ63D5D.mjs';
7
7
  import '../../../chunk-O5OWT5GE.mjs';
8
8
  import '../../../chunk-5EJ5XOGP.mjs';
9
- import '../../../chunk-2NURR2DX.mjs';
9
+ import '../../../chunk-FN7GDKKG.mjs';
10
10
  import '../../../chunk-KGKLUWKW.mjs';
11
11
  import '../../../chunk-MRXNTQOX.mjs';
12
12
  //# sourceMappingURL=out.js.map