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

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 (232) hide show
  1. package/.turbo/turbo-build.log +292 -288
  2. package/CHANGELOG.md +17 -0
  3. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +1870 -33
  4. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map +1 -1
  5. package/dist/components/base-copilot-textarea/render-element.mjs +52 -3
  6. package/dist/components/base-copilot-textarea/render-element.mjs.map +1 -1
  7. package/dist/components/base-copilot-textarea/render-placeholder.mjs +46 -3
  8. package/dist/components/base-copilot-textarea/render-placeholder.mjs.map +1 -1
  9. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs +86 -4
  10. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs.map +1 -1
  11. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs +57 -3
  12. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs.map +1 -1
  13. package/dist/components/copilot-textarea/copilot-textarea.mjs +2339 -43
  14. package/dist/components/copilot-textarea/copilot-textarea.mjs.map +1 -1
  15. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs +22 -3
  16. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs.map +1 -1
  17. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs +125 -3
  18. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs.map +1 -1
  19. package/dist/components/hovering-toolbar/hovering-toolbar.mjs +1015 -16
  20. package/dist/components/hovering-toolbar/hovering-toolbar.mjs.map +1 -1
  21. package/dist/components/hovering-toolbar/text-insertion-prompt-box/{mode-suggestion-appearing.d.ts → hovering-insertion-prompt-box-core.d.ts} +5 -13
  22. package/dist/{chunk-ITZHK3YV.mjs → components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs} +488 -243
  23. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs.map +1 -0
  24. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs +734 -11
  25. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs.map +1 -1
  26. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs +734 -12
  27. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs.map +1 -1
  28. package/dist/components/index.mjs +2340 -44
  29. package/dist/components/index.mjs.map +1 -1
  30. package/dist/components/manual-ui/chip-with-icon.mjs +5 -6
  31. package/dist/components/manual-ui/chip-with-icon.mjs.map +1 -1
  32. package/dist/components/source-search-box/source-search-box.mjs +323 -9
  33. package/dist/components/source-search-box/source-search-box.mjs.map +1 -1
  34. package/dist/components/ui/button.d.ts +1 -1
  35. package/dist/components/ui/button.mjs +88 -4
  36. package/dist/components/ui/button.mjs.map +1 -1
  37. package/dist/components/ui/card.mjs +53 -7
  38. package/dist/components/ui/card.mjs.map +1 -1
  39. package/dist/components/ui/command.mjs +266 -5
  40. package/dist/components/ui/command.mjs.map +1 -1
  41. package/dist/components/ui/dialog.mjs +164 -4
  42. package/dist/components/ui/dialog.mjs.map +1 -1
  43. package/dist/components/ui/label.mjs +63 -4
  44. package/dist/components/ui/label.mjs.map +1 -1
  45. package/dist/components/ui/separator.mjs +50 -8
  46. package/dist/components/ui/separator.mjs.map +1 -1
  47. package/dist/components/ui/textarea.mjs +48 -7
  48. package/dist/components/ui/textarea.mjs.map +1 -1
  49. package/dist/context/index.mjs +0 -2
  50. package/dist/context/index.mjs.map +1 -1
  51. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs +168 -6
  52. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs.map +1 -1
  53. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs +168 -4
  54. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs.map +1 -1
  55. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs +155 -5
  56. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs.map +1 -1
  57. package/dist/hooks/index.mjs +0 -2
  58. package/dist/hooks/index.mjs.map +1 -1
  59. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs +90 -4
  60. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs.map +1 -1
  61. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs +143 -4
  62. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs.map +1 -1
  63. package/dist/hooks/misc/use-autosize-textarea.mjs +15 -3
  64. package/dist/hooks/misc/use-autosize-textarea.mjs.map +1 -1
  65. package/dist/index.css +3 -27
  66. package/dist/index.css.map +1 -1
  67. package/dist/index.mjs +2343 -48
  68. package/dist/index.mjs.map +1 -1
  69. package/dist/lib/debouncer.mjs +51 -3
  70. package/dist/lib/debouncer.mjs.map +1 -1
  71. package/dist/lib/editor-to-text.mjs +43 -3
  72. package/dist/lib/editor-to-text.mjs.map +1 -1
  73. package/dist/lib/get-text-around-cursor.mjs +109 -3
  74. package/dist/lib/get-text-around-cursor.mjs.map +1 -1
  75. package/dist/lib/retry.mjs +17 -3
  76. package/dist/lib/retry.mjs.map +1 -1
  77. package/dist/lib/slatejs-edits/add-autocompletions.mjs +25 -3
  78. package/dist/lib/slatejs-edits/add-autocompletions.mjs.map +1 -1
  79. package/dist/lib/slatejs-edits/clear-autocompletions.mjs +23 -3
  80. package/dist/lib/slatejs-edits/clear-autocompletions.mjs.map +1 -1
  81. package/dist/lib/slatejs-edits/replace-text.mjs +27 -3
  82. package/dist/lib/slatejs-edits/replace-text.mjs.map +1 -1
  83. package/dist/lib/slatejs-edits/with-partial-history.mjs +106 -3
  84. package/dist/lib/slatejs-edits/with-partial-history.mjs.map +1 -1
  85. package/dist/lib/stream-promise-flatten.d.ts +3 -0
  86. package/dist/lib/stream-promise-flatten.mjs +48 -0
  87. package/dist/lib/stream-promise-flatten.mjs.map +1 -0
  88. package/dist/lib/utils.mjs +71 -3
  89. package/dist/lib/utils.mjs.map +1 -1
  90. package/dist/lib/utils.test.mjs +0 -1
  91. package/dist/lib/utils.test.mjs.map +1 -1
  92. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs +0 -2
  93. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs.map +1 -1
  94. package/dist/types/autosuggestions-config/autosuggestions-config.mjs +312 -9
  95. package/dist/types/autosuggestions-config/autosuggestions-config.mjs.map +1 -1
  96. package/dist/types/autosuggestions-config/editing-api-config.mjs +155 -4
  97. package/dist/types/autosuggestions-config/editing-api-config.mjs.map +1 -1
  98. package/dist/types/autosuggestions-config/index.mjs +313 -10
  99. package/dist/types/autosuggestions-config/index.mjs.map +1 -1
  100. package/dist/types/autosuggestions-config/insertions-api-config.mjs +149 -4
  101. package/dist/types/autosuggestions-config/insertions-api-config.mjs.map +1 -1
  102. package/dist/types/autosuggestions-config/subtypes/chatlike-api-endpoint.mjs +71 -3
  103. package/dist/types/autosuggestions-config/subtypes/chatlike-api-endpoint.mjs.map +1 -1
  104. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs +0 -2
  105. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs.map +1 -1
  106. package/dist/types/autosuggestions-config/subtypes/minimal-chat-gpt-message.mjs +0 -2
  107. package/dist/types/autosuggestions-config/subtypes/minimal-chat-gpt-message.mjs.map +1 -1
  108. package/dist/types/autosuggestions-config/suggestions-api-config.mjs +137 -4
  109. package/dist/types/autosuggestions-config/suggestions-api-config.mjs.map +1 -1
  110. package/dist/types/base/autosuggestion-state.mjs +0 -2
  111. package/dist/types/base/autosuggestion-state.mjs.map +1 -1
  112. package/dist/types/base/autosuggestions-bare-function.mjs +0 -2
  113. package/dist/types/base/autosuggestions-bare-function.mjs.map +1 -1
  114. package/dist/types/base/base-autosuggestions-config.mjs +11 -3
  115. package/dist/types/base/base-autosuggestions-config.mjs.map +1 -1
  116. package/dist/types/base/base-copilot-textarea-props.mjs +0 -2
  117. package/dist/types/base/base-copilot-textarea-props.mjs.map +1 -1
  118. package/dist/types/base/custom-editor.mjs +0 -2
  119. package/dist/types/base/custom-editor.mjs.map +1 -1
  120. package/dist/types/base/editor-autocomplete-state.mjs +17 -4
  121. package/dist/types/base/editor-autocomplete-state.mjs.map +1 -1
  122. package/dist/types/base/index.mjs +11 -4
  123. package/dist/types/base/index.mjs.map +1 -1
  124. package/dist/types/html-copilot-textarea-element.mjs +0 -2
  125. package/dist/types/html-copilot-textarea-element.mjs.map +1 -1
  126. package/dist/types/index.mjs +314 -12
  127. package/dist/types/index.mjs.map +1 -1
  128. package/package.json +3 -3
  129. package/src/components/hovering-toolbar/text-insertion-prompt-box/{mode-suggestion-appearing.tsx → hovering-insertion-prompt-box-core.tsx} +59 -65
  130. package/src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx +9 -52
  131. package/src/components/source-search-box/source-search-box.tsx +7 -10
  132. package/src/components/ui/command.tsx +1 -1
  133. package/src/lib/stream-promise-flatten.ts +25 -0
  134. package/dist/chunk-2NURR2DX.mjs +0 -47
  135. package/dist/chunk-2NURR2DX.mjs.map +0 -1
  136. package/dist/chunk-3YJ63D5D.mjs +0 -106
  137. package/dist/chunk-3YJ63D5D.mjs.map +0 -1
  138. package/dist/chunk-4S5ZJH3I.mjs +0 -18
  139. package/dist/chunk-4S5ZJH3I.mjs.map +0 -1
  140. package/dist/chunk-55EGOC5T.mjs +0 -87
  141. package/dist/chunk-55EGOC5T.mjs.map +0 -1
  142. package/dist/chunk-5ARCOTW3.mjs +0 -34
  143. package/dist/chunk-5ARCOTW3.mjs.map +0 -1
  144. package/dist/chunk-5EJ5XOGP.mjs +0 -22
  145. package/dist/chunk-5EJ5XOGP.mjs.map +0 -1
  146. package/dist/chunk-5FO6ISW4.mjs +0 -3
  147. package/dist/chunk-5FO6ISW4.mjs.map +0 -1
  148. package/dist/chunk-7SMDOAG2.mjs +0 -201
  149. package/dist/chunk-7SMDOAG2.mjs.map +0 -1
  150. package/dist/chunk-A2RRLD23.mjs +0 -69
  151. package/dist/chunk-A2RRLD23.mjs.map +0 -1
  152. package/dist/chunk-CDB7HFCY.mjs +0 -65
  153. package/dist/chunk-CDB7HFCY.mjs.map +0 -1
  154. package/dist/chunk-CSGFJU3L.mjs +0 -65
  155. package/dist/chunk-CSGFJU3L.mjs.map +0 -1
  156. package/dist/chunk-D7SEV5PR.mjs +0 -12
  157. package/dist/chunk-D7SEV5PR.mjs.map +0 -1
  158. package/dist/chunk-DE5K76I2.mjs +0 -3
  159. package/dist/chunk-DE5K76I2.mjs.map +0 -1
  160. package/dist/chunk-F3MHL6ZY.mjs +0 -25
  161. package/dist/chunk-F3MHL6ZY.mjs.map +0 -1
  162. package/dist/chunk-H4VKQGVU.mjs +0 -3
  163. package/dist/chunk-H4VKQGVU.mjs.map +0 -1
  164. package/dist/chunk-HAFHLU4N.mjs +0 -55
  165. package/dist/chunk-HAFHLU4N.mjs.map +0 -1
  166. package/dist/chunk-ITZHK3YV.mjs.map +0 -1
  167. package/dist/chunk-IU3WTXLQ.mjs +0 -3
  168. package/dist/chunk-IU3WTXLQ.mjs.map +0 -1
  169. package/dist/chunk-IXJ2HCOA.mjs +0 -101
  170. package/dist/chunk-IXJ2HCOA.mjs.map +0 -1
  171. package/dist/chunk-JAFCXEPU.mjs +0 -10
  172. package/dist/chunk-JAFCXEPU.mjs.map +0 -1
  173. package/dist/chunk-KCHYD3EB.mjs +0 -107
  174. package/dist/chunk-KCHYD3EB.mjs.map +0 -1
  175. package/dist/chunk-KGKLUWKW.mjs +0 -47
  176. package/dist/chunk-KGKLUWKW.mjs.map +0 -1
  177. package/dist/chunk-L7VVZH4Q.mjs +0 -3
  178. package/dist/chunk-L7VVZH4Q.mjs.map +0 -1
  179. package/dist/chunk-LNAIMEB2.mjs +0 -34
  180. package/dist/chunk-LNAIMEB2.mjs.map +0 -1
  181. package/dist/chunk-MMVDU6DF.mjs +0 -3
  182. package/dist/chunk-MMVDU6DF.mjs.map +0 -1
  183. package/dist/chunk-MPME5BW2.mjs +0 -59
  184. package/dist/chunk-MPME5BW2.mjs.map +0 -1
  185. package/dist/chunk-MRXNTQOX.mjs +0 -55
  186. package/dist/chunk-MRXNTQOX.mjs.map +0 -1
  187. package/dist/chunk-ND5PXTAW.mjs +0 -17
  188. package/dist/chunk-ND5PXTAW.mjs.map +0 -1
  189. package/dist/chunk-NKW5OU2S.mjs +0 -33
  190. package/dist/chunk-NKW5OU2S.mjs.map +0 -1
  191. package/dist/chunk-O5OWT5GE.mjs +0 -114
  192. package/dist/chunk-O5OWT5GE.mjs.map +0 -1
  193. package/dist/chunk-OD7ZMOVE.mjs +0 -45
  194. package/dist/chunk-OD7ZMOVE.mjs.map +0 -1
  195. package/dist/chunk-OELUUJZY.mjs +0 -16
  196. package/dist/chunk-OELUUJZY.mjs.map +0 -1
  197. package/dist/chunk-OM5WQQOU.mjs +0 -47
  198. package/dist/chunk-OM5WQQOU.mjs.map +0 -1
  199. package/dist/chunk-PF3XRNDB.mjs +0 -44
  200. package/dist/chunk-PF3XRNDB.mjs.map +0 -1
  201. package/dist/chunk-QL2GYGG5.mjs +0 -19
  202. package/dist/chunk-QL2GYGG5.mjs.map +0 -1
  203. package/dist/chunk-RPDVSCLO.mjs +0 -107
  204. package/dist/chunk-RPDVSCLO.mjs.map +0 -1
  205. package/dist/chunk-RQHOUUXQ.mjs +0 -29
  206. package/dist/chunk-RQHOUUXQ.mjs.map +0 -1
  207. package/dist/chunk-UHD44NC5.mjs +0 -101
  208. package/dist/chunk-UHD44NC5.mjs.map +0 -1
  209. package/dist/chunk-VBIJPE3H.mjs +0 -108
  210. package/dist/chunk-VBIJPE3H.mjs.map +0 -1
  211. package/dist/chunk-WADHCMPK.mjs +0 -3
  212. package/dist/chunk-WADHCMPK.mjs.map +0 -1
  213. package/dist/chunk-WJHSY5T6.mjs +0 -3
  214. package/dist/chunk-WJHSY5T6.mjs.map +0 -1
  215. package/dist/chunk-WJYQWL4I.mjs +0 -27
  216. package/dist/chunk-WJYQWL4I.mjs.map +0 -1
  217. package/dist/chunk-XDT7BF3V.mjs +0 -81
  218. package/dist/chunk-XDT7BF3V.mjs.map +0 -1
  219. package/dist/chunk-XHUMROEY.mjs +0 -91
  220. package/dist/chunk-XHUMROEY.mjs.map +0 -1
  221. package/dist/chunk-YQU7WG7T.mjs +0 -83
  222. package/dist/chunk-YQU7WG7T.mjs.map +0 -1
  223. package/dist/chunk-YTOPHPSG.mjs +0 -45
  224. package/dist/chunk-YTOPHPSG.mjs.map +0 -1
  225. package/dist/chunk-YW3REYX6.mjs +0 -23
  226. package/dist/chunk-YW3REYX6.mjs.map +0 -1
  227. package/dist/components/hovering-toolbar/text-insertion-prompt-box/mode-pre-suggestion.d.ts +0 -16
  228. package/dist/components/hovering-toolbar/text-insertion-prompt-box/mode-pre-suggestion.mjs +0 -5
  229. package/dist/components/hovering-toolbar/text-insertion-prompt-box/mode-pre-suggestion.mjs.map +0 -1
  230. package/dist/components/hovering-toolbar/text-insertion-prompt-box/mode-suggestion-appearing.mjs +0 -10
  231. package/dist/components/hovering-toolbar/text-insertion-prompt-box/mode-suggestion-appearing.mjs.map +0 -1
  232. package/src/components/hovering-toolbar/text-insertion-prompt-box/mode-pre-suggestion.tsx +0 -83
@@ -1,83 +0,0 @@
1
- import { replaceEditorText } from './chunk-RQHOUUXQ.mjs';
2
- import { getFullEditorTextWithNewlines } from './chunk-IXJ2HCOA.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-YQU7WG7T.mjs.map
@@ -1 +0,0 @@
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,45 +0,0 @@
1
- import { Element } from 'slate';
2
-
3
- // src/lib/editor-to-text.ts
4
- function nodeChildrenToTextComponents(editor, nodes) {
5
- const indeciesOfInlineElements = new Set(
6
- nodes.map((node, index) => {
7
- if (Element.isElement(node) && editor.isInline(node)) {
8
- return index;
9
- }
10
- return -1;
11
- }).filter((index) => index !== -1)
12
- );
13
- const nonIgnorableItems = nodes.filter((node, index) => {
14
- const isInline = indeciesOfInlineElements.has(index);
15
- if (isInline) {
16
- return false;
17
- }
18
- const isNeighbourOfInline = indeciesOfInlineElements.has(index - 1) || indeciesOfInlineElements.has(index + 1);
19
- if (isNeighbourOfInline) {
20
- return node.text !== "";
21
- }
22
- return true;
23
- });
24
- return nonIgnorableItems.map((node) => {
25
- if (Element.isElement(node)) {
26
- switch (node.type) {
27
- case "paragraph":
28
- return nodeChildrenToTextComponents(editor, node.children);
29
- case "suggestion":
30
- return [];
31
- }
32
- } else {
33
- return [node];
34
- }
35
- }).reduce((acc, val) => acc.concat(val), []);
36
- }
37
- var editorToText = (editor) => {
38
- const flattened = nodeChildrenToTextComponents(editor, editor.children);
39
- const text = flattened.map((textComponent) => textComponent.text).join("\n");
40
- return text;
41
- };
42
-
43
- export { editorToText };
44
- //# sourceMappingURL=out.js.map
45
- //# sourceMappingURL=chunk-YTOPHPSG.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/editor-to-text.ts"],"names":[],"mappings":";AAAA,SAAiC,eAAe;AAKhD,SAAS,6BACP,QACA,OACuB;AAEvB,QAAM,2BAA2B,IAAI;AAAA,IACnC,MACG,IAAI,CAAC,MAAM,UAAU;AACpB,UAAI,QAAQ,UAAU,IAAI,KAAK,OAAO,SAAS,IAAI,GAAG;AACpD,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC,EACA,OAAO,CAAC,UAAU,UAAU,EAAE;AAAA,EACnC;AAIA,QAAM,oBAAoB,MAAM,OAAO,CAAC,MAAM,UAAU;AACtD,UAAM,WAAW,yBAAyB,IAAI,KAAK;AACnD,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAEA,UAAM,sBACJ,yBAAyB,IAAI,QAAQ,CAAC,KACtC,yBAAyB,IAAI,QAAQ,CAAC;AACxC,QAAI,qBAAqB;AACvB,aAAQ,KAAa,SAAS;AAAA,IAChC;AAEA,WAAO;AAAA,EACT,CAAC;AAED,SAAO,kBACJ,IAAI,CAAC,SAAS;AACb,QAAI,QAAQ,UAAU,IAAI,GAAG;AAC3B,cAAQ,KAAK,MAAM;AAAA,QACjB,KAAK;AACH,iBAAO,6BAA6B,QAAQ,KAAK,QAAQ;AAAA,QAC3D,KAAK;AACH,iBAAO,CAAC;AAAA,MACZ;AAAA,IACF,OAAO;AACL,aAAO,CAAC,IAAI;AAAA,IACd;AAAA,EACF,CAAC,EACA,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC;AAC7C;AAEO,IAAM,eAAe,CAC1B,WACG;AACH,QAAM,YAAY,6BAA6B,QAAQ,OAAO,QAAQ;AAEtE,QAAM,OAAO,UAAU,IAAI,CAAC,kBAAkB,cAAc,IAAI,EAAE,KAAK,IAAI;AAE3E,SAAO;AACT","sourcesContent":["import { BaseEditor, Descendant, Element } from \"slate\";\nimport { HistoryEditor } from \"slate-history\";\nimport { ReactEditor } from \"slate-react\";\nimport { SuggestionAwareText } from \"../types/base/custom-editor\";\n\nfunction nodeChildrenToTextComponents(\n editor: BaseEditor & ReactEditor & HistoryEditor,\n nodes: Descendant[]\n): SuggestionAwareText[] {\n // find inlineable elements\n const indeciesOfInlineElements = new Set(\n nodes\n .map((node, index) => {\n if (Element.isElement(node) && editor.isInline(node)) {\n return index;\n }\n return -1;\n })\n .filter((index) => index !== -1)\n );\n\n // ignorable elements = inline elements,\n // or neighbors of inline elements that are {text: \"\"}\n const nonIgnorableItems = nodes.filter((node, index) => {\n const isInline = indeciesOfInlineElements.has(index);\n if (isInline) {\n return false;\n }\n\n const isNeighbourOfInline =\n indeciesOfInlineElements.has(index - 1) ||\n indeciesOfInlineElements.has(index + 1);\n if (isNeighbourOfInline) {\n return (node as any).text !== \"\";\n }\n\n return true;\n });\n\n return nonIgnorableItems\n .map((node) => {\n if (Element.isElement(node)) {\n switch (node.type) {\n case \"paragraph\":\n return nodeChildrenToTextComponents(editor, node.children);\n case \"suggestion\":\n return [];\n }\n } else {\n return [node];\n }\n })\n .reduce((acc, val) => acc.concat(val), []);\n}\n\nexport const editorToText = (\n editor: BaseEditor & ReactEditor & HistoryEditor\n) => {\n const flattened = nodeChildrenToTextComponents(editor, editor.children);\n\n const text = flattened.map((textComponent) => textComponent.text).join(\"\\n\");\n\n return text;\n};\n"]}
@@ -1,23 +0,0 @@
1
- import { createContext, useState, useContext } from 'react';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- // src/components/hovering-toolbar/hovering-editor-provider.tsx
5
- var HoveringEditorContext = createContext({
6
- isDisplayed: false,
7
- setIsDisplayed: () => {
8
- }
9
- });
10
- var HoveringEditorProvider = ({
11
- children
12
- }) => {
13
- const [isDisplayed, setIsDisplayed] = useState(false);
14
- return /* @__PURE__ */ jsx(HoveringEditorContext.Provider, {
15
- value: { isDisplayed, setIsDisplayed },
16
- children
17
- });
18
- };
19
- var useHoveringEditorContext = () => useContext(HoveringEditorContext);
20
-
21
- export { HoveringEditorProvider, useHoveringEditorContext };
22
- //# sourceMappingURL=out.js.map
23
- //# sourceMappingURL=chunk-YW3REYX6.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/hovering-toolbar/hovering-editor-provider.tsx"],"names":[],"mappings":";AAAA,SAAgB,eAAe,UAAU,kBAA6B;AAsBlE;AAfJ,IAAM,wBAAwB,cAA0C;AAAA,EACtE,aAAa;AAAA,EACb,gBAAgB,MAAM;AAAA,EAAC;AACzB,CAAC;AAMM,IAAM,yBAAyB,CAAC;AAAA,EACrC;AACF,MAAmC;AACjC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AAEpD,SACE,oBAAC,sBAAsB,UAAtB;AAAA,IAA+B,OAAO,EAAE,aAAa,eAAe;AAAA,IAClE;AAAA,GACH;AAEJ;AAEO,IAAM,2BAA2B,MAAM,WAAW,qBAAqB","sourcesContent":["import React, { createContext, useState, useContext, ReactNode } from \"react\";\n\ninterface HoveringEditorContextProps {\n isDisplayed: boolean;\n setIsDisplayed: (value: boolean) => void;\n}\n\nconst HoveringEditorContext = createContext<HoveringEditorContextProps>({\n isDisplayed: false,\n setIsDisplayed: () => {},\n});\n\ninterface HoveringEditorProviderProps {\n children: ReactNode;\n}\n\nexport const HoveringEditorProvider = ({\n children,\n}: HoveringEditorProviderProps) => {\n const [isDisplayed, setIsDisplayed] = useState(false);\n\n return (\n <HoveringEditorContext.Provider value={{ isDisplayed, setIsDisplayed }}>\n {children}\n </HoveringEditorContext.Provider>\n );\n};\n\nexport const useHoveringEditorContext = () => useContext(HoveringEditorContext);\n"]}
@@ -1,16 +0,0 @@
1
- import React__default from 'react';
2
- import { EditingEditorState, Generator_InsertionOrEditingSuggestion } from '../../../types/base/autosuggestions-bare-function.js';
3
-
4
- type State_PreSuggestion = {
5
- type: "pre-suggestion";
6
- };
7
- interface PreSuggestionProps {
8
- editorState: EditingEditorState;
9
- insertionOrEditingFunction: Generator_InsertionOrEditingSuggestion;
10
- onGeneratedText: (generatedText: ReadableStream<string>) => void;
11
- insertionOrEditingPrompt: string;
12
- setInsertionOrEditingPrompt: (value: string) => void;
13
- }
14
- declare const PreSuggestion: React__default.FC<PreSuggestionProps>;
15
-
16
- export { PreSuggestion, PreSuggestionProps, State_PreSuggestion };
@@ -1,5 +0,0 @@
1
- export { PreSuggestion } from '../../../chunk-CDB7HFCY.mjs';
2
- import '../../../chunk-ND5PXTAW.mjs';
3
- import '../../../chunk-MRXNTQOX.mjs';
4
- //# sourceMappingURL=out.js.map
5
- //# sourceMappingURL=mode-pre-suggestion.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- export { FileChipPreview, IconForFilePointer, IncludedFilesPreview, SuggestionAppearing } from '../../../chunk-ITZHK3YV.mjs';
2
- import '../../../chunk-ND5PXTAW.mjs';
3
- import '../../../chunk-3YJ63D5D.mjs';
4
- import '../../../chunk-O5OWT5GE.mjs';
5
- import '../../../chunk-5EJ5XOGP.mjs';
6
- import '../../../chunk-2NURR2DX.mjs';
7
- import '../../../chunk-KGKLUWKW.mjs';
8
- import '../../../chunk-MRXNTQOX.mjs';
9
- //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=mode-suggestion-appearing.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1,83 +0,0 @@
1
- import useAutosizeTextArea from "../../../hooks/misc/use-autosize-textarea";
2
- import React, { useEffect, useRef, useState } from "react";
3
- import {
4
- EditingEditorState,
5
- Generator_InsertionOrEditingSuggestion,
6
- } from "../../../types/base/autosuggestions-bare-function";
7
-
8
- export type State_PreSuggestion = {
9
- type: "pre-suggestion";
10
- };
11
-
12
- export interface PreSuggestionProps {
13
- editorState: EditingEditorState;
14
- insertionOrEditingFunction: Generator_InsertionOrEditingSuggestion;
15
- onGeneratedText: (generatedText: ReadableStream<string>) => void;
16
-
17
- insertionOrEditingPrompt: string;
18
- setInsertionOrEditingPrompt: (value: string) => void;
19
- }
20
-
21
- export const PreSuggestion: React.FC<PreSuggestionProps> = ({
22
- editorState,
23
- insertionOrEditingFunction: insertionSuggestion,
24
- onGeneratedText,
25
- insertionOrEditingPrompt: insertionPrompt,
26
- setInsertionOrEditingPrompt: setInsertionPrompt,
27
- }) => {
28
- const [loading, setLoading] = useState(false);
29
-
30
- const promptTextAreaRef = useRef<HTMLTextAreaElement>(null);
31
- useAutosizeTextArea(promptTextAreaRef, insertionPrompt);
32
-
33
- // initially focus on the prompt text area
34
- useEffect(() => {
35
- promptTextAreaRef.current?.focus();
36
- }, []);
37
-
38
- const generateText = async (abortSignal?: AbortSignal) => {
39
- // don't generate text if the prompt is empty
40
- if (!insertionPrompt.trim()) {
41
- return;
42
- }
43
-
44
- setLoading(true);
45
- const insertionSuggestionTextStream = await insertionSuggestion(
46
- editorState,
47
- insertionPrompt,
48
- abortSignal || new AbortController().signal
49
- );
50
- onGeneratedText(insertionSuggestionTextStream);
51
-
52
- setLoading(false);
53
- };
54
-
55
- return (
56
- <div className="flex flex-col justify-center items-start gap-2">
57
- <textarea
58
- ref={promptTextAreaRef}
59
- value={insertionPrompt}
60
- onChange={(e) => setInsertionPrompt(e.target.value)}
61
- onKeyDown={(e) => {
62
- if (e.key === "Enter" && e.shiftKey) {
63
- e.preventDefault();
64
- setInsertionPrompt(insertionPrompt + "\n");
65
- } else if (e.key === "Enter") {
66
- e.preventDefault();
67
- generateText();
68
- }
69
- }}
70
- placeholder="Describe the text you'd like to insert..."
71
- className="w-full bg-slate-100 h-auto text-sm p-2 rounded-md resize-none overflow-visible focus:outline-none focus:ring-0 focus:border-none"
72
- rows={1}
73
- />
74
- <button
75
- disabled={loading || !insertionPrompt.trim()}
76
- onClick={() => generateText()}
77
- className="w-full py-2 px-4 rounded-md text-white bg-blue-500 hover:bg-blue-700 disabled:bg-gray-400 disabled:cursor-not-allowed"
78
- >
79
- {loading ? "Loading..." : "Generate Text"}
80
- </button>
81
- </div>
82
- );
83
- };