@copilotkit/react-textarea 0.9.0 → 0.10.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.
- package/.turbo/turbo-build.log +85 -85
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-6LKDH2UJ.mjs → chunk-7KWRVIYV.mjs} +3 -2
- package/dist/chunk-7KWRVIYV.mjs.map +1 -0
- package/dist/{chunk-4EA7I44O.mjs → chunk-CU2M5BIJ.mjs} +6 -5
- package/dist/chunk-CU2M5BIJ.mjs.map +1 -0
- package/dist/{chunk-24IOWJS4.mjs → chunk-E2UEE45I.mjs} +11 -3
- package/dist/chunk-E2UEE45I.mjs.map +1 -0
- package/dist/{chunk-ZPACRCJ6.mjs → chunk-EHQ5TN4R.mjs} +2 -2
- package/dist/{chunk-ROH375UB.mjs → chunk-NHLYAJCQ.mjs} +3 -3
- package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +4 -4
- package/dist/components/copilot-textarea/copilot-textarea.mjs +6 -6
- package/dist/components/index.mjs +6 -6
- package/dist/hooks/use-autosuggestions.d.ts +1 -1
- package/dist/hooks/use-autosuggestions.mjs +1 -1
- package/dist/index.mjs +7 -7
- package/dist/types/base/base-autosuggestions-config.d.ts +1 -0
- package/dist/types/base/base-autosuggestions-config.mjs +1 -1
- package/dist/types/base/index.mjs +1 -1
- package/dist/types/index.mjs +2 -2
- package/dist/types/standard-autosuggestions/autosuggestions-config.mjs +2 -2
- package/dist/types/standard-autosuggestions/index.mjs +2 -2
- package/package.json +3 -3
- package/src/components/base-copilot-textarea/base-copilot-textarea.tsx +2 -1
- package/src/hooks/use-autosuggestions.ts +14 -2
- package/src/types/base/base-autosuggestions-config.tsx +2 -0
- package/dist/chunk-24IOWJS4.mjs.map +0 -1
- package/dist/chunk-4EA7I44O.mjs.map +0 -1
- package/dist/chunk-6LKDH2UJ.mjs.map +0 -1
- /package/dist/{chunk-ZPACRCJ6.mjs.map → chunk-EHQ5TN4R.mjs.map} +0 -0
- /package/dist/{chunk-ROH375UB.mjs.map → chunk-NHLYAJCQ.mjs.map} +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @copilotkit/react-textarea@0.
|
|
2
|
+
> @copilotkit/react-textarea@0.10.0 build /Users/ataibarkai/LocalGit/Recursively.ai/CopilotKit/CopilotKit/packages/react-textarea
|
|
3
3
|
> tsup --treeshake
|
|
4
4
|
|
|
5
|
-
CLI Building entry: src/index.tsx, src/
|
|
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
6
|
CLI Using tsconfig: tsconfig.json
|
|
7
7
|
CLI tsup v6.5.0
|
|
8
8
|
CLI Using tsup config: /Users/ataibarkai/LocalGit/Recursively.ai/CopilotKit/CopilotKit/packages/react-textarea/tsup.config.ts
|
|
@@ -13,149 +13,149 @@ 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
15
|
DTS Build start
|
|
16
|
-
Generated an empty chunk: "custom-editor".
|
|
17
16
|
Generated an empty chunk: "minimal-chat-gpt-message".
|
|
18
17
|
Generated an empty chunk: "autosuggestion-state".
|
|
19
18
|
Generated an empty chunk: "autosuggestions-bare-function".
|
|
19
|
+
Generated an empty chunk: "custom-editor".
|
|
20
20
|
Generated an empty chunk: "chunk-FD6FGKYY".
|
|
21
|
+
Generated an empty chunk: "chunk-IU3WTXLQ".
|
|
21
22
|
Generated an empty chunk: "chunk-MMVDU6DF".
|
|
22
23
|
Generated an empty chunk: "chunk-AZQCUNBV".
|
|
23
24
|
Generated an empty chunk: "chunk-WJHSY5T6".
|
|
24
|
-
Generated an empty chunk: "chunk-IU3WTXLQ".
|
|
25
25
|
Generated an empty chunk: "chunk-H4VKQGVU".
|
|
26
|
-
ESM dist/index.css 5.75 KB
|
|
27
|
-
ESM dist/components/index.css 242.00 B
|
|
28
26
|
ESM dist/components/copilot-textarea/copilot-textarea.css 253.00 B
|
|
29
27
|
ESM dist/components/base-copilot-textarea/base-copilot-textarea.css 258.00 B
|
|
30
|
-
ESM dist/index.css.
|
|
28
|
+
ESM dist/index.css 5.75 KB
|
|
29
|
+
ESM dist/components/index.css 242.00 B
|
|
31
30
|
ESM dist/components/copilot-textarea/copilot-textarea.css.map 432.00 B
|
|
32
|
-
ESM dist/components/index.css.map 429.00 B
|
|
33
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
34
|
ESM dist/types/standard-autosuggestions/minimal-chat-gpt-message.mjs 86.00 B
|
|
35
|
-
ESM dist/types/base/autosuggestions-bare-function.mjs 91.00 B
|
|
36
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
|
|
37
38
|
ESM dist/chunk-MMVDU6DF.mjs 76.00 B
|
|
38
|
-
ESM dist/chunk-
|
|
39
|
+
ESM dist/chunk-AZQCUNBV.mjs 76.00 B
|
|
39
40
|
ESM dist/chunk-WJHSY5T6.mjs 76.00 B
|
|
40
|
-
ESM dist/chunk-
|
|
41
|
-
ESM dist/
|
|
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
|
|
42
44
|
ESM dist/types/base/editor-autocomplete-state.mjs 227.00 B
|
|
43
45
|
ESM dist/types/base/index.mjs 213.00 B
|
|
44
|
-
ESM dist/components/
|
|
45
|
-
ESM dist/types/standard-autosuggestions/index.mjs 328.00 B
|
|
46
|
+
ESM dist/components/copilot-textarea/copilot-textarea.mjs 837.00 B
|
|
46
47
|
ESM dist/types/base/base-autosuggestions-config.mjs 200.00 B
|
|
47
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
|
|
48
50
|
ESM dist/lib/slatejs-edits/clear-autocompletions.mjs 192.00 B
|
|
49
|
-
ESM dist/
|
|
50
|
-
ESM dist/
|
|
51
|
-
ESM dist/types/base/custom-editor.mjs 75.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
|
|
52
53
|
ESM dist/lib/slatejs-edits/replace-text.mjs 170.00 B
|
|
53
54
|
ESM dist/types/standard-autosuggestions/autosuggestions-config.mjs 310.00 B
|
|
54
|
-
ESM dist/
|
|
55
|
-
ESM dist/chunk-AZQCUNBV.mjs 76.00 B
|
|
55
|
+
ESM dist/lib/utils.mjs 220.00 B
|
|
56
56
|
ESM dist/lib/get-text-around-cursor.mjs 232.00 B
|
|
57
57
|
ESM dist/components/base-copilot-textarea/base-copilot-textarea.mjs 706.00 B
|
|
58
|
-
ESM dist/
|
|
58
|
+
ESM dist/components/base-copilot-textarea/use-add-branding-css.mjs 178.00 B
|
|
59
59
|
ESM dist/components/base-copilot-textarea/render-placeholder.mjs 188.00 B
|
|
60
|
-
ESM dist/chunk-IU3WTXLQ.mjs 76.00 B
|
|
61
|
-
ESM dist/chunk-A3SFEHWZ.mjs 2.09 KB
|
|
62
|
-
ESM dist/components/index.mjs 824.00 B
|
|
63
|
-
ESM dist/chunk-ROH375UB.mjs 1.06 KB
|
|
64
|
-
ESM dist/chunk-ZPACRCJ6.mjs 2.75 KB
|
|
65
60
|
ESM dist/index.mjs 1.00 KB
|
|
66
|
-
ESM dist/
|
|
67
|
-
ESM dist/chunk-
|
|
68
|
-
ESM dist/
|
|
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
|
|
69
67
|
ESM dist/chunk-4XYYSJ5C.mjs 527.00 B
|
|
70
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
71
|
ESM dist/chunk-OELUUJZY.mjs 625.00 B
|
|
72
72
|
ESM dist/chunk-LNAIMEB2.mjs 1.09 KB
|
|
73
|
-
ESM dist/lib/slatejs-edits/with-partial-history.mjs 198.00 B
|
|
74
|
-
ESM dist/hooks/index.mjs 98.00 B
|
|
75
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
|
|
76
81
|
ESM dist/chunk-KGKLUWKW.mjs 1.37 KB
|
|
77
|
-
ESM dist/components/base-copilot-textarea/render-element.mjs 180.00 B
|
|
78
|
-
ESM dist/chunk-24IOWJS4.mjs 2.93 KB
|
|
79
82
|
ESM dist/chunk-3UQM3NLM.mjs 1.76 KB
|
|
83
|
+
ESM dist/hooks/use-copilot-textarea-editor.mjs 218.00 B
|
|
80
84
|
ESM dist/lib/debouncer.mjs 153.00 B
|
|
85
|
+
ESM dist/chunk-E2UEE45I.mjs 3.02 KB
|
|
81
86
|
ESM dist/lib/editor-to-text.mjs 1.34 KB
|
|
82
|
-
ESM dist/lib/utils.mjs 220.00 B
|
|
83
|
-
ESM dist/hooks/use-copilot-textarea-editor.mjs 218.00 B
|
|
84
|
-
ESM dist/chunk-KCHYD3EB.mjs 3.08 KB
|
|
85
87
|
ESM dist/chunk-NKW5OU2S.mjs 959.00 B
|
|
86
|
-
ESM dist/chunk-
|
|
87
|
-
ESM dist/chunk-
|
|
88
|
-
ESM dist/chunk-6SYD77G6.mjs 2.01 KB
|
|
89
|
-
ESM dist/context/index.mjs 98.00 B
|
|
90
|
-
ESM dist/chunk-FD6FGKYY.mjs.map 51.00 B
|
|
91
|
-
ESM dist/chunk-MMVDU6DF.mjs.map 51.00 B
|
|
92
|
-
ESM dist/chunk-WJHSY5T6.mjs.map 51.00 B
|
|
93
|
-
ESM dist/types/base/autosuggestion-state.mjs.map 51.00 B
|
|
94
|
-
ESM dist/types/base/autosuggestions-bare-function.mjs.map 51.00 B
|
|
88
|
+
ESM dist/chunk-EHQ5TN4R.mjs 2.75 KB
|
|
89
|
+
ESM dist/chunk-WJYQWL4I.mjs 595.00 B
|
|
95
90
|
ESM dist/types/standard-autosuggestions/minimal-chat-gpt-message.mjs.map 51.00 B
|
|
96
|
-
ESM dist/chunk-MRXNTQOX.mjs.map 71.00 B
|
|
97
|
-
ESM dist/types/standard-autosuggestions/index.mjs.map 51.00 B
|
|
98
|
-
ESM dist/lib/slatejs-edits/add-autocompletions.mjs.map 51.00 B
|
|
99
|
-
ESM dist/components/base-copilot-textarea/use-add-branding-css.mjs.map 51.00 B
|
|
100
|
-
ESM dist/types/base/index.mjs.map 51.00 B
|
|
101
91
|
ESM dist/lib/utils.test.mjs.map 349.00 B
|
|
102
|
-
ESM dist/
|
|
103
|
-
ESM dist/
|
|
104
|
-
ESM dist/lib/slatejs-edits/clear-autocompletions.mjs.map 51.00 B
|
|
92
|
+
ESM dist/types/base/autosuggestion-state.mjs.map 51.00 B
|
|
93
|
+
ESM dist/chunk-MMVDU6DF.mjs.map 51.00 B
|
|
105
94
|
ESM dist/types/base/custom-editor.mjs.map 51.00 B
|
|
95
|
+
ESM dist/chunk-WJHSY5T6.mjs.map 51.00 B
|
|
106
96
|
ESM dist/chunk-AZQCUNBV.mjs.map 51.00 B
|
|
107
|
-
ESM dist/
|
|
97
|
+
ESM dist/chunk-FD6FGKYY.mjs.map 51.00 B
|
|
98
|
+
ESM dist/chunk-IU3WTXLQ.mjs.map 51.00 B
|
|
108
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
|
|
109
105
|
ESM dist/types/base/editor-autocomplete-state.mjs.map 51.00 B
|
|
110
|
-
ESM dist/
|
|
111
|
-
ESM dist/types/index.mjs.map 51.00 B
|
|
112
|
-
ESM dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map 51.00 B
|
|
113
|
-
ESM dist/components/base-copilot-textarea/render-placeholder.mjs.map 51.00 B
|
|
114
|
-
ESM dist/chunk-A3SFEHWZ.mjs.map 4.73 KB
|
|
115
|
-
ESM dist/components/index.mjs.map 51.00 B
|
|
116
|
-
ESM dist/chunk-ZPACRCJ6.mjs.map 4.01 KB
|
|
106
|
+
ESM dist/types/base/base-autosuggestions-config.mjs.map 51.00 B
|
|
117
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
|
|
118
111
|
ESM dist/index.mjs.map 51.00 B
|
|
119
|
-
ESM dist/
|
|
120
|
-
ESM dist/chunk-
|
|
121
|
-
ESM dist/
|
|
122
|
-
ESM dist/
|
|
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
|
|
123
121
|
ESM dist/chunk-TSF4AJIK.mjs.map 1.31 KB
|
|
124
|
-
ESM dist/
|
|
125
|
-
ESM dist/
|
|
122
|
+
ESM dist/types/index.mjs.map 51.00 B
|
|
123
|
+
ESM dist/chunk-4XYYSJ5C.mjs.map 921.00 B
|
|
126
124
|
ESM dist/chunk-LNAIMEB2.mjs.map 1.73 KB
|
|
127
125
|
ESM dist/hooks/use-autosuggestions.mjs.map 51.00 B
|
|
128
|
-
ESM dist/lib/get-text-around-cursor.mjs.map 51.00 B
|
|
129
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
|
|
130
132
|
ESM dist/chunk-KGKLUWKW.mjs.map 2.45 KB
|
|
131
|
-
ESM dist/chunk-H4VKQGVU.mjs.map 51.00 B
|
|
132
|
-
ESM dist/lib/editor-to-text.mjs.map 2.83 KB
|
|
133
|
-
ESM dist/chunk-6LKDH2UJ.mjs.map 566.00 B
|
|
134
|
-
ESM dist/chunk-3UQM3NLM.mjs.map 3.63 KB
|
|
135
|
-
ESM dist/lib/utils.mjs.map 51.00 B
|
|
136
133
|
ESM dist/chunk-KCHYD3EB.mjs.map 6.12 KB
|
|
137
|
-
ESM dist/chunk-
|
|
138
|
-
ESM dist/chunk-NKW5OU2S.mjs.map 1.60 KB
|
|
134
|
+
ESM dist/chunk-MRXNTQOX.mjs.map 71.00 B
|
|
139
135
|
ESM dist/chunk-UW3ITU2Y.mjs.map 878.00 B
|
|
140
|
-
ESM dist/
|
|
141
|
-
ESM dist/chunk-
|
|
142
|
-
ESM dist/components/base-copilot-textarea/render-element.mjs.map 51.00 B
|
|
143
|
-
ESM dist/chunk-THWPPG6M.mjs.map 2.24 KB
|
|
144
|
-
ESM dist/context/index.mjs.map 51.00 B
|
|
136
|
+
ESM dist/components/index.mjs.map 51.00 B
|
|
137
|
+
ESM dist/chunk-CU2M5BIJ.mjs.map 8.62 KB
|
|
145
138
|
ESM dist/hooks/use-copilot-textarea-editor.mjs.map 51.00 B
|
|
146
|
-
ESM
|
|
147
|
-
|
|
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
148
|
DTS dist/index.d.ts 763.00 B
|
|
149
149
|
DTS dist/components/base-copilot-textarea/base-copilot-textarea.d.ts 820.00 B
|
|
150
150
|
DTS dist/components/copilot-textarea/copilot-textarea.d.ts 703.00 B
|
|
151
|
-
DTS dist/types/base/base-autosuggestions-config.d.ts
|
|
151
|
+
DTS dist/types/base/base-autosuggestions-config.d.ts 355.00 B
|
|
152
152
|
DTS dist/types/base/autosuggestions-bare-function.d.ts 162.00 B
|
|
153
153
|
DTS dist/types/standard-autosuggestions/autosuggestions-config.d.ts 884.00 B
|
|
154
154
|
DTS dist/types/standard-autosuggestions/minimal-chat-gpt-message.d.ts 129.00 B
|
|
155
|
-
DTS dist/components/index.d.ts 480.00 B
|
|
156
155
|
DTS dist/context/index.d.ts 1.00 B
|
|
156
|
+
DTS dist/components/index.d.ts 480.00 B
|
|
157
157
|
DTS dist/hooks/index.d.ts 1.00 B
|
|
158
|
-
DTS dist/hooks/use-autosuggestions.d.ts
|
|
158
|
+
DTS dist/hooks/use-autosuggestions.d.ts 879.00 B
|
|
159
159
|
DTS dist/types/base/autosuggestion-state.d.ts 143.00 B
|
|
160
160
|
DTS dist/types/base/editor-autocomplete-state.d.ts 342.00 B
|
|
161
161
|
DTS dist/hooks/use-copilot-textarea-editor.d.ts 223.00 B
|
|
@@ -174,5 +174,5 @@ DTS dist/lib/slatejs-edits/add-autocompletions.d.ts
|
|
|
174
174
|
DTS dist/lib/slatejs-edits/clear-autocompletions.d.ts 250.00 B
|
|
175
175
|
DTS dist/lib/slatejs-edits/replace-text.d.ts 139.00 B
|
|
176
176
|
DTS dist/lib/slatejs-edits/with-partial-history.d.ts 542.00 B
|
|
177
|
-
DTS dist/types/base/index.d.ts 194.00 B
|
|
178
177
|
DTS dist/types/standard-autosuggestions/index.d.ts 286.00 B
|
|
178
|
+
DTS dist/types/base/index.d.ts 194.00 B
|
package/CHANGELOG.md
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
var defaultBaseAutosuggestionsConfig = {
|
|
3
3
|
debounceTime: 500,
|
|
4
4
|
acceptAutosuggestionKey: "Tab",
|
|
5
|
-
disableWhenEmpty: true
|
|
5
|
+
disableWhenEmpty: true,
|
|
6
|
+
disabled: false
|
|
6
7
|
};
|
|
7
8
|
|
|
8
9
|
export { defaultBaseAutosuggestionsConfig };
|
|
9
10
|
//# sourceMappingURL=out.js.map
|
|
10
|
-
//# sourceMappingURL=chunk-
|
|
11
|
+
//# sourceMappingURL=chunk-7KWRVIYV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/base/base-autosuggestions-config.tsx"],"names":[],"mappings":";AAQO,IAAM,mCAGT;AAAA,EACF,cAAc;AAAA,EACd,yBAAyB;AAAA,EACzB,kBAAkB;AAAA,EAClB,UAAU;AACZ","sourcesContent":["export interface BaseAutosuggestionsConfig {\n purposePrompt: string;\n debounceTime: number;\n acceptAutosuggestionKey: string;\n disableWhenEmpty: boolean;\n disabled: boolean;\n}\n\nexport const defaultBaseAutosuggestionsConfig: Omit<\n BaseAutosuggestionsConfig,\n \"purposePrompt\"\n> = {\n debounceTime: 500,\n acceptAutosuggestionKey: \"Tab\",\n disableWhenEmpty: true,\n disabled: false,\n};\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { useAddBrandingCss } from './chunk-THWPPG6M.mjs';
|
|
2
1
|
import { addAutocompletionsToEditor } from './chunk-WJYQWL4I.mjs';
|
|
3
2
|
import { clearAutocompletionsFromEditor } from './chunk-4XYYSJ5C.mjs';
|
|
4
3
|
import { replaceEditorText } from './chunk-TSF4AJIK.mjs';
|
|
5
4
|
import { getTextAroundCursor, getFullEditorTextWithNewlines } from './chunk-3UQM3NLM.mjs';
|
|
6
|
-
import { defaultBaseAutosuggestionsConfig } from './chunk-
|
|
5
|
+
import { defaultBaseAutosuggestionsConfig } from './chunk-7KWRVIYV.mjs';
|
|
7
6
|
import { makeRenderElementFunction } from './chunk-LNAIMEB2.mjs';
|
|
8
7
|
import { makeRenderPlaceholderFunction } from './chunk-OELUUJZY.mjs';
|
|
9
|
-
import {
|
|
8
|
+
import { useAddBrandingCss } from './chunk-THWPPG6M.mjs';
|
|
9
|
+
import { useAutosuggestions } from './chunk-E2UEE45I.mjs';
|
|
10
10
|
import { useCopilotTextareaEditor } from './chunk-6SYD77G6.mjs';
|
|
11
11
|
import { __spreadValues, __objRest } from './chunk-MRXNTQOX.mjs';
|
|
12
12
|
import { useMemo, useState, useCallback, useEffect } from 'react';
|
|
@@ -48,7 +48,8 @@ function BaseCopilotTextarea(props) {
|
|
|
48
48
|
autosuggestionsConfig.acceptAutosuggestionKey,
|
|
49
49
|
props.autosuggestionsFunction,
|
|
50
50
|
insertText,
|
|
51
|
-
autosuggestionsConfig.disableWhenEmpty
|
|
51
|
+
autosuggestionsConfig.disableWhenEmpty,
|
|
52
|
+
autosuggestionsConfig.disabled
|
|
52
53
|
);
|
|
53
54
|
useEffect(() => {
|
|
54
55
|
clearAutocompletionsFromEditor(editor);
|
|
@@ -129,4 +130,4 @@ function BaseCopilotTextarea(props) {
|
|
|
129
130
|
|
|
130
131
|
export { BaseCopilotTextarea };
|
|
131
132
|
//# sourceMappingURL=out.js.map
|
|
132
|
-
//# sourceMappingURL=chunk-
|
|
133
|
+
//# sourceMappingURL=chunk-CU2M5BIJ.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 \"./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"]}
|
|
@@ -4,11 +4,14 @@ import { Debouncer } from './chunk-NKW5OU2S.mjs';
|
|
|
4
4
|
import { __async } from './chunk-MRXNTQOX.mjs';
|
|
5
5
|
import { useState, useCallback, useMemo } from 'react';
|
|
6
6
|
|
|
7
|
-
function useAutosuggestions(debounceTime, acceptAutosuggestionKey, autosuggestionFunction, insertAutocompleteSuggestion, disableWhenEmpty) {
|
|
7
|
+
function useAutosuggestions(debounceTime, acceptAutosuggestionKey, autosuggestionFunction, insertAutocompleteSuggestion, disableWhenEmpty, disabled) {
|
|
8
8
|
const [previousAutocompleteState, setPreviousAutocompleteState] = useState(null);
|
|
9
9
|
const [currentAutocompleteSuggestion, setCurrentAutocompleteSuggestion] = useState(null);
|
|
10
10
|
const awaitForAndAppendSuggestion = useCallback(
|
|
11
11
|
(editorAutocompleteState, abortSignal) => __async(this, null, function* () {
|
|
12
|
+
if (disabled) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
12
15
|
if (disableWhenEmpty && editorAutocompleteState.textBeforeCursor === "" && editorAutocompleteState.textAfterCursor === "") {
|
|
13
16
|
return;
|
|
14
17
|
}
|
|
@@ -25,7 +28,12 @@ function useAutosuggestions(debounceTime, acceptAutosuggestionKey, autosuggestio
|
|
|
25
28
|
point: editorAutocompleteState.cursorPoint
|
|
26
29
|
});
|
|
27
30
|
}),
|
|
28
|
-
[
|
|
31
|
+
[
|
|
32
|
+
autosuggestionFunction,
|
|
33
|
+
setCurrentAutocompleteSuggestion,
|
|
34
|
+
disableWhenEmpty,
|
|
35
|
+
disabled
|
|
36
|
+
]
|
|
29
37
|
);
|
|
30
38
|
const debouncedFunction = useMemo(
|
|
31
39
|
() => new Debouncer(
|
|
@@ -85,4 +93,4 @@ function useAutosuggestions(debounceTime, acceptAutosuggestionKey, autosuggestio
|
|
|
85
93
|
|
|
86
94
|
export { useAutosuggestions };
|
|
87
95
|
//# sourceMappingURL=out.js.map
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
96
|
+
//# sourceMappingURL=chunk-E2UEE45I.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-autosuggestions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,aAAa,SAAS,gBAAgB;AAgBxC,SAAS,mBACd,cACA,yBACA,wBACA,8BACA,kBACA,UAC0B;AAC1B,QAAM,CAAC,2BAA2B,4BAA4B,IAC5D,SAAyC,IAAI;AAE/C,QAAM,CAAC,+BAA+B,gCAAgC,IACpE,SAAqC,IAAI;AAE3C,QAAM,8BAGe;AAAA,IACnB,CACE,yBACA,gBACG;AAEH,UAAI,UAAU;AACZ;AAAA,MACF;AAEA,UACE,oBACA,wBAAwB,qBAAqB,MAC7C,wBAAwB,oBAAoB,IAC5C;AACA;AAAA,MACF;AAGA,YAAM,aAAa,MAAM;AAAA,QACvB,wBAAwB;AAAA,QACxB,wBAAwB;AAAA,QACxB;AAAA,MACF;AAGA,UAAI,CAAC,cAAc,YAAY,SAAS;AACtC,cAAM,IAAI,aAAa,WAAW,YAAY;AAAA,MAChD;AAEA,uCAAiC;AAAA,QAC/B,MAAM;AAAA,QACN,OAAO,wBAAwB;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,oBAAoB;AAAA,IACxB,MACE,IAAI;AAAA,MACF;AAAA,IACF;AAAA,IACF,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,WAAW;AAAA,IACf,CAAC,mBAAmD;AAClD,YAAM,wBAAwB,CAAC;AAAA,QAC7B;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,mCAA6B,cAAc;AAG3C,UAAI,CAAC,uBAAuB;AAC1B;AAAA,MACF;AAGA,uCAAiC,IAAI;AAGrC,UAAI,gBAAgB;AAClB,0BAAkB,SAAS,6BAA6B,cAAc;AAAA,MACxE,OAAO;AACL,0BAAkB,OAAO;AAAA,MAC3B;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB;AAAA,IACrB,CAAC,UAA+C;AAC9C,UAAI,+BAA+B;AACjC,YAAI,MAAM,QAAQ,yBAAyB;AACzC,gBAAM,eAAe;AACrB,uCAA6B,6BAA6B;AAC1D,2CAAiC,IAAI;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB;AACF","sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { Debouncer } from \"../lib/debouncer\";\nimport { nullableCompatibleEqualityCheck } from \"../lib/utils\";\nimport { AutosuggestionsBareFunction } from \"../types/base\";\nimport { AutosuggestionState } from \"../types/base/autosuggestion-state\";\nimport {\n EditorAutocompleteState,\n areEqual_autocompleteState,\n} from \"../types/base/editor-autocomplete-state\";\n\nexport interface UseAutosuggestionsResult {\n currentAutocompleteSuggestion: AutosuggestionState | null;\n onChangeHandler: (newEditorState: EditorAutocompleteState | null) => void;\n onKeyDownHandler: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n}\n\nexport function useAutosuggestions(\n debounceTime: number,\n acceptAutosuggestionKey: string,\n autosuggestionFunction: AutosuggestionsBareFunction,\n insertAutocompleteSuggestion: (suggestion: AutosuggestionState) => void,\n disableWhenEmpty: boolean,\n disabled: boolean\n): UseAutosuggestionsResult {\n const [previousAutocompleteState, setPreviousAutocompleteState] =\n useState<EditorAutocompleteState | null>(null);\n\n const [currentAutocompleteSuggestion, setCurrentAutocompleteSuggestion] =\n useState<AutosuggestionState | null>(null);\n\n const awaitForAndAppendSuggestion: (\n editorAutocompleteState: EditorAutocompleteState,\n abortSignal: AbortSignal\n ) => Promise<void> = useCallback(\n async (\n editorAutocompleteState: EditorAutocompleteState,\n abortSignal: AbortSignal\n ) => {\n // early return if disabled\n if (disabled) {\n return;\n }\n\n if (\n disableWhenEmpty &&\n editorAutocompleteState.textBeforeCursor === \"\" &&\n editorAutocompleteState.textAfterCursor === \"\"\n ) {\n return;\n }\n\n // fetch the suggestion\n const suggestion = await autosuggestionFunction(\n editorAutocompleteState.textBeforeCursor,\n editorAutocompleteState.textAfterCursor,\n abortSignal\n );\n\n // We'll assume for now that the autocomplete function might or might not respect the abort signal.\n if (!suggestion || abortSignal.aborted) {\n throw new DOMException(\"Aborted\", \"AbortError\");\n }\n\n setCurrentAutocompleteSuggestion({\n text: suggestion,\n point: editorAutocompleteState.cursorPoint,\n });\n },\n [\n autosuggestionFunction,\n setCurrentAutocompleteSuggestion,\n disableWhenEmpty,\n disabled,\n ]\n );\n\n const debouncedFunction = useMemo(\n () =>\n new Debouncer<[editorAutocompleteState: EditorAutocompleteState]>(\n debounceTime\n ),\n [debounceTime]\n );\n\n const onChange = useCallback(\n (newEditorState: EditorAutocompleteState | null) => {\n const editorStateHasChanged = !nullableCompatibleEqualityCheck(\n areEqual_autocompleteState,\n previousAutocompleteState,\n newEditorState\n );\n setPreviousAutocompleteState(newEditorState);\n\n // if no change, do nothing\n if (!editorStateHasChanged) {\n return;\n }\n\n // if change, then first null out the current suggestion\n setCurrentAutocompleteSuggestion(null);\n\n // then try to get a new suggestion, debouncing to avoid too many requests while typing\n if (newEditorState) {\n debouncedFunction.debounce(awaitForAndAppendSuggestion, newEditorState);\n } else {\n debouncedFunction.cancel();\n }\n },\n [\n previousAutocompleteState,\n setPreviousAutocompleteState,\n debouncedFunction,\n awaitForAndAppendSuggestion,\n setCurrentAutocompleteSuggestion,\n ]\n );\n\n const keyDownHandler = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (currentAutocompleteSuggestion) {\n if (event.key === acceptAutosuggestionKey) {\n event.preventDefault();\n insertAutocompleteSuggestion(currentAutocompleteSuggestion);\n setCurrentAutocompleteSuggestion(null);\n }\n }\n },\n [\n currentAutocompleteSuggestion,\n setCurrentAutocompleteSuggestion,\n insertAutocompleteSuggestion,\n acceptAutosuggestionKey,\n ]\n );\n\n return {\n currentAutocompleteSuggestion,\n onChangeHandler: onChange,\n onKeyDownHandler: keyDownHandler,\n };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defaultBaseAutosuggestionsConfig } from './chunk-
|
|
1
|
+
import { defaultBaseAutosuggestionsConfig } from './chunk-7KWRVIYV.mjs';
|
|
2
2
|
import { __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
|
|
3
3
|
|
|
4
4
|
// src/types/standard-autosuggestions/autosuggestions-config.tsx
|
|
@@ -66,4 +66,4 @@ var defaultAutosuggestionsConfig = __spreadProps(__spreadValues({}, defaultBaseA
|
|
|
66
66
|
|
|
67
67
|
export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt };
|
|
68
68
|
//# sourceMappingURL=out.js.map
|
|
69
|
-
//# sourceMappingURL=chunk-
|
|
69
|
+
//# sourceMappingURL=chunk-EHQ5TN4R.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMakeStandardAutosuggestionFunction } from './chunk-A3SFEHWZ.mjs';
|
|
2
|
-
import { defaultAutosuggestionsConfig } from './chunk-
|
|
3
|
-
import { BaseCopilotTextarea } from './chunk-
|
|
2
|
+
import { defaultAutosuggestionsConfig } from './chunk-EHQ5TN4R.mjs';
|
|
3
|
+
import { BaseCopilotTextarea } from './chunk-CU2M5BIJ.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-
|
|
25
|
+
//# sourceMappingURL=chunk-NHLYAJCQ.mjs.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export { BaseCopilotTextarea } from '../../chunk-
|
|
2
|
-
import '../../chunk-THWPPG6M.mjs';
|
|
1
|
+
export { BaseCopilotTextarea } from '../../chunk-CU2M5BIJ.mjs';
|
|
3
2
|
import '../../chunk-WJYQWL4I.mjs';
|
|
4
3
|
import '../../chunk-4XYYSJ5C.mjs';
|
|
5
4
|
import '../../chunk-TSF4AJIK.mjs';
|
|
6
5
|
import '../../chunk-3UQM3NLM.mjs';
|
|
7
6
|
import '../../chunk-WJHSY5T6.mjs';
|
|
8
|
-
import '../../chunk-
|
|
7
|
+
import '../../chunk-7KWRVIYV.mjs';
|
|
9
8
|
import '../../chunk-LNAIMEB2.mjs';
|
|
10
9
|
import '../../chunk-OELUUJZY.mjs';
|
|
11
|
-
import '../../chunk-
|
|
10
|
+
import '../../chunk-THWPPG6M.mjs';
|
|
11
|
+
import '../../chunk-E2UEE45I.mjs';
|
|
12
12
|
import '../../chunk-UW3ITU2Y.mjs';
|
|
13
13
|
import '../../chunk-KGKLUWKW.mjs';
|
|
14
14
|
import '../../chunk-6SYD77G6.mjs';
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
export { CopilotTextarea } from '../../chunk-
|
|
1
|
+
export { CopilotTextarea } from '../../chunk-NHLYAJCQ.mjs';
|
|
2
2
|
import '../../chunk-A3SFEHWZ.mjs';
|
|
3
3
|
import '../../chunk-AZQCUNBV.mjs';
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-THWPPG6M.mjs';
|
|
4
|
+
import '../../chunk-EHQ5TN4R.mjs';
|
|
5
|
+
import '../../chunk-CU2M5BIJ.mjs';
|
|
7
6
|
import '../../chunk-WJYQWL4I.mjs';
|
|
8
7
|
import '../../chunk-4XYYSJ5C.mjs';
|
|
9
8
|
import '../../chunk-TSF4AJIK.mjs';
|
|
10
9
|
import '../../chunk-3UQM3NLM.mjs';
|
|
11
10
|
import '../../chunk-WJHSY5T6.mjs';
|
|
12
|
-
import '../../chunk-
|
|
11
|
+
import '../../chunk-7KWRVIYV.mjs';
|
|
13
12
|
import '../../chunk-LNAIMEB2.mjs';
|
|
14
13
|
import '../../chunk-OELUUJZY.mjs';
|
|
15
|
-
import '../../chunk-
|
|
14
|
+
import '../../chunk-THWPPG6M.mjs';
|
|
15
|
+
import '../../chunk-E2UEE45I.mjs';
|
|
16
16
|
import '../../chunk-UW3ITU2Y.mjs';
|
|
17
17
|
import '../../chunk-KGKLUWKW.mjs';
|
|
18
18
|
import '../../chunk-6SYD77G6.mjs';
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import '../chunk-MMVDU6DF.mjs';
|
|
2
|
-
export { CopilotTextarea } from '../chunk-
|
|
2
|
+
export { CopilotTextarea } from '../chunk-NHLYAJCQ.mjs';
|
|
3
3
|
import '../chunk-A3SFEHWZ.mjs';
|
|
4
4
|
import '../chunk-AZQCUNBV.mjs';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
export { BaseCopilotTextarea } from '../chunk-
|
|
7
|
-
import '../chunk-THWPPG6M.mjs';
|
|
5
|
+
import '../chunk-EHQ5TN4R.mjs';
|
|
6
|
+
export { BaseCopilotTextarea } from '../chunk-CU2M5BIJ.mjs';
|
|
8
7
|
import '../chunk-WJYQWL4I.mjs';
|
|
9
8
|
import '../chunk-4XYYSJ5C.mjs';
|
|
10
9
|
import '../chunk-TSF4AJIK.mjs';
|
|
11
10
|
import '../chunk-3UQM3NLM.mjs';
|
|
12
11
|
import '../chunk-WJHSY5T6.mjs';
|
|
13
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-7KWRVIYV.mjs';
|
|
14
13
|
import '../chunk-LNAIMEB2.mjs';
|
|
15
14
|
import '../chunk-OELUUJZY.mjs';
|
|
16
|
-
import '../chunk-
|
|
15
|
+
import '../chunk-THWPPG6M.mjs';
|
|
16
|
+
import '../chunk-E2UEE45I.mjs';
|
|
17
17
|
import '../chunk-UW3ITU2Y.mjs';
|
|
18
18
|
import '../chunk-KGKLUWKW.mjs';
|
|
19
19
|
import '../chunk-6SYD77G6.mjs';
|
|
@@ -8,6 +8,6 @@ interface UseAutosuggestionsResult {
|
|
|
8
8
|
onChangeHandler: (newEditorState: EditorAutocompleteState | null) => void;
|
|
9
9
|
onKeyDownHandler: (event: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
10
10
|
}
|
|
11
|
-
declare function useAutosuggestions(debounceTime: number, acceptAutosuggestionKey: string, autosuggestionFunction: AutosuggestionsBareFunction, insertAutocompleteSuggestion: (suggestion: AutosuggestionState) => void, disableWhenEmpty: boolean): UseAutosuggestionsResult;
|
|
11
|
+
declare function useAutosuggestions(debounceTime: number, acceptAutosuggestionKey: string, autosuggestionFunction: AutosuggestionsBareFunction, insertAutocompleteSuggestion: (suggestion: AutosuggestionState) => void, disableWhenEmpty: boolean, disabled: boolean): UseAutosuggestionsResult;
|
|
12
12
|
|
|
13
13
|
export { UseAutosuggestionsResult, useAutosuggestions };
|
package/dist/index.mjs
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import './chunk-FD6FGKYY.mjs';
|
|
2
|
+
import './chunk-IU3WTXLQ.mjs';
|
|
2
3
|
import './chunk-MMVDU6DF.mjs';
|
|
3
|
-
export { CopilotTextarea } from './chunk-
|
|
4
|
+
export { CopilotTextarea } from './chunk-NHLYAJCQ.mjs';
|
|
4
5
|
import './chunk-A3SFEHWZ.mjs';
|
|
5
6
|
import './chunk-AZQCUNBV.mjs';
|
|
6
|
-
export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from './chunk-
|
|
7
|
-
export { BaseCopilotTextarea } from './chunk-
|
|
8
|
-
import './chunk-THWPPG6M.mjs';
|
|
7
|
+
export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from './chunk-EHQ5TN4R.mjs';
|
|
8
|
+
export { BaseCopilotTextarea } from './chunk-CU2M5BIJ.mjs';
|
|
9
9
|
import './chunk-WJYQWL4I.mjs';
|
|
10
10
|
import './chunk-4XYYSJ5C.mjs';
|
|
11
11
|
import './chunk-TSF4AJIK.mjs';
|
|
12
12
|
import './chunk-3UQM3NLM.mjs';
|
|
13
13
|
import './chunk-WJHSY5T6.mjs';
|
|
14
|
-
export { defaultBaseAutosuggestionsConfig } from './chunk-
|
|
14
|
+
export { defaultBaseAutosuggestionsConfig } from './chunk-7KWRVIYV.mjs';
|
|
15
15
|
import './chunk-LNAIMEB2.mjs';
|
|
16
16
|
import './chunk-OELUUJZY.mjs';
|
|
17
|
-
import './chunk-
|
|
17
|
+
import './chunk-THWPPG6M.mjs';
|
|
18
18
|
import './chunk-H4VKQGVU.mjs';
|
|
19
|
-
import './chunk-
|
|
19
|
+
import './chunk-E2UEE45I.mjs';
|
|
20
20
|
import './chunk-UW3ITU2Y.mjs';
|
|
21
21
|
import './chunk-KGKLUWKW.mjs';
|
|
22
22
|
import './chunk-6SYD77G6.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { defaultBaseAutosuggestionsConfig } from '../../chunk-
|
|
1
|
+
export { defaultBaseAutosuggestionsConfig } from '../../chunk-7KWRVIYV.mjs';
|
|
2
2
|
import '../../chunk-MRXNTQOX.mjs';
|
|
3
3
|
//# sourceMappingURL=out.js.map
|
|
4
4
|
//# sourceMappingURL=base-autosuggestions-config.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../../chunk-WJHSY5T6.mjs';
|
|
2
|
-
export { defaultBaseAutosuggestionsConfig } from '../../chunk-
|
|
2
|
+
export { defaultBaseAutosuggestionsConfig } from '../../chunk-7KWRVIYV.mjs';
|
|
3
3
|
import '../../chunk-MRXNTQOX.mjs';
|
|
4
4
|
//# sourceMappingURL=out.js.map
|
|
5
5
|
//# sourceMappingURL=index.mjs.map
|
package/dist/types/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import '../chunk-FD6FGKYY.mjs';
|
|
2
2
|
import '../chunk-AZQCUNBV.mjs';
|
|
3
|
-
export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from '../chunk-
|
|
3
|
+
export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from '../chunk-EHQ5TN4R.mjs';
|
|
4
4
|
import '../chunk-WJHSY5T6.mjs';
|
|
5
|
-
export { defaultBaseAutosuggestionsConfig } from '../chunk-
|
|
5
|
+
export { defaultBaseAutosuggestionsConfig } from '../chunk-7KWRVIYV.mjs';
|
|
6
6
|
import '../chunk-MRXNTQOX.mjs';
|
|
7
7
|
//# sourceMappingURL=out.js.map
|
|
8
8
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from '../../chunk-
|
|
1
|
+
export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from '../../chunk-EHQ5TN4R.mjs';
|
|
2
2
|
import '../../chunk-WJHSY5T6.mjs';
|
|
3
|
-
import '../../chunk-
|
|
3
|
+
import '../../chunk-7KWRVIYV.mjs';
|
|
4
4
|
import '../../chunk-MRXNTQOX.mjs';
|
|
5
5
|
//# sourceMappingURL=out.js.map
|
|
6
6
|
//# sourceMappingURL=autosuggestions-config.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '../../chunk-AZQCUNBV.mjs';
|
|
2
|
-
export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from '../../chunk-
|
|
2
|
+
export { defaultAutosuggestionsConfig, defaultFewShotMessages, defaultMakeSystemPrompt } from '../../chunk-EHQ5TN4R.mjs';
|
|
3
3
|
import '../../chunk-WJHSY5T6.mjs';
|
|
4
|
-
import '../../chunk-
|
|
4
|
+
import '../../chunk-7KWRVIYV.mjs';
|
|
5
5
|
import '../../chunk-MRXNTQOX.mjs';
|
|
6
6
|
//# sourceMappingURL=out.js.map
|
|
7
7
|
//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "0.
|
|
7
|
+
"version": "0.10.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
|
-
"
|
|
33
|
+
"tailwind-config": "0.1.0",
|
|
34
34
|
"tsconfig": "0.3.0",
|
|
35
|
-
"
|
|
35
|
+
"eslint-config-custom": "0.2.0"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"ai": "^2.1.22",
|
|
@@ -83,7 +83,8 @@ export function BaseCopilotTextarea(
|
|
|
83
83
|
autosuggestionsConfig.acceptAutosuggestionKey,
|
|
84
84
|
props.autosuggestionsFunction,
|
|
85
85
|
insertText,
|
|
86
|
-
autosuggestionsConfig.disableWhenEmpty
|
|
86
|
+
autosuggestionsConfig.disableWhenEmpty,
|
|
87
|
+
autosuggestionsConfig.disabled
|
|
87
88
|
);
|
|
88
89
|
|
|
89
90
|
// sync autosuggestions state with the editor
|
|
@@ -19,7 +19,8 @@ export function useAutosuggestions(
|
|
|
19
19
|
acceptAutosuggestionKey: string,
|
|
20
20
|
autosuggestionFunction: AutosuggestionsBareFunction,
|
|
21
21
|
insertAutocompleteSuggestion: (suggestion: AutosuggestionState) => void,
|
|
22
|
-
disableWhenEmpty: boolean
|
|
22
|
+
disableWhenEmpty: boolean,
|
|
23
|
+
disabled: boolean
|
|
23
24
|
): UseAutosuggestionsResult {
|
|
24
25
|
const [previousAutocompleteState, setPreviousAutocompleteState] =
|
|
25
26
|
useState<EditorAutocompleteState | null>(null);
|
|
@@ -35,6 +36,11 @@ export function useAutosuggestions(
|
|
|
35
36
|
editorAutocompleteState: EditorAutocompleteState,
|
|
36
37
|
abortSignal: AbortSignal
|
|
37
38
|
) => {
|
|
39
|
+
// early return if disabled
|
|
40
|
+
if (disabled) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
38
44
|
if (
|
|
39
45
|
disableWhenEmpty &&
|
|
40
46
|
editorAutocompleteState.textBeforeCursor === "" &&
|
|
@@ -43,6 +49,7 @@ export function useAutosuggestions(
|
|
|
43
49
|
return;
|
|
44
50
|
}
|
|
45
51
|
|
|
52
|
+
// fetch the suggestion
|
|
46
53
|
const suggestion = await autosuggestionFunction(
|
|
47
54
|
editorAutocompleteState.textBeforeCursor,
|
|
48
55
|
editorAutocompleteState.textAfterCursor,
|
|
@@ -59,7 +66,12 @@ export function useAutosuggestions(
|
|
|
59
66
|
point: editorAutocompleteState.cursorPoint,
|
|
60
67
|
});
|
|
61
68
|
},
|
|
62
|
-
[
|
|
69
|
+
[
|
|
70
|
+
autosuggestionFunction,
|
|
71
|
+
setCurrentAutocompleteSuggestion,
|
|
72
|
+
disableWhenEmpty,
|
|
73
|
+
disabled,
|
|
74
|
+
]
|
|
63
75
|
);
|
|
64
76
|
|
|
65
77
|
const debouncedFunction = useMemo(
|
|
@@ -3,6 +3,7 @@ export interface BaseAutosuggestionsConfig {
|
|
|
3
3
|
debounceTime: number;
|
|
4
4
|
acceptAutosuggestionKey: string;
|
|
5
5
|
disableWhenEmpty: boolean;
|
|
6
|
+
disabled: boolean;
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
export const defaultBaseAutosuggestionsConfig: Omit<
|
|
@@ -12,4 +13,5 @@ export const defaultBaseAutosuggestionsConfig: Omit<
|
|
|
12
13
|
debounceTime: 500,
|
|
13
14
|
acceptAutosuggestionKey: "Tab",
|
|
14
15
|
disableWhenEmpty: true,
|
|
16
|
+
disabled: false,
|
|
15
17
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-autosuggestions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,aAAa,SAAS,gBAAgB;AAgBxC,SAAS,mBACd,cACA,yBACA,wBACA,8BACA,kBAC0B;AAC1B,QAAM,CAAC,2BAA2B,4BAA4B,IAC5D,SAAyC,IAAI;AAE/C,QAAM,CAAC,+BAA+B,gCAAgC,IACpE,SAAqC,IAAI;AAE3C,QAAM,8BAGe;AAAA,IACnB,CACE,yBACA,gBACG;AACH,UACE,oBACA,wBAAwB,qBAAqB,MAC7C,wBAAwB,oBAAoB,IAC5C;AACA;AAAA,MACF;AAEA,YAAM,aAAa,MAAM;AAAA,QACvB,wBAAwB;AAAA,QACxB,wBAAwB;AAAA,QACxB;AAAA,MACF;AAGA,UAAI,CAAC,cAAc,YAAY,SAAS;AACtC,cAAM,IAAI,aAAa,WAAW,YAAY;AAAA,MAChD;AAEA,uCAAiC;AAAA,QAC/B,MAAM;AAAA,QACN,OAAO,wBAAwB;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IACA,CAAC,wBAAwB,kCAAkC,gBAAgB;AAAA,EAC7E;AAEA,QAAM,oBAAoB;AAAA,IACxB,MACE,IAAI;AAAA,MACF;AAAA,IACF;AAAA,IACF,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,WAAW;AAAA,IACf,CAAC,mBAAmD;AAClD,YAAM,wBAAwB,CAAC;AAAA,QAC7B;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,mCAA6B,cAAc;AAG3C,UAAI,CAAC,uBAAuB;AAC1B;AAAA,MACF;AAGA,uCAAiC,IAAI;AAGrC,UAAI,gBAAgB;AAClB,0BAAkB,SAAS,6BAA6B,cAAc;AAAA,MACxE,OAAO;AACL,0BAAkB,OAAO;AAAA,MAC3B;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB;AAAA,IACrB,CAAC,UAA+C;AAC9C,UAAI,+BAA+B;AACjC,YAAI,MAAM,QAAQ,yBAAyB;AACzC,gBAAM,eAAe;AACrB,uCAA6B,6BAA6B;AAC1D,2CAAiC,IAAI;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB;AACF","sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { Debouncer } from \"../lib/debouncer\";\nimport { nullableCompatibleEqualityCheck } from \"../lib/utils\";\nimport { AutosuggestionsBareFunction } from \"../types/base\";\nimport { AutosuggestionState } from \"../types/base/autosuggestion-state\";\nimport {\n EditorAutocompleteState,\n areEqual_autocompleteState,\n} from \"../types/base/editor-autocomplete-state\";\n\nexport interface UseAutosuggestionsResult {\n currentAutocompleteSuggestion: AutosuggestionState | null;\n onChangeHandler: (newEditorState: EditorAutocompleteState | null) => void;\n onKeyDownHandler: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n}\n\nexport function useAutosuggestions(\n debounceTime: number,\n acceptAutosuggestionKey: string,\n autosuggestionFunction: AutosuggestionsBareFunction,\n insertAutocompleteSuggestion: (suggestion: AutosuggestionState) => void,\n disableWhenEmpty: boolean\n): UseAutosuggestionsResult {\n const [previousAutocompleteState, setPreviousAutocompleteState] =\n useState<EditorAutocompleteState | null>(null);\n\n const [currentAutocompleteSuggestion, setCurrentAutocompleteSuggestion] =\n useState<AutosuggestionState | null>(null);\n\n const awaitForAndAppendSuggestion: (\n editorAutocompleteState: EditorAutocompleteState,\n abortSignal: AbortSignal\n ) => Promise<void> = useCallback(\n async (\n editorAutocompleteState: EditorAutocompleteState,\n abortSignal: AbortSignal\n ) => {\n if (\n disableWhenEmpty &&\n editorAutocompleteState.textBeforeCursor === \"\" &&\n editorAutocompleteState.textAfterCursor === \"\"\n ) {\n return;\n }\n\n const suggestion = await autosuggestionFunction(\n editorAutocompleteState.textBeforeCursor,\n editorAutocompleteState.textAfterCursor,\n abortSignal\n );\n\n // We'll assume for now that the autocomplete function might or might not respect the abort signal.\n if (!suggestion || abortSignal.aborted) {\n throw new DOMException(\"Aborted\", \"AbortError\");\n }\n\n setCurrentAutocompleteSuggestion({\n text: suggestion,\n point: editorAutocompleteState.cursorPoint,\n });\n },\n [autosuggestionFunction, setCurrentAutocompleteSuggestion, disableWhenEmpty]\n );\n\n const debouncedFunction = useMemo(\n () =>\n new Debouncer<[editorAutocompleteState: EditorAutocompleteState]>(\n debounceTime\n ),\n [debounceTime]\n );\n\n const onChange = useCallback(\n (newEditorState: EditorAutocompleteState | null) => {\n const editorStateHasChanged = !nullableCompatibleEqualityCheck(\n areEqual_autocompleteState,\n previousAutocompleteState,\n newEditorState\n );\n setPreviousAutocompleteState(newEditorState);\n\n // if no change, do nothing\n if (!editorStateHasChanged) {\n return;\n }\n\n // if change, then first null out the current suggestion\n setCurrentAutocompleteSuggestion(null);\n\n // then try to get a new suggestion, debouncing to avoid too many requests while typing\n if (newEditorState) {\n debouncedFunction.debounce(awaitForAndAppendSuggestion, newEditorState);\n } else {\n debouncedFunction.cancel();\n }\n },\n [\n previousAutocompleteState,\n setPreviousAutocompleteState,\n debouncedFunction,\n awaitForAndAppendSuggestion,\n setCurrentAutocompleteSuggestion,\n ]\n );\n\n const keyDownHandler = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (currentAutocompleteSuggestion) {\n if (event.key === acceptAutosuggestionKey) {\n event.preventDefault();\n insertAutocompleteSuggestion(currentAutocompleteSuggestion);\n setCurrentAutocompleteSuggestion(null);\n }\n }\n },\n [\n currentAutocompleteSuggestion,\n setCurrentAutocompleteSuggestion,\n insertAutocompleteSuggestion,\n acceptAutosuggestionKey,\n ]\n );\n\n return {\n currentAutocompleteSuggestion,\n onChangeHandler: onChange,\n onKeyDownHandler: keyDownHandler,\n };\n}\n"]}
|
|
@@ -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 );\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/types/base/base-autosuggestions-config.tsx"],"names":[],"mappings":";AAOO,IAAM,mCAGT;AAAA,EACF,cAAc;AAAA,EACd,yBAAyB;AAAA,EACzB,kBAAkB;AACpB","sourcesContent":["export interface BaseAutosuggestionsConfig {\n purposePrompt: string;\n debounceTime: number;\n acceptAutosuggestionKey: string;\n disableWhenEmpty: boolean;\n}\n\nexport const defaultBaseAutosuggestionsConfig: Omit<\n BaseAutosuggestionsConfig,\n \"purposePrompt\"\n> = {\n debounceTime: 500,\n acceptAutosuggestionKey: \"Tab\",\n disableWhenEmpty: true,\n};\n"]}
|
|
File without changes
|
|
File without changes
|