@copilotkit/react-textarea 0.10.0 → 0.11.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.
@@ -1,178 +1,182 @@
1
1
 
2
- > @copilotkit/react-textarea@0.10.0 build /Users/ataibarkai/LocalGit/Recursively.ai/CopilotKit/CopilotKit/packages/react-textarea
2
+ > @copilotkit/react-textarea@0.11.0 build /home/runner/work/CopilotKit/CopilotKit/CopilotKit/packages/react-textarea
3
3
  > tsup --treeshake
4
4
 
5
- CLI Building entry: src/index.tsx, src/context/index.ts, src/components/index.ts, src/hooks/index.ts, src/hooks/use-autosuggestions.ts, src/hooks/use-copilot-textarea-editor.tsx, src/lib/debouncer.ts, src/lib/editor-to-text.ts, src/lib/get-text-around-cursor.ts, src/lib/utils.test.ts, src/lib/utils.ts, src/types/index.ts, src/components/base-copilot-textarea/base-copilot-textarea.tsx, src/components/base-copilot-textarea/render-element.tsx, src/components/base-copilot-textarea/render-placeholder.tsx, src/components/base-copilot-textarea/use-add-branding-css.tsx, src/components/copilot-textarea/copilot-textarea.tsx, src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx, src/lib/slatejs-edits/add-autocompletions.ts, src/lib/slatejs-edits/clear-autocompletions.ts, src/lib/slatejs-edits/replace-text.ts, src/lib/slatejs-edits/with-partial-history.ts, src/types/standard-autosuggestions/autosuggestions-config.tsx, src/types/standard-autosuggestions/index.ts, src/types/standard-autosuggestions/minimal-chat-gpt-message.tsx, src/types/base/autosuggestion-state.ts, src/types/base/autosuggestions-bare-function.ts, src/types/base/base-autosuggestions-config.tsx, src/types/base/custom-editor.tsx, src/types/base/editor-autocomplete-state.ts, src/types/base/index.ts
6
- CLI Using tsconfig: tsconfig.json
7
- CLI tsup v6.5.0
8
- CLI Using tsup config: /Users/ataibarkai/LocalGit/Recursively.ai/CopilotKit/CopilotKit/packages/react-textarea/tsup.config.ts
9
- CLI Target: es6
10
- CLI Cleaning output folder
11
- ESM Build start
5
+ CLI Building entry: src/index.tsx, src/components/index.ts, src/context/index.ts, src/hooks/index.ts, src/hooks/use-autosuggestions.ts, src/hooks/use-copilot-textarea-editor.tsx, src/lib/debouncer.ts, src/lib/editor-to-text.ts, src/lib/get-text-around-cursor.ts, src/lib/utils.test.ts, src/lib/utils.ts, src/types/index.ts, src/components/base-copilot-textarea/base-copilot-textarea.tsx, src/components/base-copilot-textarea/render-element.tsx, src/components/base-copilot-textarea/render-placeholder.tsx, src/components/base-copilot-textarea/use-add-branding-css.tsx, src/components/copilot-textarea/copilot-textarea.tsx, src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx, src/lib/slatejs-edits/add-autocompletions.ts, src/lib/slatejs-edits/clear-autocompletions.ts, src/lib/slatejs-edits/replace-text.ts, src/lib/slatejs-edits/with-partial-history.ts, src/types/base/autosuggestion-state.ts, src/types/base/autosuggestions-bare-function.ts, src/types/base/base-autosuggestions-config.tsx, src/types/base/base-copilot-textarea-props.tsx, src/types/base/custom-editor.tsx, src/types/base/editor-autocomplete-state.ts, src/types/base/index.ts, src/types/standard-autosuggestions/autosuggestions-config.tsx, src/types/standard-autosuggestions/index.ts, src/types/standard-autosuggestions/minimal-chat-gpt-message.tsx
6
+ CLI Using tsconfig: tsconfig.json
7
+ CLI tsup v6.5.0
8
+ CLI Using tsup config: /home/runner/work/CopilotKit/CopilotKit/CopilotKit/packages/react-textarea/tsup.config.ts
9
+ CLI Target: es6
10
+ CLI Cleaning output folder
11
+ ESM Build start
12
12
  Browserslist: caniuse-lite is outdated. Please run:
13
13
  npx update-browserslist-db@latest
14
14
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
15
- DTS Build start
15
+ DTS Build start
16
+ Generated an empty chunk: "base-copilot-textarea-props".
17
+ Generated an empty chunk: "custom-editor".
16
18
  Generated an empty chunk: "minimal-chat-gpt-message".
17
19
  Generated an empty chunk: "autosuggestion-state".
18
20
  Generated an empty chunk: "autosuggestions-bare-function".
19
- Generated an empty chunk: "custom-editor".
20
21
  Generated an empty chunk: "chunk-FD6FGKYY".
21
- Generated an empty chunk: "chunk-IU3WTXLQ".
22
22
  Generated an empty chunk: "chunk-MMVDU6DF".
23
23
  Generated an empty chunk: "chunk-AZQCUNBV".
24
24
  Generated an empty chunk: "chunk-WJHSY5T6".
25
+ Generated an empty chunk: "chunk-IU3WTXLQ".
25
26
  Generated an empty chunk: "chunk-H4VKQGVU".
26
- ESM dist/components/copilot-textarea/copilot-textarea.css 253.00 B
27
- ESM dist/components/base-copilot-textarea/base-copilot-textarea.css 258.00 B
28
- ESM dist/index.css 5.75 KB
29
- ESM dist/components/index.css 242.00 B
30
- ESM dist/components/copilot-textarea/copilot-textarea.css.map 432.00 B
31
- ESM dist/components/base-copilot-textarea/base-copilot-textarea.css.map 432.00 B
32
- ESM dist/index.css.map 12.37 KB
33
- ESM dist/components/index.css.map 429.00 B
34
- ESM dist/types/standard-autosuggestions/minimal-chat-gpt-message.mjs 86.00 B
35
- ESM dist/types/base/autosuggestion-state.mjs 82.00 B
36
- ESM dist/types/base/autosuggestions-bare-function.mjs 91.00 B
37
- ESM dist/lib/utils.test.mjs 200.00 B
38
- ESM dist/chunk-MMVDU6DF.mjs 76.00 B
39
- ESM dist/chunk-AZQCUNBV.mjs 76.00 B
40
- ESM dist/chunk-WJHSY5T6.mjs 76.00 B
41
- ESM dist/chunk-FD6FGKYY.mjs 76.00 B
42
- ESM dist/types/base/custom-editor.mjs 75.00 B
43
- ESM dist/chunk-IU3WTXLQ.mjs 76.00 B
44
- ESM dist/types/base/editor-autocomplete-state.mjs 227.00 B
45
- ESM dist/types/base/index.mjs 213.00 B
46
- ESM dist/components/copilot-textarea/copilot-textarea.mjs 837.00 B
47
- ESM dist/types/base/base-autosuggestions-config.mjs 200.00 B
48
- ESM dist/lib/slatejs-edits/add-autocompletions.mjs 186.00 B
49
- ESM dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs 220.00 B
50
- ESM dist/lib/slatejs-edits/clear-autocompletions.mjs 192.00 B
51
- ESM dist/lib/slatejs-edits/with-partial-history.mjs 198.00 B
52
- ESM dist/types/standard-autosuggestions/index.mjs 328.00 B
53
- ESM dist/lib/slatejs-edits/replace-text.mjs 170.00 B
54
- ESM dist/types/standard-autosuggestions/autosuggestions-config.mjs 310.00 B
55
- ESM dist/lib/utils.mjs 220.00 B
56
- ESM dist/lib/get-text-around-cursor.mjs 232.00 B
57
- ESM dist/components/base-copilot-textarea/base-copilot-textarea.mjs 706.00 B
58
- ESM dist/components/base-copilot-textarea/use-add-branding-css.mjs 178.00 B
59
- ESM dist/components/base-copilot-textarea/render-placeholder.mjs 188.00 B
60
- ESM dist/index.mjs 1.00 KB
61
- ESM dist/components/index.mjs 824.00 B
62
- ESM dist/chunk-NHLYAJCQ.mjs 1.06 KB
63
- ESM dist/components/base-copilot-textarea/render-element.mjs 180.00 B
64
- ESM dist/chunk-7KWRVIYV.mjs 314.00 B
65
- ESM dist/chunk-H4VKQGVU.mjs 76.00 B
66
- ESM dist/chunk-MRXNTQOX.mjs 1.92 KB
67
- ESM dist/chunk-4XYYSJ5C.mjs 527.00 B
68
- ESM dist/chunk-TSF4AJIK.mjs 716.00 B
69
- ESM dist/types/index.mjs 387.00 B
70
- ESM dist/chunk-A3SFEHWZ.mjs 2.09 KB
71
- ESM dist/chunk-OELUUJZY.mjs 625.00 B
72
- ESM dist/chunk-LNAIMEB2.mjs 1.09 KB
73
- ESM dist/hooks/use-autosuggestions.mjs 268.00 B
74
- ESM dist/context/index.mjs 98.00 B
75
- ESM dist/hooks/index.mjs 98.00 B
76
- ESM dist/chunk-THWPPG6M.mjs 1.40 KB
77
- ESM dist/chunk-CU2M5BIJ.mjs 5.05 KB
78
- ESM dist/chunk-6SYD77G6.mjs 2.01 KB
79
- ESM dist/chunk-UW3ITU2Y.mjs 496.00 B
80
- ESM dist/chunk-KCHYD3EB.mjs 3.08 KB
81
- ESM dist/chunk-KGKLUWKW.mjs 1.37 KB
82
- ESM dist/chunk-3UQM3NLM.mjs 1.76 KB
83
- ESM dist/hooks/use-copilot-textarea-editor.mjs 218.00 B
84
- ESM dist/lib/debouncer.mjs 153.00 B
85
- ESM dist/chunk-E2UEE45I.mjs 3.02 KB
86
- ESM dist/lib/editor-to-text.mjs 1.34 KB
87
- ESM dist/chunk-NKW5OU2S.mjs 959.00 B
88
- ESM dist/chunk-EHQ5TN4R.mjs 2.75 KB
89
- ESM dist/chunk-WJYQWL4I.mjs 595.00 B
90
- ESM dist/types/standard-autosuggestions/minimal-chat-gpt-message.mjs.map 51.00 B
91
- ESM dist/lib/utils.test.mjs.map 349.00 B
92
- ESM dist/types/base/autosuggestion-state.mjs.map 51.00 B
93
- ESM dist/chunk-MMVDU6DF.mjs.map 51.00 B
94
- ESM dist/types/base/custom-editor.mjs.map 51.00 B
95
- ESM dist/chunk-WJHSY5T6.mjs.map 51.00 B
96
- ESM dist/chunk-AZQCUNBV.mjs.map 51.00 B
97
- ESM dist/chunk-FD6FGKYY.mjs.map 51.00 B
98
- ESM dist/chunk-IU3WTXLQ.mjs.map 51.00 B
99
- ESM dist/components/copilot-textarea/copilot-textarea.mjs.map 51.00 B
100
- ESM dist/types/base/index.mjs.map 51.00 B
101
- ESM dist/lib/slatejs-edits/add-autocompletions.mjs.map 51.00 B
102
- ESM dist/types/base/autosuggestions-bare-function.mjs.map 51.00 B
103
- ESM dist/lib/slatejs-edits/with-partial-history.mjs.map 51.00 B
104
- ESM dist/lib/slatejs-edits/clear-autocompletions.mjs.map 51.00 B
105
- ESM dist/types/base/editor-autocomplete-state.mjs.map 51.00 B
106
- ESM dist/types/base/base-autosuggestions-config.mjs.map 51.00 B
107
- ESM dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs.map 51.00 B
108
- ESM dist/lib/get-text-around-cursor.mjs.map 51.00 B
109
- ESM dist/components/base-copilot-textarea/use-add-branding-css.mjs.map 51.00 B
110
- ESM dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map 51.00 B
111
- ESM dist/index.mjs.map 51.00 B
112
- ESM dist/lib/utils.mjs.map 51.00 B
113
- ESM dist/chunk-NHLYAJCQ.mjs.map 1.75 KB
114
- ESM dist/types/standard-autosuggestions/index.mjs.map 51.00 B
115
- ESM dist/types/standard-autosuggestions/autosuggestions-config.mjs.map 51.00 B
116
- ESM dist/lib/slatejs-edits/replace-text.mjs.map 51.00 B
117
- ESM dist/chunk-7KWRVIYV.mjs.map 623.00 B
118
- ESM dist/components/base-copilot-textarea/render-element.mjs.map 51.00 B
119
- ESM dist/components/base-copilot-textarea/render-placeholder.mjs.map 51.00 B
120
- ESM dist/chunk-H4VKQGVU.mjs.map 51.00 B
121
- ESM dist/chunk-TSF4AJIK.mjs.map 1.31 KB
122
- ESM dist/types/index.mjs.map 51.00 B
123
- ESM dist/chunk-4XYYSJ5C.mjs.map 921.00 B
124
- ESM dist/chunk-LNAIMEB2.mjs.map 1.73 KB
125
- ESM dist/hooks/use-autosuggestions.mjs.map 51.00 B
126
- ESM dist/chunk-OELUUJZY.mjs.map 957.00 B
127
- ESM dist/chunk-A3SFEHWZ.mjs.map 4.73 KB
128
- ESM dist/hooks/index.mjs.map 51.00 B
129
- ESM dist/chunk-THWPPG6M.mjs.map 2.24 KB
130
- ESM dist/context/index.mjs.map 51.00 B
131
- ESM dist/chunk-6SYD77G6.mjs.map 3.78 KB
132
- ESM dist/chunk-KGKLUWKW.mjs.map 2.45 KB
133
- ESM dist/chunk-KCHYD3EB.mjs.map 6.12 KB
134
- ESM dist/chunk-MRXNTQOX.mjs.map 71.00 B
135
- ESM dist/chunk-UW3ITU2Y.mjs.map 878.00 B
136
- ESM dist/components/index.mjs.map 51.00 B
137
- ESM dist/chunk-CU2M5BIJ.mjs.map 8.62 KB
138
- ESM dist/hooks/use-copilot-textarea-editor.mjs.map 51.00 B
139
- ESM dist/chunk-E2UEE45I.mjs.map 5.78 KB
140
- ESM dist/lib/debouncer.mjs.map 51.00 B
141
- ESM dist/chunk-3UQM3NLM.mjs.map 3.63 KB
142
- ESM dist/lib/editor-to-text.mjs.map 2.83 KB
143
- ESM dist/chunk-EHQ5TN4R.mjs.map 4.01 KB
144
- ESM dist/chunk-NKW5OU2S.mjs.map 1.60 KB
145
- ESM dist/chunk-WJYQWL4I.mjs.map 1.04 KB
146
- ESM ⚡️ Build success in 544ms
147
- DTS ⚡️ Build success in 1401ms
148
- DTS dist/index.d.ts 763.00 B
149
- DTS dist/components/base-copilot-textarea/base-copilot-textarea.d.ts 820.00 B
150
- DTS dist/components/copilot-textarea/copilot-textarea.d.ts 703.00 B
151
- DTS dist/types/base/base-autosuggestions-config.d.ts 355.00 B
152
- DTS dist/types/base/autosuggestions-bare-function.d.ts 162.00 B
153
- DTS dist/types/standard-autosuggestions/autosuggestions-config.d.ts 884.00 B
154
- DTS dist/types/standard-autosuggestions/minimal-chat-gpt-message.d.ts 129.00 B
155
- DTS dist/context/index.d.ts 1.00 B
156
- DTS dist/components/index.d.ts 480.00 B
157
- DTS dist/hooks/index.d.ts 1.00 B
158
- DTS dist/hooks/use-autosuggestions.d.ts 879.00 B
159
- DTS dist/types/base/autosuggestion-state.d.ts 143.00 B
160
- DTS dist/types/base/editor-autocomplete-state.d.ts 342.00 B
161
- DTS dist/hooks/use-copilot-textarea-editor.d.ts 223.00 B
162
- DTS dist/types/base/custom-editor.d.ts 801.00 B
163
- DTS dist/lib/debouncer.d.ts 372.00 B
164
- DTS dist/lib/editor-to-text.d.ts 243.00 B
165
- DTS dist/lib/get-text-around-cursor.d.ts 453.00 B
166
- DTS dist/lib/utils.test.d.ts 1.00 B
167
- DTS dist/lib/utils.d.ts 638.00 B
168
- DTS dist/types/index.d.ts 491.00 B
169
- DTS dist/components/base-copilot-textarea/render-element.d.ts 292.00 B
170
- DTS dist/components/base-copilot-textarea/render-placeholder.d.ts 321.00 B
171
- DTS dist/components/base-copilot-textarea/use-add-branding-css.d.ts 158.00 B
172
- DTS dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.d.ts 1.79 KB
173
- DTS dist/lib/slatejs-edits/add-autocompletions.d.ts 302.00 B
174
- DTS dist/lib/slatejs-edits/clear-autocompletions.d.ts 250.00 B
175
- DTS dist/lib/slatejs-edits/replace-text.d.ts 139.00 B
176
- DTS dist/lib/slatejs-edits/with-partial-history.d.ts 542.00 B
177
- DTS dist/types/standard-autosuggestions/index.d.ts 286.00 B
178
- DTS dist/types/base/index.d.ts 194.00 B
27
+ ESM dist/index.css 5.75 KB
28
+ ESM dist/components/index.css 242.00 B
29
+ ESM dist/components/copilot-textarea/copilot-textarea.css 253.00 B
30
+ ESM dist/components/base-copilot-textarea/base-copilot-textarea.css 258.00 B
31
+ ESM dist/index.css.map 12.37 KB
32
+ ESM dist/components/index.css.map 429.00 B
33
+ ESM dist/lib/utils.test.mjs 200.00 B
34
+ ESM dist/lib/slatejs-edits/add-autocompletions.mjs 186.00 B
35
+ ESM dist/types/index.mjs 387.00 B
36
+ ESM dist/context/index.mjs 98.00 B
37
+ ESM dist/hooks/index.mjs 98.00 B
38
+ ESM dist/chunk-FD6FGKYY.mjs 76.00 B
39
+ ESM dist/chunk-MMVDU6DF.mjs 76.00 B
40
+ ESM dist/chunk-AZQCUNBV.mjs 76.00 B
41
+ ESM dist/chunk-WJHSY5T6.mjs 76.00 B
42
+ ESM dist/chunk-7KWRVIYV.mjs 314.00 B
43
+ ESM dist/chunk-IU3WTXLQ.mjs 76.00 B
44
+ ESM dist/chunk-H4VKQGVU.mjs 76.00 B
45
+ ESM dist/chunk-MRXNTQOX.mjs 1.92 KB
46
+ ESM dist/components/copilot-textarea/copilot-textarea.mjs 837.00 B
47
+ ESM dist/lib/slatejs-edits/clear-autocompletions.mjs 192.00 B
48
+ ESM dist/lib/slatejs-edits/replace-text.mjs 170.00 B
49
+ ESM dist/lib/slatejs-edits/with-partial-history.mjs 198.00 B
50
+ ESM dist/lib/get-text-around-cursor.mjs 232.00 B
51
+ ESM dist/lib/utils.mjs 220.00 B
52
+ ESM dist/components/base-copilot-textarea/base-copilot-textarea.mjs 706.00 B
53
+ ESM dist/components/base-copilot-textarea/render-element.mjs 180.00 B
54
+ ESM dist/components/base-copilot-textarea/render-placeholder.mjs 188.00 B
55
+ ESM dist/components/base-copilot-textarea/use-add-branding-css.mjs 178.00 B
56
+ ESM dist/index.mjs 1.00 KB
57
+ ESM dist/components/index.mjs 824.00 B
58
+ ESM dist/chunk-YTT5NE6B.mjs 1.06 KB
59
+ ESM dist/chunk-A3SFEHWZ.mjs 2.09 KB
60
+ ESM dist/chunk-EHQ5TN4R.mjs 2.75 KB
61
+ ESM dist/chunk-YICIML6J.mjs 5.58 KB
62
+ ESM dist/chunk-WJYQWL4I.mjs 595.00 B
63
+ ESM dist/chunk-4XYYSJ5C.mjs 527.00 B
64
+ ESM dist/chunk-TSF4AJIK.mjs 716.00 B
65
+ ESM dist/chunk-3UQM3NLM.mjs 1.76 KB
66
+ ESM dist/chunk-LNAIMEB2.mjs 1.09 KB
67
+ ESM dist/chunk-OELUUJZY.mjs 625.00 B
68
+ ESM dist/chunk-THWPPG6M.mjs 1.40 KB
69
+ ESM dist/hooks/use-autosuggestions.mjs 268.00 B
70
+ ESM dist/chunk-E2UEE45I.mjs 3.02 KB
71
+ ESM dist/chunk-UW3ITU2Y.mjs 496.00 B
72
+ ESM dist/chunk-KGKLUWKW.mjs 1.37 KB
73
+ ESM dist/hooks/use-copilot-textarea-editor.mjs 218.00 B
74
+ ESM dist/chunk-6SYD77G6.mjs 2.01 KB
75
+ ESM dist/chunk-KCHYD3EB.mjs 3.08 KB
76
+ ESM dist/lib/debouncer.mjs 153.00 B
77
+ ESM dist/chunk-NKW5OU2S.mjs 959.00 B
78
+ ESM dist/lib/editor-to-text.mjs 1.34 KB
79
+ ESM dist/components/copilot-textarea/copilot-textarea.css.map 432.00 B
80
+ ESM dist/components/base-copilot-textarea/base-copilot-textarea.css.map 432.00 B
81
+ ESM dist/types/base/base-copilot-textarea-props.mjs 89.00 B
82
+ ESM dist/types/standard-autosuggestions/minimal-chat-gpt-message.mjs 86.00 B
83
+ ESM dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs 220.00 B
84
+ ESM dist/types/base/custom-editor.mjs 75.00 B
85
+ ESM dist/types/base/autosuggestion-state.mjs 82.00 B
86
+ ESM dist/types/base/autosuggestions-bare-function.mjs 91.00 B
87
+ ESM dist/types/base/base-autosuggestions-config.mjs 200.00 B
88
+ ESM dist/types/base/editor-autocomplete-state.mjs 227.00 B
89
+ ESM dist/types/base/index.mjs 213.00 B
90
+ ESM dist/types/standard-autosuggestions/autosuggestions-config.mjs 310.00 B
91
+ ESM dist/types/standard-autosuggestions/index.mjs 328.00 B
92
+ ESM dist/lib/utils.test.mjs.map 349.00 B
93
+ ESM dist/lib/slatejs-edits/add-autocompletions.mjs.map 51.00 B
94
+ ESM dist/types/index.mjs.map 51.00 B
95
+ ESM dist/context/index.mjs.map 51.00 B
96
+ ESM dist/hooks/index.mjs.map 51.00 B
97
+ ESM dist/chunk-FD6FGKYY.mjs.map 51.00 B
98
+ ESM dist/chunk-MMVDU6DF.mjs.map 51.00 B
99
+ ESM dist/chunk-AZQCUNBV.mjs.map 51.00 B
100
+ ESM dist/chunk-WJHSY5T6.mjs.map 51.00 B
101
+ ESM dist/chunk-7KWRVIYV.mjs.map 623.00 B
102
+ ESM dist/chunk-IU3WTXLQ.mjs.map 51.00 B
103
+ ESM dist/chunk-H4VKQGVU.mjs.map 51.00 B
104
+ ESM dist/chunk-MRXNTQOX.mjs.map 71.00 B
105
+ ESM dist/components/copilot-textarea/copilot-textarea.mjs.map 51.00 B
106
+ ESM dist/lib/slatejs-edits/clear-autocompletions.mjs.map 51.00 B
107
+ ESM dist/lib/slatejs-edits/replace-text.mjs.map 51.00 B
108
+ ESM dist/lib/slatejs-edits/with-partial-history.mjs.map 51.00 B
109
+ ESM dist/lib/get-text-around-cursor.mjs.map 51.00 B
110
+ ESM dist/lib/utils.mjs.map 51.00 B
111
+ ESM dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map 51.00 B
112
+ ESM dist/components/base-copilot-textarea/render-element.mjs.map 51.00 B
113
+ ESM dist/components/base-copilot-textarea/render-placeholder.mjs.map 51.00 B
114
+ ESM dist/components/base-copilot-textarea/use-add-branding-css.mjs.map 51.00 B
115
+ ESM dist/index.mjs.map 51.00 B
116
+ ESM dist/components/index.mjs.map 51.00 B
117
+ ESM dist/chunk-YTT5NE6B.mjs.map 1.81 KB
118
+ ESM dist/chunk-A3SFEHWZ.mjs.map 4.73 KB
119
+ ESM dist/chunk-EHQ5TN4R.mjs.map 4.01 KB
120
+ ESM dist/chunk-YICIML6J.mjs.map 10.01 KB
121
+ ESM dist/chunk-WJYQWL4I.mjs.map 1.04 KB
122
+ ESM dist/chunk-4XYYSJ5C.mjs.map 921.00 B
123
+ ESM dist/chunk-TSF4AJIK.mjs.map 1.31 KB
124
+ ESM dist/chunk-3UQM3NLM.mjs.map 3.63 KB
125
+ ESM dist/chunk-LNAIMEB2.mjs.map 1.73 KB
126
+ ESM dist/chunk-OELUUJZY.mjs.map 957.00 B
127
+ ESM dist/chunk-THWPPG6M.mjs.map 2.24 KB
128
+ ESM dist/hooks/use-autosuggestions.mjs.map 51.00 B
129
+ ESM dist/chunk-E2UEE45I.mjs.map 5.78 KB
130
+ ESM dist/chunk-UW3ITU2Y.mjs.map 878.00 B
131
+ ESM dist/chunk-KGKLUWKW.mjs.map 2.45 KB
132
+ ESM dist/hooks/use-copilot-textarea-editor.mjs.map 51.00 B
133
+ ESM dist/chunk-6SYD77G6.mjs.map 3.78 KB
134
+ ESM dist/chunk-KCHYD3EB.mjs.map 6.12 KB
135
+ ESM dist/lib/debouncer.mjs.map 51.00 B
136
+ ESM dist/chunk-NKW5OU2S.mjs.map 1.60 KB
137
+ ESM dist/lib/editor-to-text.mjs.map 2.83 KB
138
+ ESM dist/types/base/base-copilot-textarea-props.mjs.map 51.00 B
139
+ ESM dist/types/standard-autosuggestions/minimal-chat-gpt-message.mjs.map 51.00 B
140
+ ESM dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs.map 51.00 B
141
+ ESM dist/types/base/custom-editor.mjs.map 51.00 B
142
+ ESM dist/types/base/autosuggestion-state.mjs.map 51.00 B
143
+ ESM dist/types/base/autosuggestions-bare-function.mjs.map 51.00 B
144
+ ESM dist/types/base/base-autosuggestions-config.mjs.map 51.00 B
145
+ ESM dist/types/base/editor-autocomplete-state.mjs.map 51.00 B
146
+ ESM dist/types/base/index.mjs.map 51.00 B
147
+ ESM dist/types/standard-autosuggestions/autosuggestions-config.mjs.map 51.00 B
148
+ ESM dist/types/standard-autosuggestions/index.mjs.map 51.00 B
149
+ ESM ⚡️ Build success in 3609ms
150
+ DTS ⚡️ Build success in 6074ms
151
+ DTS dist/index.d.ts 825.00 B
152
+ DTS dist/components/base-copilot-textarea/base-copilot-textarea.d.ts 445.00 B
153
+ DTS dist/components/copilot-textarea/copilot-textarea.d.ts 641.00 B
154
+ DTS dist/types/base/base-autosuggestions-config.d.ts 355.00 B
155
+ DTS dist/types/base/autosuggestions-bare-function.d.ts 162.00 B
156
+ DTS dist/types/base/base-copilot-textarea-props.d.ts 1.89 KB
157
+ DTS dist/types/standard-autosuggestions/autosuggestions-config.d.ts 884.00 B
158
+ DTS dist/types/standard-autosuggestions/minimal-chat-gpt-message.d.ts 129.00 B
159
+ DTS dist/components/index.d.ts 509.00 B
160
+ DTS dist/context/index.d.ts 1.00 B
161
+ DTS dist/hooks/index.d.ts 1.00 B
162
+ DTS dist/hooks/use-autosuggestions.d.ts 879.00 B
163
+ DTS dist/types/base/autosuggestion-state.d.ts 143.00 B
164
+ DTS dist/types/base/editor-autocomplete-state.d.ts 342.00 B
165
+ DTS dist/hooks/use-copilot-textarea-editor.d.ts 223.00 B
166
+ DTS dist/types/base/custom-editor.d.ts 801.00 B
167
+ DTS dist/lib/debouncer.d.ts 372.00 B
168
+ DTS dist/lib/editor-to-text.d.ts 243.00 B
169
+ DTS dist/lib/get-text-around-cursor.d.ts 453.00 B
170
+ DTS dist/lib/utils.test.d.ts 1.00 B
171
+ DTS dist/lib/utils.d.ts 638.00 B
172
+ DTS dist/types/index.d.ts 589.00 B
173
+ DTS dist/components/base-copilot-textarea/render-element.d.ts 292.00 B
174
+ DTS dist/components/base-copilot-textarea/render-placeholder.d.ts 321.00 B
175
+ DTS dist/components/base-copilot-textarea/use-add-branding-css.d.ts 158.00 B
176
+ DTS dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.d.ts 1.79 KB
177
+ DTS dist/lib/slatejs-edits/add-autocompletions.d.ts 302.00 B
178
+ DTS dist/lib/slatejs-edits/clear-autocompletions.d.ts 250.00 B
179
+ DTS dist/lib/slatejs-edits/replace-text.d.ts 139.00 B
180
+ DTS dist/lib/slatejs-edits/with-partial-history.d.ts 542.00 B
181
+ DTS dist/types/base/index.d.ts 287.00 B
182
+ DTS dist/types/standard-autosuggestions/index.d.ts 286.00 B
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # ui
2
2
 
3
+ ## 0.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 3517bd5: CopilotTextarea supports standard onChange interface
8
+
3
9
  ## 0.10.0
4
10
 
5
11
  ### Minor Changes
@@ -92,14 +92,18 @@ function BaseCopilotTextarea(props) {
92
92
  onValueChange,
93
93
  autosuggestionsConfig: autosuggestionsConfigFromProps,
94
94
  autosuggestionsFunction,
95
- className
95
+ className,
96
+ onChange,
97
+ onKeyDown
96
98
  } = _a, propsToForward = __objRest(_a, [
97
99
  "placeholderStyle",
98
100
  "value",
99
101
  "onValueChange",
100
102
  "autosuggestionsConfig",
101
103
  "autosuggestionsFunction",
102
- "className"
104
+ "className",
105
+ "onChange",
106
+ "onKeyDown"
103
107
  ]);
104
108
  const moddedClassName = (() => {
105
109
  const baseClassName = "copilot-textarea";
@@ -112,22 +116,39 @@ function BaseCopilotTextarea(props) {
112
116
  editor,
113
117
  initialValue,
114
118
  onChange: (value2) => {
115
- var _a2;
119
+ var _a2, _b;
116
120
  const newEditorState = getTextAroundCursor(editor);
117
121
  const fullEditorText = newEditorState ? newEditorState.textBeforeCursor + newEditorState.textAfterCursor : getFullEditorTextWithNewlines(editor);
118
122
  setLastKnownFullEditorText(fullEditorText);
119
123
  onChangeHandlerForAutocomplete(newEditorState);
120
124
  (_a2 = props.onValueChange) == null ? void 0 : _a2.call(props, fullEditorText);
125
+ (_b = props.onChange) == null ? void 0 : _b.call(props, makeSemiFakeReactTextAreaEvent(fullEditorText));
121
126
  },
122
127
  children: /* @__PURE__ */ jsx(Editable, __spreadValues({
123
128
  renderElement: renderElementMemoized,
124
129
  renderPlaceholder: renderPlaceholderMemoized,
125
- onKeyDown: onKeyDownHandlerForAutocomplete,
130
+ onKeyDown: (event) => {
131
+ var _a2;
132
+ onKeyDownHandlerForAutocomplete(event);
133
+ (_a2 = props.onKeyDown) == null ? void 0 : _a2.call(props, event);
134
+ },
126
135
  className: moddedClassName
127
136
  }, propsToForward))
128
137
  });
129
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
+ }
130
151
 
131
152
  export { BaseCopilotTextarea };
132
153
  //# sourceMappingURL=out.js.map
133
- //# sourceMappingURL=chunk-CU2M5BIJ.mjs.map
154
+ //# sourceMappingURL=chunk-YICIML6J.mjs.map
@@ -0,0 +1 @@
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,6 +1,6 @@
1
1
  import { useMakeStandardAutosuggestionFunction } from './chunk-A3SFEHWZ.mjs';
2
2
  import { defaultAutosuggestionsConfig } from './chunk-EHQ5TN4R.mjs';
3
- import { BaseCopilotTextarea } from './chunk-CU2M5BIJ.mjs';
3
+ import { BaseCopilotTextarea } from './chunk-YICIML6J.mjs';
4
4
  import { __spreadValues, __spreadProps } from './chunk-MRXNTQOX.mjs';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
@@ -22,4 +22,4 @@ function CopilotTextarea(props) {
22
22
 
23
23
  export { CopilotTextarea };
24
24
  //# sourceMappingURL=out.js.map
25
- //# sourceMappingURL=chunk-NHLYAJCQ.mjs.map
25
+ //# sourceMappingURL=chunk-YTT5NE6B.mjs.map
@@ -0,0 +1 @@
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,19 +1,10 @@
1
- import { TextareaHTMLAttributes } from 'react';
2
- import { BaseAutosuggestionsConfig } from '../../types/base/base-autosuggestions-config.js';
3
1
  import { AutosuggestionsBareFunction } from '../../types/base/autosuggestions-bare-function.js';
2
+ import { BaseCopilotTextareaProps } from '../../types/base/base-copilot-textarea-props.js';
3
+ import 'react';
4
+ import '../../types/base/base-autosuggestions-config.js';
4
5
 
5
- interface BaseCopilotTextareaProps extends TextareaHTMLAttributes<HTMLDivElement> {
6
- disableBranding?: boolean;
7
- placeholderStyle?: React.CSSProperties;
8
- suggestionsStyle?: React.CSSProperties;
9
- value?: string;
10
- onValueChange?: (value: string) => void;
11
- autosuggestionsConfig: Partial<BaseAutosuggestionsConfig> & {
12
- purposePrompt: string;
13
- };
14
- }
15
6
  declare function BaseCopilotTextarea(props: BaseCopilotTextareaProps & {
16
7
  autosuggestionsFunction: AutosuggestionsBareFunction;
17
8
  }): JSX.Element;
18
9
 
19
- export { BaseCopilotTextarea, BaseCopilotTextareaProps };
10
+ export { BaseCopilotTextarea };
@@ -1,4 +1,4 @@
1
- export { BaseCopilotTextarea } from '../../chunk-CU2M5BIJ.mjs';
1
+ export { BaseCopilotTextarea } from '../../chunk-YICIML6J.mjs';
2
2
  import '../../chunk-WJYQWL4I.mjs';
3
3
  import '../../chunk-4XYYSJ5C.mjs';
4
4
  import '../../chunk-TSF4AJIK.mjs';
@@ -1,9 +1,8 @@
1
+ import { BaseCopilotTextareaProps } from '../../types/base/base-copilot-textarea-props.js';
1
2
  import { AutosuggestionsConfig } from '../../types/standard-autosuggestions/autosuggestions-config.js';
2
- import { BaseCopilotTextareaProps } from '../base-copilot-textarea/base-copilot-textarea.js';
3
+ import 'react';
3
4
  import '../../types/base/base-autosuggestions-config.js';
4
5
  import '../../types/standard-autosuggestions/minimal-chat-gpt-message.js';
5
- import 'react';
6
- import '../../types/base/autosuggestions-bare-function.js';
7
6
 
8
7
  interface CopilotTextareaProps extends BaseCopilotTextareaProps {
9
8
  autosuggestionsConfig: Partial<AutosuggestionsConfig> & {
@@ -1,8 +1,8 @@
1
- export { CopilotTextarea } from '../../chunk-NHLYAJCQ.mjs';
1
+ export { CopilotTextarea } from '../../chunk-YTT5NE6B.mjs';
2
2
  import '../../chunk-A3SFEHWZ.mjs';
3
3
  import '../../chunk-AZQCUNBV.mjs';
4
4
  import '../../chunk-EHQ5TN4R.mjs';
5
- import '../../chunk-CU2M5BIJ.mjs';
5
+ import '../../chunk-YICIML6J.mjs';
6
6
  import '../../chunk-WJYQWL4I.mjs';
7
7
  import '../../chunk-4XYYSJ5C.mjs';
8
8
  import '../../chunk-TSF4AJIK.mjs';
@@ -1,7 +1,8 @@
1
- export { BaseCopilotTextarea, BaseCopilotTextareaProps } from './base-copilot-textarea/base-copilot-textarea.js';
1
+ export { BaseCopilotTextarea } from './base-copilot-textarea/base-copilot-textarea.js';
2
2
  export { CopilotTextarea, CopilotTextareaProps } from './copilot-textarea/copilot-textarea.js';
3
+ import '../types/base/autosuggestions-bare-function.js';
4
+ import '../types/base/base-copilot-textarea-props.js';
3
5
  import 'react';
4
6
  import '../types/base/base-autosuggestions-config.js';
5
- import '../types/base/autosuggestions-bare-function.js';
6
7
  import '../types/standard-autosuggestions/autosuggestions-config.js';
7
8
  import '../types/standard-autosuggestions/minimal-chat-gpt-message.js';
@@ -1,9 +1,9 @@
1
1
  import '../chunk-MMVDU6DF.mjs';
2
- export { CopilotTextarea } from '../chunk-NHLYAJCQ.mjs';
2
+ export { CopilotTextarea } from '../chunk-YTT5NE6B.mjs';
3
3
  import '../chunk-A3SFEHWZ.mjs';
4
4
  import '../chunk-AZQCUNBV.mjs';
5
5
  import '../chunk-EHQ5TN4R.mjs';
6
- export { BaseCopilotTextarea } from '../chunk-CU2M5BIJ.mjs';
6
+ export { BaseCopilotTextarea } from '../chunk-YICIML6J.mjs';
7
7
  import '../chunk-WJYQWL4I.mjs';
8
8
  import '../chunk-4XYYSJ5C.mjs';
9
9
  import '../chunk-TSF4AJIK.mjs';
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- export { BaseCopilotTextarea, BaseCopilotTextareaProps } from './components/base-copilot-textarea/base-copilot-textarea.js';
1
+ export { BaseCopilotTextarea } from './components/base-copilot-textarea/base-copilot-textarea.js';
2
2
  export { CopilotTextarea, CopilotTextareaProps } from './components/copilot-textarea/copilot-textarea.js';
3
3
  export { BaseAutosuggestionsConfig, defaultBaseAutosuggestionsConfig } from './types/base/base-autosuggestions-config.js';
4
4
  export { AutosuggestionsBareFunction } from './types/base/autosuggestions-bare-function.js';
5
+ export { BaseCopilotTextareaProps } from './types/base/base-copilot-textarea-props.js';
5
6
  export { AutosuggestionsConfig, MakeSystemPrompt, defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from './types/standard-autosuggestions/autosuggestions-config.js';
6
7
  export { MinimalChatGPTMessage } from './types/standard-autosuggestions/minimal-chat-gpt-message.js';
7
8
  import 'react';
package/dist/index.mjs CHANGED
@@ -1,11 +1,10 @@
1
1
  import './chunk-FD6FGKYY.mjs';
2
- import './chunk-IU3WTXLQ.mjs';
3
2
  import './chunk-MMVDU6DF.mjs';
4
- export { CopilotTextarea } from './chunk-NHLYAJCQ.mjs';
3
+ export { CopilotTextarea } from './chunk-YTT5NE6B.mjs';
5
4
  import './chunk-A3SFEHWZ.mjs';
6
5
  import './chunk-AZQCUNBV.mjs';
7
6
  export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from './chunk-EHQ5TN4R.mjs';
8
- export { BaseCopilotTextarea } from './chunk-CU2M5BIJ.mjs';
7
+ export { BaseCopilotTextarea } from './chunk-YICIML6J.mjs';
9
8
  import './chunk-WJYQWL4I.mjs';
10
9
  import './chunk-4XYYSJ5C.mjs';
11
10
  import './chunk-TSF4AJIK.mjs';
@@ -15,6 +14,7 @@ export { defaultBaseAutosuggestionsConfig } from './chunk-7KWRVIYV.mjs';
15
14
  import './chunk-LNAIMEB2.mjs';
16
15
  import './chunk-OELUUJZY.mjs';
17
16
  import './chunk-THWPPG6M.mjs';
17
+ import './chunk-IU3WTXLQ.mjs';
18
18
  import './chunk-H4VKQGVU.mjs';
19
19
  import './chunk-E2UEE45I.mjs';
20
20
  import './chunk-UW3ITU2Y.mjs';
@@ -0,0 +1,38 @@
1
+ import { TextareaHTMLAttributes } from 'react';
2
+ import { BaseAutosuggestionsConfig } from './base-autosuggestions-config.js';
3
+
4
+ /**
5
+ * `BaseCopilotTextareaProps` defines the properties for the `BaseCopilotTextarea` component.
6
+ *
7
+ * @extends {Omit<TextareaHTMLAttributes<HTMLDivElement>, "onChange">}
8
+ *
9
+ * @property {boolean} [disableBranding=false] - Determines whether branding should be disabled. Default is `false`.
10
+ *
11
+ * @property {React.CSSProperties} [placeholderStyle] - Specifies the CSS styles to apply to the placeholder text.
12
+ *
13
+ * @property {React.CSSProperties} [suggestionsStyle] - Specifies the CSS styles to apply to the suggestions list.
14
+ *
15
+ * @property {string} [value] - The initial value of the textarea. Can be controlled via `onValueChange`.
16
+ *
17
+ * @property {(value: string) => void} [onValueChange] - Callback invoked when the value of the textarea changes.
18
+ *
19
+ * @property {(event: React.ChangeEvent<HTMLTextAreaElement>) => void} [onChange] - Callback invoked when a `change` event is triggered on the textarea element. The event only actually includes the `event.target.value` and `event.currentTarget.value` properties (all that is required in 99% of cases).
20
+ *
21
+ * @property {Partial<BaseAutosuggestionsConfig> & {
22
+ * purposePrompt: string;
23
+ * }} autosuggestionsConfig - Configuration settings for the autosuggestions feature.
24
+ * Includes a mandatory `purposePrompt` to guide the autosuggestions.
25
+ */
26
+ interface BaseCopilotTextareaProps extends Omit<TextareaHTMLAttributes<HTMLDivElement>, "onChange"> {
27
+ disableBranding?: boolean;
28
+ placeholderStyle?: React.CSSProperties;
29
+ suggestionsStyle?: React.CSSProperties;
30
+ value?: string;
31
+ onValueChange?: (value: string) => void;
32
+ onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;
33
+ autosuggestionsConfig: Partial<BaseAutosuggestionsConfig> & {
34
+ purposePrompt: string;
35
+ };
36
+ }
37
+
38
+ export { BaseCopilotTextareaProps };
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=out.js.map
3
+ //# sourceMappingURL=base-copilot-textarea-props.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1,2 +1,4 @@
1
1
  export { BaseAutosuggestionsConfig, defaultBaseAutosuggestionsConfig } from './base-autosuggestions-config.js';
2
2
  export { AutosuggestionsBareFunction } from './autosuggestions-bare-function.js';
3
+ export { BaseCopilotTextareaProps } from './base-copilot-textarea-props.js';
4
+ import 'react';
@@ -1,4 +1,6 @@
1
1
  export { BaseAutosuggestionsConfig, defaultBaseAutosuggestionsConfig } from './base/base-autosuggestions-config.js';
2
2
  export { AutosuggestionsBareFunction } from './base/autosuggestions-bare-function.js';
3
+ export { BaseCopilotTextareaProps } from './base/base-copilot-textarea-props.js';
3
4
  export { AutosuggestionsConfig, MakeSystemPrompt, defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from './standard-autosuggestions/autosuggestions-config.js';
4
5
  export { MinimalChatGPTMessage } from './standard-autosuggestions/minimal-chat-gpt-message.js';
6
+ import 'react';
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.10.0",
7
+ "version": "0.11.0",
8
8
  "sideEffects": [
9
9
  "**/*.css"
10
10
  ],
@@ -30,9 +30,9 @@
30
30
  "ts-jest": "^29.1.1",
31
31
  "tsup": "^6.1.3",
32
32
  "typescript": "^4.9.4",
33
+ "eslint-config-custom": "0.2.0",
33
34
  "tailwind-config": "0.1.0",
34
- "tsconfig": "0.3.0",
35
- "eslint-config-custom": "0.2.0"
35
+ "tsconfig": "0.3.0"
36
36
  },
37
37
  "dependencies": {
38
38
  "ai": "^2.1.22",
@@ -1,11 +1,4 @@
1
- import "./base-copilot-textarea.css";
2
- import {
3
- TextareaHTMLAttributes,
4
- useCallback,
5
- useEffect,
6
- useMemo,
7
- useState,
8
- } from "react";
1
+ import { useCallback, useEffect, useMemo, useState } from "react";
9
2
  import { Descendant, Editor } from "slate";
10
3
  import { Editable, Slate } from "slate-react";
11
4
  import { twMerge } from "tailwind-merge";
@@ -24,22 +17,12 @@ import {
24
17
  defaultBaseAutosuggestionsConfig,
25
18
  } from "../../types/base";
26
19
  import { AutosuggestionState } from "../../types/base/autosuggestion-state";
20
+ import { BaseCopilotTextareaProps } from "../../types/base/base-copilot-textarea-props";
21
+ import "./base-copilot-textarea.css";
27
22
  import { makeRenderElementFunction } from "./render-element";
28
23
  import { makeRenderPlaceholderFunction } from "./render-placeholder";
29
24
  import { useAddBrandingCss } from "./use-add-branding-css";
30
25
 
31
- export interface BaseCopilotTextareaProps
32
- extends TextareaHTMLAttributes<HTMLDivElement> {
33
- disableBranding?: boolean;
34
- placeholderStyle?: React.CSSProperties;
35
- suggestionsStyle?: React.CSSProperties;
36
- value?: string;
37
- onValueChange?: (value: string) => void;
38
- autosuggestionsConfig: Partial<BaseAutosuggestionsConfig> & {
39
- purposePrompt: string;
40
- };
41
- }
42
-
43
26
  export function BaseCopilotTextarea(
44
27
  props: BaseCopilotTextareaProps & {
45
28
  autosuggestionsFunction: AutosuggestionsBareFunction;
@@ -145,6 +128,8 @@ export function BaseCopilotTextarea(
145
128
  autosuggestionsConfig: autosuggestionsConfigFromProps,
146
129
  autosuggestionsFunction,
147
130
  className,
131
+ onChange,
132
+ onKeyDown,
148
133
  ...propsToForward
149
134
  } = props;
150
135
 
@@ -172,16 +157,47 @@ export function BaseCopilotTextarea(
172
157
 
173
158
  setLastKnownFullEditorText(fullEditorText);
174
159
  onChangeHandlerForAutocomplete(newEditorState);
160
+
175
161
  props.onValueChange?.(fullEditorText);
162
+ props.onChange?.(makeSemiFakeReactTextAreaEvent(fullEditorText));
176
163
  }}
177
164
  >
178
165
  <Editable
179
166
  renderElement={renderElementMemoized}
180
167
  renderPlaceholder={renderPlaceholderMemoized}
181
- onKeyDown={onKeyDownHandlerForAutocomplete}
168
+ onKeyDown={(event) => {
169
+ onKeyDownHandlerForAutocomplete(event); // forward the event for internal use
170
+ props.onKeyDown?.(event); // forward the event for external use
171
+ }}
182
172
  className={moddedClassName}
183
173
  {...propsToForward}
184
174
  />
185
175
  </Slate>
186
176
  );
187
177
  }
178
+
179
+ // Consumers of <textarea> expect a `onChange: (React.ChangeEvent<HTMLTextAreaElement>) => void` event handler to be passed in.
180
+ // This is *extremely* common, and we want to support it.
181
+ //
182
+ // We can't support the full functionality, but in 99% of cases, the consumer only cares about the `event.target.value` property --
183
+ // that's how they get the new value of the textarea.
184
+ //
185
+ // So, the tradeoff we are making is minimizing compiler complaint, with a small chance of runtime error.
186
+ // The alternative would be defining a different onChange entrypoint (we actually do have that in `onValueChange`),
187
+ // And starting to explain subtleties to users the moment they try to use the component for the first time for very basic functionality.
188
+ //
189
+ // If this proves problematic, we can always revisit this decision.
190
+ function makeSemiFakeReactTextAreaEvent(
191
+ currentText: string
192
+ ): React.ChangeEvent<HTMLTextAreaElement> {
193
+ return {
194
+ target: {
195
+ value: currentText,
196
+ type: "copilot-textarea",
197
+ },
198
+ currentTarget: {
199
+ value: currentText,
200
+ type: "copilot-textarea",
201
+ },
202
+ } as React.ChangeEvent<HTMLTextAreaElement>;
203
+ }
@@ -1,13 +1,11 @@
1
1
  // This example is for an Editor with `ReactEditor` and `HistoryEditor`
2
2
  import { useMakeStandardAutosuggestionFunction } from "../../hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function";
3
+ import { BaseCopilotTextareaProps } from "../../types/base/base-copilot-textarea-props";
3
4
  import {
4
5
  AutosuggestionsConfig,
5
6
  defaultAutosuggestionsConfig,
6
7
  } from "../../types/standard-autosuggestions";
7
- import {
8
- BaseCopilotTextarea,
9
- BaseCopilotTextareaProps,
10
- } from "../base-copilot-textarea/base-copilot-textarea";
8
+ import { BaseCopilotTextarea } from "../base-copilot-textarea/base-copilot-textarea";
11
9
 
12
10
  export interface CopilotTextareaProps extends BaseCopilotTextareaProps {
13
11
  autosuggestionsConfig: Partial<AutosuggestionsConfig> & {
@@ -1,5 +1,4 @@
1
1
  export { BaseCopilotTextarea } from "./base-copilot-textarea/base-copilot-textarea";
2
- export type { BaseCopilotTextareaProps } from "./base-copilot-textarea/base-copilot-textarea";
3
2
 
4
3
  export { CopilotTextarea } from "./copilot-textarea/copilot-textarea";
5
4
  export type { CopilotTextareaProps } from "./copilot-textarea/copilot-textarea";
@@ -0,0 +1,37 @@
1
+ import { TextareaHTMLAttributes } from "react";
2
+ import { BaseAutosuggestionsConfig } from ".";
3
+
4
+ /**
5
+ * `BaseCopilotTextareaProps` defines the properties for the `BaseCopilotTextarea` component.
6
+ *
7
+ * @extends {Omit<TextareaHTMLAttributes<HTMLDivElement>, "onChange">}
8
+ *
9
+ * @property {boolean} [disableBranding=false] - Determines whether branding should be disabled. Default is `false`.
10
+ *
11
+ * @property {React.CSSProperties} [placeholderStyle] - Specifies the CSS styles to apply to the placeholder text.
12
+ *
13
+ * @property {React.CSSProperties} [suggestionsStyle] - Specifies the CSS styles to apply to the suggestions list.
14
+ *
15
+ * @property {string} [value] - The initial value of the textarea. Can be controlled via `onValueChange`.
16
+ *
17
+ * @property {(value: string) => void} [onValueChange] - Callback invoked when the value of the textarea changes.
18
+ *
19
+ * @property {(event: React.ChangeEvent<HTMLTextAreaElement>) => void} [onChange] - Callback invoked when a `change` event is triggered on the textarea element. The event only actually includes the `event.target.value` and `event.currentTarget.value` properties (all that is required in 99% of cases).
20
+ *
21
+ * @property {Partial<BaseAutosuggestionsConfig> & {
22
+ * purposePrompt: string;
23
+ * }} autosuggestionsConfig - Configuration settings for the autosuggestions feature.
24
+ * Includes a mandatory `purposePrompt` to guide the autosuggestions.
25
+ */
26
+ export interface BaseCopilotTextareaProps
27
+ extends Omit<TextareaHTMLAttributes<HTMLDivElement>, "onChange"> {
28
+ disableBranding?: boolean;
29
+ placeholderStyle?: React.CSSProperties;
30
+ suggestionsStyle?: React.CSSProperties;
31
+ value?: string;
32
+ onValueChange?: (value: string) => void;
33
+ onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;
34
+ autosuggestionsConfig: Partial<BaseAutosuggestionsConfig> & {
35
+ purposePrompt: string;
36
+ };
37
+ }
@@ -1,4 +1,6 @@
1
1
  export { defaultBaseAutosuggestionsConfig } from "./base-autosuggestions-config";
2
2
 
3
- export type { BaseAutosuggestionsConfig } from "./base-autosuggestions-config";
4
3
  export type { AutosuggestionsBareFunction } from "./autosuggestions-bare-function";
4
+ export type { BaseAutosuggestionsConfig } from "./base-autosuggestions-config";
5
+
6
+ export type { BaseCopilotTextareaProps } from "./base-copilot-textarea-props";
@@ -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 \"./base-copilot-textarea.css\";\nimport {\n TextareaHTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} 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 { makeRenderElementFunction } from \"./render-element\";\nimport { makeRenderPlaceholderFunction } from \"./render-placeholder\";\nimport { useAddBrandingCss } from \"./use-add-branding-css\";\n\nexport interface BaseCopilotTextareaProps\n extends TextareaHTMLAttributes<HTMLDivElement> {\n disableBranding?: boolean;\n placeholderStyle?: React.CSSProperties;\n suggestionsStyle?: React.CSSProperties;\n value?: string;\n onValueChange?: (value: string) => void;\n autosuggestionsConfig: Partial<BaseAutosuggestionsConfig> & {\n purposePrompt: string;\n };\n}\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 ...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 props.onValueChange?.(fullEditorText);\n }}\n >\n <Editable\n renderElement={renderElementMemoized}\n renderPlaceholder={renderPlaceholderMemoized}\n onKeyDown={onKeyDownHandlerForAutocomplete}\n className={moddedClassName}\n {...propsToForward}\n />\n </Slate>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/copilot-textarea/copilot-textarea.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAiCI;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 {\n AutosuggestionsConfig,\n defaultAutosuggestionsConfig,\n} from \"../../types/standard-autosuggestions\";\nimport {\n BaseCopilotTextarea,\n BaseCopilotTextareaProps,\n} 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"]}