@copilotkit/react-textarea 0.11.0 → 0.12.0

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 (62) hide show
  1. package/.turbo/turbo-build.log +84 -73
  2. package/CHANGELOG.md +7 -0
  3. package/dist/chunk-AOEXKPIX.mjs +83 -0
  4. package/dist/chunk-AOEXKPIX.mjs.map +1 -0
  5. package/dist/{chunk-6SYD77G6.mjs → chunk-CSGFJU3L.mjs} +2 -2
  6. package/dist/chunk-CSGFJU3L.mjs.map +1 -0
  7. package/dist/chunk-DCQ27XRF.mjs +32 -0
  8. package/dist/chunk-DCQ27XRF.mjs.map +1 -0
  9. package/dist/chunk-DE5K76I2.mjs +3 -0
  10. package/dist/{chunk-E2UEE45I.mjs → chunk-HZGSG7ST.mjs} +1 -1
  11. package/dist/chunk-HZGSG7ST.mjs.map +1 -0
  12. package/dist/{chunk-THWPPG6M.mjs → chunk-IGQI27NI.mjs} +20 -2
  13. package/dist/chunk-IGQI27NI.mjs.map +1 -0
  14. package/dist/chunk-M6QFKIBE.mjs +161 -0
  15. package/dist/chunk-M6QFKIBE.mjs.map +1 -0
  16. package/dist/chunk-WADHCMPK.mjs +3 -0
  17. package/dist/components/base-copilot-textarea/base-copilot-textarea.d.ts +9 -4
  18. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +9 -8
  19. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs +1 -1
  20. package/dist/components/copilot-textarea/copilot-textarea.d.ts +3 -2
  21. package/dist/components/copilot-textarea/copilot-textarea.mjs +10 -9
  22. package/dist/components/index.d.ts +2 -1
  23. package/dist/components/index.mjs +10 -9
  24. package/dist/hooks/{use-autosuggestions.d.ts → base-copilot-textarea-implementation/use-autosuggestions.d.ts} +3 -3
  25. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs +7 -0
  26. package/dist/hooks/{use-copilot-textarea-editor.d.ts → base-copilot-textarea-implementation/use-copilot-textarea-editor.d.ts} +1 -1
  27. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs +5 -0
  28. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs.map +1 -0
  29. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.d.ts +7 -0
  30. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs +6 -0
  31. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs.map +1 -0
  32. package/dist/index.css +4 -0
  33. package/dist/index.css.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.mjs +12 -10
  36. package/dist/types/html-copilot-textarea-element.d.ts +7 -0
  37. package/dist/types/html-copilot-textarea-element.mjs +3 -0
  38. package/dist/types/html-copilot-textarea-element.mjs.map +1 -0
  39. package/dist/types/index.d.ts +1 -0
  40. package/dist/types/index.mjs +2 -1
  41. package/package.json +1 -1
  42. package/src/components/base-copilot-textarea/base-copilot-textarea.tsx +160 -146
  43. package/src/components/base-copilot-textarea/use-add-branding-css.tsx +25 -1
  44. package/src/components/copilot-textarea/copilot-textarea.tsx +31 -21
  45. package/src/hooks/{use-autosuggestions.ts → base-copilot-textarea-implementation/use-autosuggestions.ts} +5 -5
  46. package/src/hooks/{use-copilot-textarea-editor.tsx → base-copilot-textarea-implementation/use-copilot-textarea-editor.tsx} +5 -5
  47. package/src/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.ts +101 -0
  48. package/src/types/html-copilot-textarea-element.ts +5 -0
  49. package/src/types/index.ts +1 -0
  50. package/dist/chunk-6SYD77G6.mjs.map +0 -1
  51. package/dist/chunk-E2UEE45I.mjs.map +0 -1
  52. package/dist/chunk-FD6FGKYY.mjs +0 -3
  53. package/dist/chunk-THWPPG6M.mjs.map +0 -1
  54. package/dist/chunk-YICIML6J.mjs +0 -154
  55. package/dist/chunk-YICIML6J.mjs.map +0 -1
  56. package/dist/chunk-YTT5NE6B.mjs +0 -25
  57. package/dist/chunk-YTT5NE6B.mjs.map +0 -1
  58. package/dist/hooks/use-autosuggestions.mjs +0 -7
  59. package/dist/hooks/use-copilot-textarea-editor.mjs +0 -5
  60. /package/dist/{chunk-FD6FGKYY.mjs.map → chunk-DE5K76I2.mjs.map} +0 -0
  61. /package/dist/{hooks/use-autosuggestions.mjs.map → chunk-WADHCMPK.mjs.map} +0 -0
  62. /package/dist/hooks/{use-copilot-textarea-editor.mjs.map → base-copilot-textarea-implementation/use-autosuggestions.mjs.map} +0 -0
@@ -1,154 +0,0 @@
1
- import { addAutocompletionsToEditor } from './chunk-WJYQWL4I.mjs';
2
- import { clearAutocompletionsFromEditor } from './chunk-4XYYSJ5C.mjs';
3
- import { replaceEditorText } from './chunk-TSF4AJIK.mjs';
4
- import { getTextAroundCursor, getFullEditorTextWithNewlines } from './chunk-3UQM3NLM.mjs';
5
- import { defaultBaseAutosuggestionsConfig } from './chunk-7KWRVIYV.mjs';
6
- import { makeRenderElementFunction } from './chunk-LNAIMEB2.mjs';
7
- import { makeRenderPlaceholderFunction } from './chunk-OELUUJZY.mjs';
8
- import { useAddBrandingCss } from './chunk-THWPPG6M.mjs';
9
- import { useAutosuggestions } from './chunk-E2UEE45I.mjs';
10
- import { useCopilotTextareaEditor } from './chunk-6SYD77G6.mjs';
11
- import { __spreadValues, __objRest } from './chunk-MRXNTQOX.mjs';
12
- import { useMemo, useState, useCallback, useEffect } from 'react';
13
- import { Editor } from 'slate';
14
- import { Slate, Editable } from 'slate-react';
15
- import { twMerge } from 'tailwind-merge';
16
- import { jsx } from 'react/jsx-runtime';
17
-
18
- function BaseCopilotTextarea(props) {
19
- const autosuggestionsConfig = __spreadValues(__spreadValues({}, defaultBaseAutosuggestionsConfig), props.autosuggestionsConfig);
20
- const valueOnInitialRender = useMemo(() => {
21
- var _a2;
22
- return (_a2 = props.value) != null ? _a2 : "";
23
- }, []);
24
- const [lastKnownFullEditorText, setLastKnownFullEditorText] = useState(valueOnInitialRender);
25
- const initialValue = useMemo(() => {
26
- return [
27
- {
28
- type: "paragraph",
29
- children: [{ text: valueOnInitialRender }]
30
- }
31
- ];
32
- }, [valueOnInitialRender]);
33
- const editor = useCopilotTextareaEditor();
34
- const insertText = useCallback(
35
- (autosuggestion) => {
36
- Editor.insertText(editor, autosuggestion.text, {
37
- at: autosuggestion.point
38
- });
39
- },
40
- [editor]
41
- );
42
- const {
43
- currentAutocompleteSuggestion,
44
- onChangeHandler: onChangeHandlerForAutocomplete,
45
- onKeyDownHandler: onKeyDownHandlerForAutocomplete
46
- } = useAutosuggestions(
47
- autosuggestionsConfig.debounceTime,
48
- autosuggestionsConfig.acceptAutosuggestionKey,
49
- props.autosuggestionsFunction,
50
- insertText,
51
- autosuggestionsConfig.disableWhenEmpty,
52
- autosuggestionsConfig.disabled
53
- );
54
- useEffect(() => {
55
- clearAutocompletionsFromEditor(editor);
56
- if (currentAutocompleteSuggestion) {
57
- addAutocompletionsToEditor(
58
- editor,
59
- currentAutocompleteSuggestion.text,
60
- currentAutocompleteSuggestion.point
61
- );
62
- }
63
- }, [currentAutocompleteSuggestion]);
64
- const suggestionStyleAugmented = useMemo(() => {
65
- return __spreadValues({
66
- fontStyle: "italic",
67
- color: "gray"
68
- }, props.suggestionsStyle);
69
- }, [props.suggestionsStyle]);
70
- useAddBrandingCss(suggestionStyleAugmented, props.disableBranding);
71
- const renderElementMemoized = useMemo(() => {
72
- return makeRenderElementFunction(suggestionStyleAugmented);
73
- }, [suggestionStyleAugmented]);
74
- const renderPlaceholderMemoized = useMemo(() => {
75
- const placeholderStyleSlatejsOverrides = {
76
- top: void 0
77
- };
78
- const placeholderStyleAugmented = __spreadValues(__spreadValues({}, placeholderStyleSlatejsOverrides), props.placeholderStyle);
79
- return makeRenderPlaceholderFunction(placeholderStyleAugmented);
80
- }, [props.placeholderStyle]);
81
- useEffect(() => {
82
- var _a2, _b;
83
- if (props.value === lastKnownFullEditorText) {
84
- return;
85
- }
86
- setLastKnownFullEditorText((_a2 = props.value) != null ? _a2 : "");
87
- replaceEditorText(editor, (_b = props.value) != null ? _b : "");
88
- }, [props.value]);
89
- const _a = props, {
90
- placeholderStyle,
91
- value,
92
- onValueChange,
93
- autosuggestionsConfig: autosuggestionsConfigFromProps,
94
- autosuggestionsFunction,
95
- className,
96
- onChange,
97
- onKeyDown
98
- } = _a, propsToForward = __objRest(_a, [
99
- "placeholderStyle",
100
- "value",
101
- "onValueChange",
102
- "autosuggestionsConfig",
103
- "autosuggestionsFunction",
104
- "className",
105
- "onChange",
106
- "onKeyDown"
107
- ]);
108
- const moddedClassName = (() => {
109
- const baseClassName = "copilot-textarea";
110
- const brandingClass = props.disableBranding ? "no-branding" : "with-branding";
111
- const defaultTailwindClassName = "bg-white overflow-y-auto resize-y";
112
- const mergedClassName = twMerge(defaultTailwindClassName, className != null ? className : "");
113
- return `${baseClassName} ${brandingClass} ${mergedClassName}`;
114
- })();
115
- return /* @__PURE__ */ jsx(Slate, {
116
- editor,
117
- initialValue,
118
- onChange: (value2) => {
119
- var _a2, _b;
120
- const newEditorState = getTextAroundCursor(editor);
121
- const fullEditorText = newEditorState ? newEditorState.textBeforeCursor + newEditorState.textAfterCursor : getFullEditorTextWithNewlines(editor);
122
- setLastKnownFullEditorText(fullEditorText);
123
- onChangeHandlerForAutocomplete(newEditorState);
124
- (_a2 = props.onValueChange) == null ? void 0 : _a2.call(props, fullEditorText);
125
- (_b = props.onChange) == null ? void 0 : _b.call(props, makeSemiFakeReactTextAreaEvent(fullEditorText));
126
- },
127
- children: /* @__PURE__ */ jsx(Editable, __spreadValues({
128
- renderElement: renderElementMemoized,
129
- renderPlaceholder: renderPlaceholderMemoized,
130
- onKeyDown: (event) => {
131
- var _a2;
132
- onKeyDownHandlerForAutocomplete(event);
133
- (_a2 = props.onKeyDown) == null ? void 0 : _a2.call(props, event);
134
- },
135
- className: moddedClassName
136
- }, propsToForward))
137
- });
138
- }
139
- function makeSemiFakeReactTextAreaEvent(currentText) {
140
- return {
141
- target: {
142
- value: currentText,
143
- type: "copilot-textarea"
144
- },
145
- currentTarget: {
146
- value: currentText,
147
- type: "copilot-textarea"
148
- }
149
- };
150
- }
151
-
152
- export { BaseCopilotTextarea };
153
- //# sourceMappingURL=out.js.map
154
- //# sourceMappingURL=chunk-YICIML6J.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/base-copilot-textarea/base-copilot-textarea.tsx"],"names":["_a","value"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Descendant, Editor } from \"slate\";\nimport { Editable, Slate } from \"slate-react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { useAutosuggestions } from \"../../hooks/use-autosuggestions\";\nimport { useCopilotTextareaEditor } from \"../../hooks/use-copilot-textarea-editor\";\nimport {\n getFullEditorTextWithNewlines,\n getTextAroundCursor,\n} from \"../../lib/get-text-around-cursor\";\nimport { addAutocompletionsToEditor } from \"../../lib/slatejs-edits/add-autocompletions\";\nimport { clearAutocompletionsFromEditor } from \"../../lib/slatejs-edits/clear-autocompletions\";\nimport { replaceEditorText } from \"../../lib/slatejs-edits/replace-text\";\nimport {\n AutosuggestionsBareFunction,\n BaseAutosuggestionsConfig,\n defaultBaseAutosuggestionsConfig,\n} from \"../../types/base\";\nimport { AutosuggestionState } from \"../../types/base/autosuggestion-state\";\nimport { BaseCopilotTextareaProps } from \"../../types/base/base-copilot-textarea-props\";\nimport \"./base-copilot-textarea.css\";\nimport { makeRenderElementFunction } from \"./render-element\";\nimport { makeRenderPlaceholderFunction } from \"./render-placeholder\";\nimport { useAddBrandingCss } from \"./use-add-branding-css\";\n\nexport function BaseCopilotTextarea(\n props: BaseCopilotTextareaProps & {\n autosuggestionsFunction: AutosuggestionsBareFunction;\n }\n): JSX.Element {\n const autosuggestionsConfig: BaseAutosuggestionsConfig = {\n ...defaultBaseAutosuggestionsConfig,\n ...props.autosuggestionsConfig,\n };\n\n const valueOnInitialRender = useMemo(() => props.value ?? \"\", []);\n const [lastKnownFullEditorText, setLastKnownFullEditorText] =\n useState(valueOnInitialRender);\n\n const initialValue: Descendant[] = useMemo(() => {\n return [\n {\n type: \"paragraph\",\n children: [{ text: valueOnInitialRender }],\n },\n ];\n }, [valueOnInitialRender]);\n\n const editor = useCopilotTextareaEditor();\n\n const insertText = useCallback(\n (autosuggestion: AutosuggestionState) => {\n Editor.insertText(editor, autosuggestion.text, {\n at: autosuggestion.point,\n });\n },\n [editor]\n );\n\n const {\n currentAutocompleteSuggestion,\n onChangeHandler: onChangeHandlerForAutocomplete,\n onKeyDownHandler: onKeyDownHandlerForAutocomplete,\n } = useAutosuggestions(\n autosuggestionsConfig.debounceTime,\n autosuggestionsConfig.acceptAutosuggestionKey,\n props.autosuggestionsFunction,\n insertText,\n autosuggestionsConfig.disableWhenEmpty,\n autosuggestionsConfig.disabled\n );\n\n // sync autosuggestions state with the editor\n useEffect(() => {\n clearAutocompletionsFromEditor(editor);\n if (currentAutocompleteSuggestion) {\n addAutocompletionsToEditor(\n editor,\n currentAutocompleteSuggestion.text,\n currentAutocompleteSuggestion.point\n );\n }\n }, [currentAutocompleteSuggestion]);\n\n const suggestionStyleAugmented: React.CSSProperties = useMemo(() => {\n return {\n fontStyle: \"italic\",\n color: \"gray\",\n ...props.suggestionsStyle,\n };\n }, [props.suggestionsStyle]);\n\n useAddBrandingCss(suggestionStyleAugmented, props.disableBranding);\n\n const renderElementMemoized = useMemo(() => {\n return makeRenderElementFunction(suggestionStyleAugmented);\n }, [suggestionStyleAugmented]);\n\n const renderPlaceholderMemoized = useMemo(() => {\n // For some reason slateJS specifies a top value of 0, which makes for strange styling. We override this here.\n const placeholderStyleSlatejsOverrides: React.CSSProperties = {\n top: undefined,\n };\n\n const placeholderStyleAugmented: React.CSSProperties = {\n ...placeholderStyleSlatejsOverrides,\n ...props.placeholderStyle,\n };\n\n return makeRenderPlaceholderFunction(placeholderStyleAugmented);\n }, [props.placeholderStyle]);\n\n // update the editor text, but only when the value changes from outside the component\n useEffect(() => {\n if (props.value === lastKnownFullEditorText) {\n return;\n }\n\n setLastKnownFullEditorText(props.value ?? \"\");\n replaceEditorText(editor, props.value ?? \"\");\n }, [props.value]);\n\n // separate into TextareaHTMLAttributes<HTMLDivElement> and CopilotTextareaProps\n const {\n placeholderStyle,\n value,\n onValueChange,\n autosuggestionsConfig: autosuggestionsConfigFromProps,\n autosuggestionsFunction,\n className,\n onChange,\n onKeyDown,\n ...propsToForward\n } = props;\n\n const moddedClassName = (() => {\n const baseClassName = \"copilot-textarea\";\n const brandingClass = props.disableBranding\n ? \"no-branding\"\n : \"with-branding\";\n const defaultTailwindClassName = \"bg-white overflow-y-auto resize-y\";\n const mergedClassName = twMerge(defaultTailwindClassName, className ?? \"\");\n return `${baseClassName} ${brandingClass} ${mergedClassName}`;\n })();\n\n return (\n // Add the editable component inside the context.\n <Slate\n editor={editor}\n initialValue={initialValue}\n onChange={(value) => {\n const newEditorState = getTextAroundCursor(editor);\n\n const fullEditorText = newEditorState\n ? newEditorState.textBeforeCursor + newEditorState.textAfterCursor\n : getFullEditorTextWithNewlines(editor); // we don't double-parse the editor. When `newEditorState` is null, we didn't parse the editor yet.\n\n setLastKnownFullEditorText(fullEditorText);\n onChangeHandlerForAutocomplete(newEditorState);\n\n props.onValueChange?.(fullEditorText);\n props.onChange?.(makeSemiFakeReactTextAreaEvent(fullEditorText));\n }}\n >\n <Editable\n renderElement={renderElementMemoized}\n renderPlaceholder={renderPlaceholderMemoized}\n onKeyDown={(event) => {\n onKeyDownHandlerForAutocomplete(event); // forward the event for internal use\n props.onKeyDown?.(event); // forward the event for external use\n }}\n className={moddedClassName}\n {...propsToForward}\n />\n </Slate>\n );\n}\n\n// Consumers of <textarea> expect a `onChange: (React.ChangeEvent<HTMLTextAreaElement>) => void` event handler to be passed in.\n// This is *extremely* common, and we want to support it.\n//\n// We can't support the full functionality, but in 99% of cases, the consumer only cares about the `event.target.value` property --\n// that's how they get the new value of the textarea.\n//\n// So, the tradeoff we are making is minimizing compiler complaint, with a small chance of runtime error.\n// The alternative would be defining a different onChange entrypoint (we actually do have that in `onValueChange`),\n// And starting to explain subtleties to users the moment they try to use the component for the first time for very basic functionality.\n//\n// If this proves problematic, we can always revisit this decision.\nfunction makeSemiFakeReactTextAreaEvent(\n currentText: string\n): React.ChangeEvent<HTMLTextAreaElement> {\n return {\n target: {\n value: currentText,\n type: \"copilot-textarea\",\n },\n currentTarget: {\n value: currentText,\n type: \"copilot-textarea\",\n },\n } as React.ChangeEvent<HTMLTextAreaElement>;\n}\n"]}
@@ -1,25 +0,0 @@
1
- import { useMakeStandardAutosuggestionFunction } from './chunk-A3SFEHWZ.mjs';
2
- import { defaultAutosuggestionsConfig } from './chunk-EHQ5TN4R.mjs';
3
- import { BaseCopilotTextarea } from './chunk-YICIML6J.mjs';
4
- import { __spreadValues, __spreadProps } from './chunk-MRXNTQOX.mjs';
5
- import { jsx } from 'react/jsx-runtime';
6
-
7
- function CopilotTextarea(props) {
8
- const autosuggestionsConfig = __spreadValues(__spreadValues({}, defaultAutosuggestionsConfig), props.autosuggestionsConfig);
9
- const autosuggestionsFunction = useMakeStandardAutosuggestionFunction(
10
- autosuggestionsConfig.purposePrompt,
11
- autosuggestionsConfig.apiEndpoint,
12
- autosuggestionsConfig.makeSystemPrompt,
13
- autosuggestionsConfig.fewShotMessages,
14
- autosuggestionsConfig.externalContextCategories,
15
- autosuggestionsConfig.forwardedParams
16
- );
17
- return /* @__PURE__ */ jsx(BaseCopilotTextarea, __spreadProps(__spreadValues({}, props), {
18
- autosuggestionsConfig,
19
- autosuggestionsFunction
20
- }));
21
- }
22
-
23
- export { CopilotTextarea };
24
- //# sourceMappingURL=out.js.map
25
- //# sourceMappingURL=chunk-YTT5NE6B.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/copilot-textarea/copilot-textarea.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AA+BI;AAhBG,SAAS,gBAAgB,OAA0C;AACxE,QAAM,wBAA+C,kCAChD,+BACA,MAAM;AAGX,QAAM,0BAA0B;AAAA,IAC9B,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,EACxB;AAEA,SACE,oBAAC,sDACK,QADL;AAAA,IAEC;AAAA,IACA;AAAA,IACF;AAEJ","sourcesContent":["// This example is for an Editor with `ReactEditor` and `HistoryEditor`\nimport { useMakeStandardAutosuggestionFunction } from \"../../hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function\";\nimport { BaseCopilotTextareaProps } from \"../../types/base/base-copilot-textarea-props\";\nimport {\n AutosuggestionsConfig,\n defaultAutosuggestionsConfig,\n} from \"../../types/standard-autosuggestions\";\nimport { BaseCopilotTextarea } from \"../base-copilot-textarea/base-copilot-textarea\";\n\nexport interface CopilotTextareaProps extends BaseCopilotTextareaProps {\n autosuggestionsConfig: Partial<AutosuggestionsConfig> & {\n purposePrompt: string;\n };\n}\n\nexport function CopilotTextarea(props: CopilotTextareaProps): JSX.Element {\n const autosuggestionsConfig: AutosuggestionsConfig = {\n ...defaultAutosuggestionsConfig,\n ...props.autosuggestionsConfig,\n };\n\n const autosuggestionsFunction = useMakeStandardAutosuggestionFunction(\n autosuggestionsConfig.purposePrompt,\n autosuggestionsConfig.apiEndpoint,\n autosuggestionsConfig.makeSystemPrompt,\n autosuggestionsConfig.fewShotMessages,\n autosuggestionsConfig.externalContextCategories,\n autosuggestionsConfig.forwardedParams\n );\n\n return (\n <BaseCopilotTextarea\n {...props}\n autosuggestionsConfig={autosuggestionsConfig}\n autosuggestionsFunction={autosuggestionsFunction}\n />\n );\n}\n"]}
@@ -1,7 +0,0 @@
1
- export { useAutosuggestions } from '../chunk-E2UEE45I.mjs';
2
- import '../chunk-UW3ITU2Y.mjs';
3
- import '../chunk-KGKLUWKW.mjs';
4
- import '../chunk-NKW5OU2S.mjs';
5
- import '../chunk-MRXNTQOX.mjs';
6
- //# sourceMappingURL=out.js.map
7
- //# sourceMappingURL=use-autosuggestions.mjs.map
@@ -1,5 +0,0 @@
1
- export { useCopilotTextareaEditor } from '../chunk-6SYD77G6.mjs';
2
- import '../chunk-KCHYD3EB.mjs';
3
- import '../chunk-MRXNTQOX.mjs';
4
- //# sourceMappingURL=out.js.map
5
- //# sourceMappingURL=use-copilot-textarea-editor.mjs.map