@copilotkit/react-textarea 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/.turbo/turbo-build.log +84 -73
  2. package/CHANGELOG.md +7 -0
  3. package/dist/chunk-AOEXKPIX.mjs +83 -0
  4. package/dist/chunk-AOEXKPIX.mjs.map +1 -0
  5. package/dist/{chunk-6SYD77G6.mjs → chunk-CSGFJU3L.mjs} +2 -2
  6. package/dist/chunk-CSGFJU3L.mjs.map +1 -0
  7. package/dist/chunk-DCQ27XRF.mjs +32 -0
  8. package/dist/chunk-DCQ27XRF.mjs.map +1 -0
  9. package/dist/chunk-DE5K76I2.mjs +3 -0
  10. package/dist/{chunk-E2UEE45I.mjs → chunk-HZGSG7ST.mjs} +1 -1
  11. package/dist/chunk-HZGSG7ST.mjs.map +1 -0
  12. package/dist/{chunk-THWPPG6M.mjs → chunk-IGQI27NI.mjs} +20 -2
  13. package/dist/chunk-IGQI27NI.mjs.map +1 -0
  14. package/dist/chunk-M6QFKIBE.mjs +161 -0
  15. package/dist/chunk-M6QFKIBE.mjs.map +1 -0
  16. package/dist/chunk-WADHCMPK.mjs +3 -0
  17. package/dist/components/base-copilot-textarea/base-copilot-textarea.d.ts +9 -4
  18. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +9 -8
  19. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs +1 -1
  20. package/dist/components/copilot-textarea/copilot-textarea.d.ts +3 -2
  21. package/dist/components/copilot-textarea/copilot-textarea.mjs +10 -9
  22. package/dist/components/index.d.ts +2 -1
  23. package/dist/components/index.mjs +10 -9
  24. package/dist/hooks/{use-autosuggestions.d.ts → base-copilot-textarea-implementation/use-autosuggestions.d.ts} +3 -3
  25. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs +7 -0
  26. package/dist/hooks/{use-copilot-textarea-editor.d.ts → base-copilot-textarea-implementation/use-copilot-textarea-editor.d.ts} +1 -1
  27. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs +5 -0
  28. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs.map +1 -0
  29. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.d.ts +7 -0
  30. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs +6 -0
  31. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs.map +1 -0
  32. package/dist/index.css +4 -0
  33. package/dist/index.css.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.mjs +12 -10
  36. package/dist/types/html-copilot-textarea-element.d.ts +7 -0
  37. package/dist/types/html-copilot-textarea-element.mjs +3 -0
  38. package/dist/types/html-copilot-textarea-element.mjs.map +1 -0
  39. package/dist/types/index.d.ts +1 -0
  40. package/dist/types/index.mjs +2 -1
  41. package/package.json +1 -1
  42. package/src/components/base-copilot-textarea/base-copilot-textarea.tsx +160 -146
  43. package/src/components/base-copilot-textarea/use-add-branding-css.tsx +25 -1
  44. package/src/components/copilot-textarea/copilot-textarea.tsx +31 -21
  45. package/src/hooks/{use-autosuggestions.ts → base-copilot-textarea-implementation/use-autosuggestions.ts} +5 -5
  46. package/src/hooks/{use-copilot-textarea-editor.tsx → base-copilot-textarea-implementation/use-copilot-textarea-editor.tsx} +5 -5
  47. package/src/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.ts +101 -0
  48. package/src/types/html-copilot-textarea-element.ts +5 -0
  49. package/src/types/index.ts +1 -0
  50. package/dist/chunk-6SYD77G6.mjs.map +0 -1
  51. package/dist/chunk-E2UEE45I.mjs.map +0 -1
  52. package/dist/chunk-FD6FGKYY.mjs +0 -3
  53. package/dist/chunk-THWPPG6M.mjs.map +0 -1
  54. package/dist/chunk-YICIML6J.mjs +0 -154
  55. package/dist/chunk-YICIML6J.mjs.map +0 -1
  56. package/dist/chunk-YTT5NE6B.mjs +0 -25
  57. package/dist/chunk-YTT5NE6B.mjs.map +0 -1
  58. package/dist/hooks/use-autosuggestions.mjs +0 -7
  59. package/dist/hooks/use-copilot-textarea-editor.mjs +0 -5
  60. /package/dist/{chunk-FD6FGKYY.mjs.map → chunk-DE5K76I2.mjs.map} +0 -0
  61. /package/dist/{hooks/use-autosuggestions.mjs.map → chunk-WADHCMPK.mjs.map} +0 -0
  62. /package/dist/hooks/{use-copilot-textarea-editor.mjs.map → base-copilot-textarea-implementation/use-autosuggestions.mjs.map} +0 -0
@@ -1,8 +1,8 @@
1
1
 
2
- > @copilotkit/react-textarea@0.11.0 build /home/runner/work/CopilotKit/CopilotKit/CopilotKit/packages/react-textarea
2
+ > @copilotkit/react-textarea@0.12.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/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
5
+ CLI Building entry: src/index.tsx, src/components/index.ts, src/context/index.ts, src/hooks/index.ts, 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/html-copilot-textarea-element.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/base-copilot-textarea-implementation/use-autosuggestions.ts, src/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.tsx, src/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.ts, 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
6
  CLI Using tsconfig: tsconfig.json
7
7
  CLI tsup v6.5.0
8
8
  CLI Using tsup config: /home/runner/work/CopilotKit/CopilotKit/CopilotKit/packages/react-textarea/tsup.config.ts
@@ -13,29 +13,33 @@ 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: "base-copilot-textarea-props".
17
- Generated an empty chunk: "custom-editor".
18
16
  Generated an empty chunk: "minimal-chat-gpt-message".
19
17
  Generated an empty chunk: "autosuggestion-state".
20
18
  Generated an empty chunk: "autosuggestions-bare-function".
21
- Generated an empty chunk: "chunk-FD6FGKYY".
19
+ Generated an empty chunk: "base-copilot-textarea-props".
20
+ Generated an empty chunk: "custom-editor".
21
+ Generated an empty chunk: "chunk-DE5K76I2".
22
+ Generated an empty chunk: "chunk-WADHCMPK".
22
23
  Generated an empty chunk: "chunk-MMVDU6DF".
23
24
  Generated an empty chunk: "chunk-AZQCUNBV".
24
25
  Generated an empty chunk: "chunk-WJHSY5T6".
25
26
  Generated an empty chunk: "chunk-IU3WTXLQ".
26
27
  Generated an empty chunk: "chunk-H4VKQGVU".
27
- ESM dist/index.css 5.75 KB
28
+ ESM dist/index.css 5.96 KB
28
29
  ESM dist/components/index.css 242.00 B
29
- ESM dist/components/copilot-textarea/copilot-textarea.css 253.00 B
30
30
  ESM dist/components/base-copilot-textarea/base-copilot-textarea.css 258.00 B
31
- ESM dist/index.css.map 12.37 KB
31
+ ESM dist/components/copilot-textarea/copilot-textarea.css 253.00 B
32
+ ESM dist/index.css.map 12.61 KB
32
33
  ESM dist/components/index.css.map 429.00 B
34
+ ESM dist/components/base-copilot-textarea/base-copilot-textarea.css.map 432.00 B
35
+ ESM dist/components/copilot-textarea/copilot-textarea.css.map 432.00 B
33
36
  ESM dist/lib/utils.test.mjs 200.00 B
34
37
  ESM dist/lib/slatejs-edits/add-autocompletions.mjs 186.00 B
35
- ESM dist/types/index.mjs 387.00 B
38
+ ESM dist/types/html-copilot-textarea-element.mjs 122.00 B
36
39
  ESM dist/context/index.mjs 98.00 B
37
40
  ESM dist/hooks/index.mjs 98.00 B
38
- ESM dist/chunk-FD6FGKYY.mjs 76.00 B
41
+ ESM dist/chunk-WADHCMPK.mjs 76.00 B
42
+ ESM dist/chunk-DE5K76I2.mjs 76.00 B
39
43
  ESM dist/chunk-MMVDU6DF.mjs 76.00 B
40
44
  ESM dist/chunk-AZQCUNBV.mjs 76.00 B
41
45
  ESM dist/chunk-WJHSY5T6.mjs 76.00 B
@@ -43,136 +47,143 @@ Generated an empty chunk: "chunk-H4VKQGVU".
43
47
  ESM dist/chunk-IU3WTXLQ.mjs 76.00 B
44
48
  ESM dist/chunk-H4VKQGVU.mjs 76.00 B
45
49
  ESM dist/chunk-MRXNTQOX.mjs 1.92 KB
46
- ESM dist/components/copilot-textarea/copilot-textarea.mjs 837.00 B
47
50
  ESM dist/lib/slatejs-edits/clear-autocompletions.mjs 192.00 B
48
- ESM dist/lib/slatejs-edits/replace-text.mjs 170.00 B
49
51
  ESM dist/lib/slatejs-edits/with-partial-history.mjs 198.00 B
50
- ESM dist/lib/get-text-around-cursor.mjs 232.00 B
52
+ ESM dist/lib/slatejs-edits/replace-text.mjs 170.00 B
51
53
  ESM dist/lib/utils.mjs 220.00 B
52
- ESM dist/components/base-copilot-textarea/base-copilot-textarea.mjs 706.00 B
54
+ ESM dist/types/index.mjs 419.00 B
55
+ ESM dist/components/base-copilot-textarea/base-copilot-textarea.mjs 741.00 B
53
56
  ESM dist/components/base-copilot-textarea/render-element.mjs 180.00 B
54
57
  ESM dist/components/base-copilot-textarea/render-placeholder.mjs 188.00 B
55
58
  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/components/copilot-textarea/copilot-textarea.mjs 872.00 B
60
+ ESM dist/index.mjs 1.06 KB
61
+ ESM dist/chunk-DCQ27XRF.mjs 1.23 KB
62
+ ESM dist/components/index.mjs 856.00 B
59
63
  ESM dist/chunk-A3SFEHWZ.mjs 2.09 KB
60
64
  ESM dist/chunk-EHQ5TN4R.mjs 2.75 KB
61
- ESM dist/chunk-YICIML6J.mjs 5.58 KB
65
+ ESM dist/chunk-M6QFKIBE.mjs 5.99 KB
66
+ ESM dist/chunk-HZGSG7ST.mjs 3.02 KB
67
+ ESM dist/chunk-UW3ITU2Y.mjs 496.00 B
68
+ ESM dist/chunk-CSGFJU3L.mjs 2.01 KB
69
+ ESM dist/chunk-AOEXKPIX.mjs 2.57 KB
62
70
  ESM dist/chunk-WJYQWL4I.mjs 595.00 B
63
- ESM dist/chunk-4XYYSJ5C.mjs 527.00 B
64
71
  ESM dist/chunk-TSF4AJIK.mjs 716.00 B
65
- ESM dist/chunk-3UQM3NLM.mjs 1.76 KB
72
+ ESM dist/chunk-KCHYD3EB.mjs 3.08 KB
73
+ ESM dist/chunk-4XYYSJ5C.mjs 527.00 B
74
+ ESM dist/chunk-KGKLUWKW.mjs 1.37 KB
66
75
  ESM dist/chunk-LNAIMEB2.mjs 1.09 KB
67
76
  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
77
+ ESM dist/chunk-IGQI27NI.mjs 2.11 KB
76
78
  ESM dist/lib/debouncer.mjs 153.00 B
77
79
  ESM dist/chunk-NKW5OU2S.mjs 959.00 B
78
80
  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
81
+ ESM dist/lib/get-text-around-cursor.mjs 232.00 B
82
+ ESM dist/chunk-3UQM3NLM.mjs 1.76 KB
82
83
  ESM dist/types/standard-autosuggestions/minimal-chat-gpt-message.mjs 86.00 B
84
+ ESM dist/types/base/autosuggestions-bare-function.mjs 91.00 B
85
+ ESM dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs 283.00 B
83
86
  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
87
+ ESM dist/types/base/base-copilot-textarea-props.mjs 89.00 B
85
88
  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
89
+ ESM dist/types/base/custom-editor.mjs 75.00 B
90
+ ESM dist/types/standard-autosuggestions/index.mjs 328.00 B
88
91
  ESM dist/types/base/editor-autocomplete-state.mjs 227.00 B
89
- ESM dist/types/base/index.mjs 213.00 B
90
92
  ESM dist/types/standard-autosuggestions/autosuggestions-config.mjs 310.00 B
91
- ESM dist/types/standard-autosuggestions/index.mjs 328.00 B
93
+ ESM dist/types/base/base-autosuggestions-config.mjs 200.00 B
94
+ ESM dist/types/base/index.mjs 213.00 B
95
+ ESM dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs 227.00 B
96
+ ESM dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs 273.00 B
92
97
  ESM dist/lib/utils.test.mjs.map 349.00 B
93
98
  ESM dist/lib/slatejs-edits/add-autocompletions.mjs.map 51.00 B
94
- ESM dist/types/index.mjs.map 51.00 B
99
+ ESM dist/types/html-copilot-textarea-element.mjs.map 51.00 B
95
100
  ESM dist/context/index.mjs.map 51.00 B
96
101
  ESM dist/hooks/index.mjs.map 51.00 B
97
- ESM dist/chunk-FD6FGKYY.mjs.map 51.00 B
102
+ ESM dist/chunk-DE5K76I2.mjs.map 51.00 B
103
+ ESM dist/chunk-WADHCMPK.mjs.map 51.00 B
98
104
  ESM dist/chunk-MMVDU6DF.mjs.map 51.00 B
99
105
  ESM dist/chunk-AZQCUNBV.mjs.map 51.00 B
100
106
  ESM dist/chunk-WJHSY5T6.mjs.map 51.00 B
101
- ESM dist/chunk-7KWRVIYV.mjs.map 623.00 B
102
107
  ESM dist/chunk-IU3WTXLQ.mjs.map 51.00 B
103
108
  ESM dist/chunk-H4VKQGVU.mjs.map 51.00 B
104
109
  ESM dist/chunk-MRXNTQOX.mjs.map 71.00 B
105
- ESM dist/components/copilot-textarea/copilot-textarea.mjs.map 51.00 B
110
+ ESM dist/chunk-7KWRVIYV.mjs.map 623.00 B
106
111
  ESM dist/lib/slatejs-edits/clear-autocompletions.mjs.map 51.00 B
107
112
  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
113
  ESM dist/lib/utils.mjs.map 51.00 B
114
+ ESM dist/types/index.mjs.map 51.00 B
115
+ ESM dist/lib/slatejs-edits/with-partial-history.mjs.map 51.00 B
111
116
  ESM dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map 51.00 B
112
117
  ESM dist/components/base-copilot-textarea/render-element.mjs.map 51.00 B
113
118
  ESM dist/components/base-copilot-textarea/render-placeholder.mjs.map 51.00 B
114
119
  ESM dist/components/base-copilot-textarea/use-add-branding-css.mjs.map 51.00 B
120
+ ESM dist/components/copilot-textarea/copilot-textarea.mjs.map 51.00 B
121
+ ESM dist/chunk-DCQ27XRF.mjs.map 2.17 KB
115
122
  ESM dist/index.mjs.map 51.00 B
116
123
  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
124
  ESM dist/chunk-EHQ5TN4R.mjs.map 4.01 KB
120
- ESM dist/chunk-YICIML6J.mjs.map 10.01 KB
125
+ ESM dist/chunk-M6QFKIBE.mjs.map 10.78 KB
126
+ ESM dist/chunk-HZGSG7ST.mjs.map 5.83 KB
127
+ ESM dist/chunk-UW3ITU2Y.mjs.map 878.00 B
128
+ ESM dist/chunk-CSGFJU3L.mjs.map 3.82 KB
129
+ ESM dist/chunk-A3SFEHWZ.mjs.map 4.73 KB
130
+ ESM dist/chunk-AOEXKPIX.mjs.map 4.80 KB
121
131
  ESM dist/chunk-WJYQWL4I.mjs.map 1.04 KB
122
- ESM dist/chunk-4XYYSJ5C.mjs.map 921.00 B
123
132
  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
133
  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-LNAIMEB2.mjs.map 1.73 KB
134
135
  ESM dist/chunk-KCHYD3EB.mjs.map 6.12 KB
136
+ ESM dist/chunk-OELUUJZY.mjs.map 957.00 B
137
+ ESM dist/chunk-4XYYSJ5C.mjs.map 921.00 B
138
+ ESM dist/chunk-IGQI27NI.mjs.map 3.42 KB
135
139
  ESM dist/lib/debouncer.mjs.map 51.00 B
136
140
  ESM dist/chunk-NKW5OU2S.mjs.map 1.60 KB
137
141
  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
142
+ ESM dist/chunk-3UQM3NLM.mjs.map 3.63 KB
143
+ ESM dist/lib/get-text-around-cursor.mjs.map 51.00 B
139
144
  ESM dist/types/standard-autosuggestions/minimal-chat-gpt-message.mjs.map 51.00 B
145
+ ESM dist/types/base/autosuggestions-bare-function.mjs.map 51.00 B
146
+ ESM dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs.map 51.00 B
140
147
  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
148
+ ESM dist/types/base/base-copilot-textarea-props.mjs.map 51.00 B
142
149
  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
150
+ ESM dist/types/base/custom-editor.mjs.map 51.00 B
151
+ ESM dist/types/standard-autosuggestions/index.mjs.map 51.00 B
152
+ ESM dist/types/standard-autosuggestions/autosuggestions-config.mjs.map 51.00 B
145
153
  ESM dist/types/base/editor-autocomplete-state.mjs.map 51.00 B
154
+ ESM dist/types/base/base-autosuggestions-config.mjs.map 51.00 B
146
155
  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
156
+ ESM dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs.map 51.00 B
157
+ ESM dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs.map 51.00 B
158
+ ESM ⚡️ Build success in 3071ms
159
+ DTS ⚡️ Build success in 5297ms
160
+ DTS dist/index.d.ts 912.00 B
161
+ DTS dist/components/base-copilot-textarea/base-copilot-textarea.d.ts 669.00 B
162
+ DTS dist/components/copilot-textarea/copilot-textarea.d.ts 803.00 B
154
163
  DTS dist/types/base/base-autosuggestions-config.d.ts 355.00 B
155
164
  DTS dist/types/base/autosuggestions-bare-function.d.ts 162.00 B
156
165
  DTS dist/types/base/base-copilot-textarea-props.d.ts 1.89 KB
166
+ DTS dist/types/html-copilot-textarea-element.d.ts 165.00 B
157
167
  DTS dist/types/standard-autosuggestions/autosuggestions-config.d.ts 884.00 B
158
168
  DTS dist/types/standard-autosuggestions/minimal-chat-gpt-message.d.ts 129.00 B
159
- DTS dist/components/index.d.ts 509.00 B
169
+ DTS dist/components/index.d.ts 561.00 B
160
170
  DTS dist/context/index.d.ts 1.00 B
161
171
  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
172
  DTS dist/lib/debouncer.d.ts 372.00 B
168
173
  DTS dist/lib/editor-to-text.d.ts 243.00 B
169
174
  DTS dist/lib/get-text-around-cursor.d.ts 453.00 B
175
+ DTS dist/types/base/editor-autocomplete-state.d.ts 342.00 B
170
176
  DTS dist/lib/utils.test.d.ts 1.00 B
171
177
  DTS dist/lib/utils.d.ts 638.00 B
172
- DTS dist/types/index.d.ts 589.00 B
178
+ DTS dist/types/index.d.ts 670.00 B
173
179
  DTS dist/components/base-copilot-textarea/render-element.d.ts 292.00 B
174
180
  DTS dist/components/base-copilot-textarea/render-placeholder.d.ts 321.00 B
175
181
  DTS dist/components/base-copilot-textarea/use-add-branding-css.d.ts 158.00 B
182
+ DTS dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.d.ts 888.00 B
183
+ DTS dist/types/base/autosuggestion-state.d.ts 143.00 B
184
+ DTS dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.d.ts 226.00 B
185
+ DTS dist/types/base/custom-editor.d.ts 801.00 B
186
+ DTS dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.d.ts 308.00 B
176
187
  DTS dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.d.ts 1.79 KB
177
188
  DTS dist/lib/slatejs-edits/add-autocompletions.d.ts 302.00 B
178
189
  DTS dist/lib/slatejs-edits/clear-autocompletions.d.ts 250.00 B
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # ui
2
2
 
3
+ ## 0.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - ec7484f: - CopilotTextarea supports passing in ref compatible with <textarea>'s HTMLTextAreaElement ref (for focus, blur, styling, etc.)
8
+ - Minor bug fix: CopilotTextarea branding remains correclty positioned as textarea scrolls
9
+
3
10
  ## 0.11.0
4
11
 
5
12
  ### Minor Changes
@@ -0,0 +1,83 @@
1
+ import { replaceEditorText } from './chunk-TSF4AJIK.mjs';
2
+ import { getFullEditorTextWithNewlines } from './chunk-3UQM3NLM.mjs';
3
+ import React from 'react';
4
+ import { ReactEditor } from 'slate-react';
5
+
6
+ function usePopulateCopilotTextareaRef(editor, ref) {
7
+ React.useImperativeHandle(
8
+ ref,
9
+ () => {
10
+ class Combined {
11
+ constructor(customMethods2, editorHtmlElement2) {
12
+ this.customMethods = customMethods2;
13
+ this.editorHtmlElement = editorHtmlElement2;
14
+ }
15
+ get(target, propKey) {
16
+ if (this.isKeyOfCustomMethods(propKey)) {
17
+ const value = this.customMethods[propKey];
18
+ if (typeof value === "function") {
19
+ return value.bind(this.customMethods);
20
+ }
21
+ return value;
22
+ } else if (this.isKeyOfHTMLElement(propKey)) {
23
+ const value = this.editorHtmlElement[propKey];
24
+ if (typeof value === "function") {
25
+ return value.bind(this.editorHtmlElement);
26
+ }
27
+ return value;
28
+ }
29
+ }
30
+ set(target, propKey, value) {
31
+ if (this.isKeyOfCustomMethods(propKey)) {
32
+ this.customMethods[propKey] = value;
33
+ } else if (this.isKeyOfHTMLElement(propKey)) {
34
+ this.editorHtmlElement[propKey] = value;
35
+ } else {
36
+ target[propKey] = value;
37
+ }
38
+ return true;
39
+ }
40
+ isKeyOfCustomMethods(key) {
41
+ return key in this.customMethods;
42
+ }
43
+ isKeyOfHTMLElement(key) {
44
+ return key in this.editorHtmlElement;
45
+ }
46
+ }
47
+ const handler = {
48
+ get(target, propKey) {
49
+ return target.get(target, propKey);
50
+ },
51
+ set(target, propKey, value) {
52
+ return target.set(target, propKey, value);
53
+ }
54
+ };
55
+ class CustomMethods {
56
+ constructor(editor2) {
57
+ this.editor = editor2;
58
+ }
59
+ focus() {
60
+ ReactEditor.focus(this.editor);
61
+ }
62
+ blur() {
63
+ ReactEditor.blur(this.editor);
64
+ }
65
+ get value() {
66
+ return getFullEditorTextWithNewlines(this.editor);
67
+ }
68
+ set value(value) {
69
+ replaceEditorText(this.editor, value);
70
+ }
71
+ }
72
+ const editorHtmlElement = ReactEditor.toDOMNode(editor, editor);
73
+ const customMethods = new CustomMethods(editor);
74
+ const combined = new Combined(customMethods, editorHtmlElement);
75
+ return new Proxy(combined, handler);
76
+ },
77
+ [editor]
78
+ );
79
+ }
80
+
81
+ export { usePopulateCopilotTextareaRef };
82
+ //# sourceMappingURL=out.js.map
83
+ //# sourceMappingURL=chunk-AOEXKPIX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.ts"],"names":["customMethods","editorHtmlElement","editor"],"mappings":";;;;;;;;AAAA,OAAO,WAAW;AAElB,SAAS,mBAAmB;AAMrB,SAAS,8BACd,QACA,KACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA,MAAM;AACJ,YAAM,SAAS;AAAA,QACb,YACUA,gBACAC,oBACR;AAFQ,+BAAAD;AACA,mCAAAC;AAAA,QACP;AAAA,QAIH,IAAI,QAAa,SAAsB;AACrC,cAAI,KAAK,qBAAqB,OAAO,GAAG;AACtC,kBAAM,QAAQ,KAAK,cAAc;AACjC,gBAAI,OAAO,UAAU,YAAY;AAC/B,qBAAO,MAAM,KAAK,KAAK,aAAa;AAAA,YACtC;AACA,mBAAO;AAAA,UACT,WAAW,KAAK,mBAAmB,OAAO,GAAG;AAC3C,kBAAM,QAAQ,KAAK,kBAAkB;AACrC,gBAAI,OAAO,UAAU,YAAY;AAC/B,qBAAO,MAAM,KAAK,KAAK,iBAAiB;AAAA,YAC1C;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QAEA,IAAI,QAAa,SAAiB,OAAqB;AACrD,cAAI,KAAK,qBAAqB,OAAO,GAAG;AACtC,YAAC,KAAK,cAAsB,WAAW;AAAA,UACzC,WAAW,KAAK,mBAAmB,OAAO,GAAG;AAC3C,YAAC,KAAK,kBAA0B,WAAW;AAAA,UAC7C,OAAO;AAEL,mBAAO,WAAW;AAAA,UACpB;AACA,iBAAO;AAAA,QACT;AAAA,QAEQ,qBAAqB,KAAyC;AACpE,iBAAO,OAAO,KAAK;AAAA,QACrB;AAAA,QAEQ,mBAAmB,KAAuC;AAChE,iBAAO,OAAO,KAAK;AAAA,QACrB;AAAA,MACF;AAEA,YAAM,UAAU;AAAA,QACd,IAAI,QAAa,SAAkD;AACjE,iBAAO,OAAO,IAAI,QAAQ,OAAO;AAAA,QACnC;AAAA,QACA,IACE,QACA,SACA,OACA;AACA,iBAAO,OAAO,IAAI,QAAQ,SAAS,KAAK;AAAA,QAC1C;AAAA,MACF;AAEA,YAAM,cAAc;AAAA,QAClB,YAAoBC,SAAsB;AAAtB,wBAAAA;AAAA,QAAuB;AAAA,QAE3C,QAAQ;AACN,sBAAY,MAAM,KAAK,MAAM;AAAA,QAC/B;AAAA,QAEA,OAAO;AACL,sBAAY,KAAK,KAAK,MAAM;AAAA,QAC9B;AAAA,QAEA,IAAI,QAAQ;AACV,iBAAO,8BAA8B,KAAK,MAAM;AAAA,QAClD;AAAA,QACA,IAAI,MAAM,OAAe;AACvB,4BAAkB,KAAK,QAAQ,KAAK;AAAA,QACtC;AAAA,MACF;AAEA,YAAM,oBAAoB,YAAY,UAAU,QAAQ,MAAM;AAC9D,YAAM,gBAAgB,IAAI,cAAc,MAAM;AAE9C,YAAM,WAAW,IAAI,SAAS,eAAe,iBAAiB;AAC9D,aAAO,IAAI,MAAM,UAAU,OAAO;AAAA,IACpC;AAAA,IACA,CAAC,MAAM;AAAA,EACT;AACF","sourcesContent":["import React from \"react\";\nimport { Editor } from \"slate\";\nimport { ReactEditor } from \"slate-react\";\nimport { getFullEditorTextWithNewlines } from \"../../lib/get-text-around-cursor\";\nimport { replaceEditorText } from \"../../lib/slatejs-edits/replace-text\";\nimport { HTMLCopilotTextAreaElement } from \"../../types\";\nimport { CustomEditor } from \"../../types/base/custom-editor\";\n\nexport function usePopulateCopilotTextareaRef(\n editor: Editor,\n ref: React.Ref<HTMLCopilotTextAreaElement>\n) {\n React.useImperativeHandle(\n ref,\n () => {\n class Combined {\n constructor(\n private customMethods: CustomMethods,\n private editorHtmlElement: HTMLElement\n ) {}\n\n [key: string]: any;\n\n get(target: any, propKey: string): any {\n if (this.isKeyOfCustomMethods(propKey)) {\n const value = this.customMethods[propKey];\n if (typeof value === \"function\") {\n return value.bind(this.customMethods);\n }\n return value;\n } else if (this.isKeyOfHTMLElement(propKey)) {\n const value = this.editorHtmlElement[propKey];\n if (typeof value === \"function\") {\n return value.bind(this.editorHtmlElement);\n }\n return value;\n }\n }\n\n set(target: any, propKey: string, value: any): boolean {\n if (this.isKeyOfCustomMethods(propKey)) {\n (this.customMethods as any)[propKey] = value;\n } else if (this.isKeyOfHTMLElement(propKey)) {\n (this.editorHtmlElement as any)[propKey] = value;\n } else {\n // Default behavior (optional)\n target[propKey] = value;\n }\n return true;\n }\n\n private isKeyOfCustomMethods(key: string): key is keyof CustomMethods {\n return key in this.customMethods;\n }\n\n private isKeyOfHTMLElement(key: string): key is keyof HTMLElement {\n return key in this.editorHtmlElement;\n }\n }\n\n const handler = {\n get(target: any, propKey: keyof CustomMethods | keyof HTMLElement) {\n return target.get(target, propKey);\n },\n set(\n target: any,\n propKey: keyof CustomMethods | keyof HTMLElement,\n value: any\n ) {\n return target.set(target, propKey, value);\n },\n };\n\n class CustomMethods {\n constructor(private editor: CustomEditor) {}\n\n focus() {\n ReactEditor.focus(this.editor);\n }\n\n blur() {\n ReactEditor.blur(this.editor);\n }\n\n get value() {\n return getFullEditorTextWithNewlines(this.editor);\n }\n set value(value: string) {\n replaceEditorText(this.editor, value);\n }\n }\n\n const editorHtmlElement = ReactEditor.toDOMNode(editor, editor);\n const customMethods = new CustomMethods(editor);\n\n const combined = new Combined(customMethods, editorHtmlElement);\n return new Proxy(combined, handler);\n },\n [editor]\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { withPartialHistory, defaultShouldSave } from './chunk-KCHYD3EB.mjs';
2
+ import { useMemo } from 'react';
2
3
  import { createEditor, Element } from 'slate';
3
4
  import { withReact } from 'slate-react';
4
- import { useMemo } from 'react';
5
5
 
6
6
  var shouldSave = (op, prev) => {
7
7
  const excludedNodeType = "suggestion";
@@ -62,4 +62,4 @@ function useCopilotTextareaEditor() {
62
62
 
63
63
  export { useCopilotTextareaEditor };
64
64
  //# sourceMappingURL=out.js.map
65
- //# sourceMappingURL=chunk-6SYD77G6.mjs.map
65
+ //# sourceMappingURL=chunk-CSGFJU3L.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.tsx"],"names":["editor"],"mappings":";;;;;;AAAA,SAAS,eAAe;AACxB,SAAS,cAAc,eAAe;AACtC,SAAS,iBAAiB;AAQ1B,IAAM,aAAkC,CAAC,IAAI,SAAS;AACpD,QAAM,mBAAmB;AAEzB,MACE,GAAG,SAAS,iBACZ,QAAQ,UAAU,GAAG,IAAI,KACzB,GAAG,KAAK,SAAS,kBACjB;AACA,WAAO;AAAA,EACT;AAEA,MACE,GAAG,SAAS,iBACZ,QAAQ,UAAU,GAAG,IAAI,KACzB,GAAG,KAAK,SAAS,kBACjB;AACA,WAAO;AAAA,EACT;AAEA,MACE,GAAG,SAAS,cACZ,UAAU,GAAG,iBACb,GAAG,cAAc,SAAS,kBAC1B;AACA,WAAO;AAAA,EACT;AAEA,MACE,GAAG,QAAQ,cACX,UAAU,GAAG,cACb,GAAG,WAAW,SAAS,kBACvB;AACA,WAAO;AAAA,EACT;AAEA,MACE,GAAG,SAAS,gBACZ,UAAU,GAAG,cACb,GAAG,WAAW,SAAS,kBACvB;AACA,WAAO;AAAA,EACT;AAEA,MACE,GAAG,SAAS,gBACZ,UAAU,GAAG,cACb,GAAG,WAAW,SAAS,kBACvB;AACA,WAAO;AAAA,EACT;AAGA,SAAO,kBAAkB,IAAI,IAAI;AACnC;AAEO,SAAS,2BAAyC;AACvD,QAAM,SAAS,QAAQ,MAAM;AAC3B,UAAMA,UAAS,mBAAmB,UAAU,aAAa,CAAC,GAAG,UAAU;AAEvE,UAAM,EAAE,OAAO,IAAIA;AACnB,IAAAA,QAAO,SAAS,CAAC,YAAY;AAC3B,cAAQ,QAAQ,MAAM;AAAA,QACpB,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO,OAAO,OAAO;AAAA,MACzB;AAAA,IACF;AAEA,UAAM,EAAE,aAAa,IAAIA;AACzB,IAAAA,QAAO,eAAe,CAAC,YAAY;AACjC,cAAQ,QAAQ,MAAM;AAAA,QACpB,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO,aAAa,OAAO;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,EAAE,SAAS,IAAIA;AACrB,IAAAA,QAAO,WAAW,CAAC,YAAY;AAC7B,cAAQ,QAAQ,MAAM;AAAA,QACpB,KAAK;AACH,iBAAO,QAAQ;AAAA,QACjB;AACE,iBAAO,SAAS,OAAO;AAAA,MAC3B;AAAA,IACF;AAEA,WAAOA;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,SAAO;AACT","sourcesContent":["import { useMemo } from \"react\";\nimport { createEditor, Element } from \"slate\";\nimport { withReact } from \"slate-react\";\nimport {\n defaultShouldSave,\n ShouldSaveToHistory,\n withPartialHistory,\n} from \"../../lib/slatejs-edits/with-partial-history\";\nimport { CustomEditor } from \"../../types/base/custom-editor\";\n\nconst shouldSave: ShouldSaveToHistory = (op, prev) => {\n const excludedNodeType = \"suggestion\";\n // Check if the operation involves the suggestion inline node type\n if (\n op.type === \"insert_node\" &&\n Element.isElement(op.node) &&\n op.node.type === excludedNodeType\n ) {\n return false;\n }\n\n if (\n op.type === \"remove_node\" &&\n Element.isElement(op.node) &&\n op.node.type === excludedNodeType\n ) {\n return false;\n }\n\n if (\n op.type === \"set_node\" &&\n \"type\" in op.newProperties &&\n op.newProperties.type === excludedNodeType\n ) {\n return false;\n }\n\n if (\n op.type == \"set_node\" &&\n \"type\" in op.properties &&\n op.properties.type === excludedNodeType\n ) {\n return false;\n }\n\n if (\n op.type === \"merge_node\" &&\n \"type\" in op.properties &&\n op.properties.type === excludedNodeType\n ) {\n return false;\n }\n\n if (\n op.type === \"split_node\" &&\n \"type\" in op.properties &&\n op.properties.type === excludedNodeType\n ) {\n return false;\n }\n\n // Otherwise, save the operation to history\n return defaultShouldSave(op, prev);\n};\n\nexport function useCopilotTextareaEditor(): CustomEditor {\n const editor = useMemo(() => {\n const editor = withPartialHistory(withReact(createEditor()), shouldSave);\n\n const { isVoid } = editor;\n editor.isVoid = (element) => {\n switch (element.type) {\n case \"suggestion\":\n return true;\n default:\n return isVoid(element);\n }\n };\n\n const { markableVoid } = editor;\n editor.markableVoid = (element) => {\n switch (element.type) {\n case \"suggestion\":\n return true;\n default:\n return markableVoid(element);\n }\n };\n\n const { isInline } = editor;\n editor.isInline = (element) => {\n switch (element.type) {\n case \"suggestion\":\n return element.inline;\n default:\n return isInline(element);\n }\n };\n\n return editor;\n }, []);\n\n return editor;\n}\n"]}
@@ -0,0 +1,32 @@
1
+ import { useMakeStandardAutosuggestionFunction } from './chunk-A3SFEHWZ.mjs';
2
+ import { defaultAutosuggestionsConfig } from './chunk-EHQ5TN4R.mjs';
3
+ import { BaseCopilotTextarea } from './chunk-M6QFKIBE.mjs';
4
+ import { __spreadValues, __spreadProps } from './chunk-MRXNTQOX.mjs';
5
+ import React from 'react';
6
+ import { jsx, Fragment } from 'react/jsx-runtime';
7
+
8
+ var CopilotTextarea = React.forwardRef(
9
+ (props, ref) => {
10
+ const autosuggestionsConfig = __spreadValues(__spreadValues({}, defaultAutosuggestionsConfig), props.autosuggestionsConfig);
11
+ const autosuggestionsFunction = useMakeStandardAutosuggestionFunction(
12
+ autosuggestionsConfig.purposePrompt,
13
+ autosuggestionsConfig.apiEndpoint,
14
+ autosuggestionsConfig.makeSystemPrompt,
15
+ autosuggestionsConfig.fewShotMessages,
16
+ autosuggestionsConfig.externalContextCategories,
17
+ autosuggestionsConfig.forwardedParams
18
+ );
19
+ return /* @__PURE__ */ jsx(Fragment, {
20
+ children: /* @__PURE__ */ jsx(BaseCopilotTextarea, __spreadProps(__spreadValues({
21
+ ref
22
+ }, props), {
23
+ autosuggestionsConfig,
24
+ autosuggestionsFunction
25
+ }))
26
+ });
27
+ }
28
+ );
29
+
30
+ export { CopilotTextarea };
31
+ //# sourceMappingURL=out.js.map
32
+ //# sourceMappingURL=chunk-DCQ27XRF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/copilot-textarea/copilot-textarea.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,OAAO,WAAW;AAoCZ,mBACE,WADF;AApBC,IAAM,kBAAkB,MAAM;AAAA,EACnC,CACE,OACA,QACgB;AAChB,UAAM,wBAA+C,kCAChD,+BACA,MAAM;AAGX,UAAM,0BAA0B;AAAA,MAC9B,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,IACxB;AAEA,WACE;AAAA,MACE,8BAAC;AAAA,QACC;AAAA,SACI,QAFL;AAAA,QAGC;AAAA,QACA;AAAA,QACF;AAAA,KACF;AAAA,EAEJ;AACF","sourcesContent":["// This example is for an Editor with `ReactEditor` and `HistoryEditor`\nimport React from \"react\";\nimport { useMakeStandardAutosuggestionFunction } from \"../../hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function\";\nimport { HTMLCopilotTextAreaElement } from \"../../types\";\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 const CopilotTextarea = React.forwardRef(\n (\n props: CopilotTextareaProps,\n ref: React.Ref<HTMLCopilotTextAreaElement>\n ): 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 <>\n <BaseCopilotTextarea\n ref={ref}\n {...props}\n autosuggestionsConfig={autosuggestionsConfig}\n autosuggestionsFunction={autosuggestionsFunction}\n />\n </>\n );\n }\n);\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=out.js.map
3
+ //# sourceMappingURL=chunk-DE5K76I2.mjs.map
@@ -93,4 +93,4 @@ function useAutosuggestions(debounceTime, acceptAutosuggestionKey, autosuggestio
93
93
 
94
94
  export { useAutosuggestions };
95
95
  //# sourceMappingURL=out.js.map
96
- //# sourceMappingURL=chunk-E2UEE45I.mjs.map
96
+ //# sourceMappingURL=chunk-HZGSG7ST.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/base-copilot-textarea-implementation/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"]}
@@ -2,6 +2,7 @@ import { useEffect } from 'react';
2
2
 
3
3
  // src/components/base-copilot-textarea/use-add-branding-css.tsx
4
4
  function useAddBrandingCss(suggestionStyleAugmented, disableBranding) {
5
+ const cssSelector = ".copilot-textarea.with-branding";
5
6
  useEffect(() => {
6
7
  if (disableBranding) {
7
8
  return;
@@ -23,18 +24,35 @@ function useAddBrandingCss(suggestionStyleAugmented, disableBranding) {
23
24
  dynamicStyles += `border: 0;`;
24
25
  dynamicStyles += `line-height: 1;`;
25
26
  styleEl.innerHTML = `
26
- .copilot-textarea.with-branding::after {
27
+ ${cssSelector}::after {
27
28
  ${dynamicStyles}
28
29
  }
29
30
  `;
30
31
  document.head.appendChild(styleEl);
32
+ const textarea = document.querySelector(cssSelector);
33
+ const handleScroll = () => {
34
+ const styleEl2 = document.getElementById("dynamic-styles");
35
+ if (styleEl2 && textarea) {
36
+ const offsetFromBottom = -textarea.scrollTop + 6;
37
+ const offsetFromRight = -textarea.scrollLeft + 6;
38
+ styleEl2.innerHTML = `
39
+ ${cssSelector}::after {
40
+ ${dynamicStyles}
41
+ bottom: ${offsetFromBottom}px;
42
+ right: ${offsetFromRight}px;
43
+ }
44
+ `;
45
+ }
46
+ };
47
+ textarea == null ? void 0 : textarea.addEventListener("scroll", handleScroll);
31
48
  return () => {
32
49
  var _a;
33
50
  (_a = document.getElementById("dynamic-styles")) == null ? void 0 : _a.remove();
51
+ textarea == null ? void 0 : textarea.removeEventListener("scroll", handleScroll);
34
52
  };
35
53
  }, [disableBranding, suggestionStyleAugmented]);
36
54
  }
37
55
 
38
56
  export { useAddBrandingCss };
39
57
  //# sourceMappingURL=out.js.map
40
- //# sourceMappingURL=chunk-THWPPG6M.mjs.map
58
+ //# sourceMappingURL=chunk-IGQI27NI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/base-copilot-textarea/use-add-branding-css.tsx"],"names":["styleEl"],"mappings":";AAAA,SAAS,iBAAiB;AAEnB,SAAS,kBACd,0BACA,iBACA;AACA,QAAM,cAAc;AACpB,YAAU,MAAM;AACd,QAAI,iBAAiB;AACnB;AAAA,IACF;AAIA,UAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,YAAQ,KAAK;AAGb,QAAI,gBAAgB,OAAO,QAAQ,wBAAwB,EACxD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACrB,YAAM,eAAe,IAClB,QAAQ,gCAAgC,OAAO,EAC/C,YAAY;AACf,aAAO,GAAG,iBAAiB;AAAA,IAC7B,CAAC,EACA,KAAK,GAAG;AAGX,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AAGjB,YAAQ,YAAY;AAAA,QAChB;AAAA,UACE;AAAA;AAAA;AAIN,aAAS,KAAK,YAAY,OAAO;AAIjC,UAAM,WAAW,SAAS,cAAc,WAAW;AACnD,UAAM,eAAe,MAAM;AACzB,YAAMA,WAAU,SAAS,eAAe,gBAAgB;AACxD,UAAIA,YAAW,UAAU;AACvB,cAAM,mBAAmB,CAAC,SAAS,YAAY;AAC/C,cAAM,kBAAkB,CAAC,SAAS,aAAa;AAC/C,QAAAA,SAAQ,YAAY;AAAA,YAChB;AAAA,cACE;AAAA,sBACQ;AAAA,qBACD;AAAA;AAAA;AAAA,MAGf;AAAA,IACF;AAEA,yCAAU,iBAAiB,UAAU;AAGrC,WAAO,MAAM;AArEjB;AAsEM,qBAAS,eAAe,gBAAgB,MAAxC,mBAA2C;AAC3C,2CAAU,oBAAoB,UAAU;AAAA,IAC1C;AAAA,EACF,GAAG,CAAC,iBAAiB,wBAAwB,CAAC;AAChD","sourcesContent":["import { useEffect } from \"react\";\n\nexport function useAddBrandingCss(\n suggestionStyleAugmented: React.CSSProperties,\n disableBranding: boolean | undefined\n) {\n const cssSelector = \".copilot-textarea.with-branding\";\n useEffect(() => {\n if (disableBranding) {\n return;\n }\n\n // ---\n // 1: Add the CSS to the DOM\n const styleEl = document.createElement(\"style\");\n styleEl.id = \"dynamic-styles\";\n\n // Build the CSS string dynamically\n let dynamicStyles = Object.entries(suggestionStyleAugmented)\n .map(([key, value]) => {\n const kebabCaseKey = key\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\")\n .toLowerCase();\n return `${kebabCaseKey}: ${value};`;\n })\n .join(\" \");\n\n // Append overrides for italics and font-size\n dynamicStyles += `font-style: normal; font-size: x-small;`;\n dynamicStyles += `content: \"CopilotKit\";`;\n dynamicStyles += `bottom: 6px;`;\n dynamicStyles += `right: 6px;`;\n dynamicStyles += `pointer-events: none;`;\n dynamicStyles += `font-weight: 200;`;\n dynamicStyles += `padding: 0;`;\n dynamicStyles += `margin: 0;`;\n dynamicStyles += `border: 0;`;\n dynamicStyles += `line-height: 1;`;\n\n // Append it to the ::after class\n styleEl.innerHTML = `\n ${cssSelector}::after {\n ${dynamicStyles}\n }\n `;\n\n document.head.appendChild(styleEl);\n\n // ---\n // 2: Add the scroll listener (to keep the branding in the bottom right as the textarea scrolls)\n const textarea = document.querySelector(cssSelector);\n const handleScroll = () => {\n const styleEl = document.getElementById(\"dynamic-styles\");\n if (styleEl && textarea) {\n const offsetFromBottom = -textarea.scrollTop + 6;\n const offsetFromRight = -textarea.scrollLeft + 6;\n styleEl.innerHTML = `\n ${cssSelector}::after {\n ${dynamicStyles}\n bottom: ${offsetFromBottom}px;\n right: ${offsetFromRight}px;\n }\n `;\n }\n };\n\n textarea?.addEventListener(\"scroll\", handleScroll);\n\n // Cleanup\n return () => {\n document.getElementById(\"dynamic-styles\")?.remove();\n textarea?.removeEventListener(\"scroll\", handleScroll);\n };\n }, [disableBranding, suggestionStyleAugmented]);\n}\n"]}