@copilotkit/react-textarea 0.0.0-0.0.0-max-changeset-10101010101010-20260109191632

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 (447) hide show
  1. package/CHANGELOG.md +4665 -0
  2. package/LICENSE +21 -0
  3. package/README.md +141 -0
  4. package/dist/chunk-23Q6A46J.mjs +103 -0
  5. package/dist/chunk-23Q6A46J.mjs.map +1 -0
  6. package/dist/chunk-2C7O2EVM.mjs +27 -0
  7. package/dist/chunk-2C7O2EVM.mjs.map +1 -0
  8. package/dist/chunk-2IWVZ4PP.mjs +103 -0
  9. package/dist/chunk-2IWVZ4PP.mjs.map +1 -0
  10. package/dist/chunk-2QDCE7PD.mjs +32 -0
  11. package/dist/chunk-2QDCE7PD.mjs.map +1 -0
  12. package/dist/chunk-3QJOFG3V.mjs +25 -0
  13. package/dist/chunk-3QJOFG3V.mjs.map +1 -0
  14. package/dist/chunk-4NHVQZ67.mjs +108 -0
  15. package/dist/chunk-4NHVQZ67.mjs.map +1 -0
  16. package/dist/chunk-4PDYALMP.mjs +52 -0
  17. package/dist/chunk-4PDYALMP.mjs.map +1 -0
  18. package/dist/chunk-5GYFXESG.mjs +31 -0
  19. package/dist/chunk-5GYFXESG.mjs.map +1 -0
  20. package/dist/chunk-5UNJXFUO.mjs +29 -0
  21. package/dist/chunk-5UNJXFUO.mjs.map +1 -0
  22. package/dist/chunk-63LEUA5A.mjs +269 -0
  23. package/dist/chunk-63LEUA5A.mjs.map +1 -0
  24. package/dist/chunk-65XYKSXZ.mjs +226 -0
  25. package/dist/chunk-65XYKSXZ.mjs.map +1 -0
  26. package/dist/chunk-6SGWO63I.mjs +32 -0
  27. package/dist/chunk-6SGWO63I.mjs.map +1 -0
  28. package/dist/chunk-7LSRNPNI.mjs +59 -0
  29. package/dist/chunk-7LSRNPNI.mjs.map +1 -0
  30. package/dist/chunk-AJ5OMEXM.mjs +13 -0
  31. package/dist/chunk-AJ5OMEXM.mjs.map +1 -0
  32. package/dist/chunk-D47EKHIF.mjs +26 -0
  33. package/dist/chunk-D47EKHIF.mjs.map +1 -0
  34. package/dist/chunk-DE5K76I2.mjs +1 -0
  35. package/dist/chunk-DE5K76I2.mjs.map +1 -0
  36. package/dist/chunk-DFTV4TST.mjs +36 -0
  37. package/dist/chunk-DFTV4TST.mjs.map +1 -0
  38. package/dist/chunk-DL3JWL2E.mjs +170 -0
  39. package/dist/chunk-DL3JWL2E.mjs.map +1 -0
  40. package/dist/chunk-DRV2FOHZ.mjs +70 -0
  41. package/dist/chunk-DRV2FOHZ.mjs.map +1 -0
  42. package/dist/chunk-ECR45NSD.mjs +104 -0
  43. package/dist/chunk-ECR45NSD.mjs.map +1 -0
  44. package/dist/chunk-EJGGLWWR.mjs +82 -0
  45. package/dist/chunk-EJGGLWWR.mjs.map +1 -0
  46. package/dist/chunk-F2ULK22F.mjs +39 -0
  47. package/dist/chunk-F2ULK22F.mjs.map +1 -0
  48. package/dist/chunk-F6RLSVG3.mjs +30 -0
  49. package/dist/chunk-F6RLSVG3.mjs.map +1 -0
  50. package/dist/chunk-GQN2HYFJ.mjs +22 -0
  51. package/dist/chunk-GQN2HYFJ.mjs.map +1 -0
  52. package/dist/chunk-H4VKQGVU.mjs +1 -0
  53. package/dist/chunk-H4VKQGVU.mjs.map +1 -0
  54. package/dist/chunk-I72DKFHD.mjs +114 -0
  55. package/dist/chunk-I72DKFHD.mjs.map +1 -0
  56. package/dist/chunk-IU3WTXLQ.mjs +1 -0
  57. package/dist/chunk-IU3WTXLQ.mjs.map +1 -0
  58. package/dist/chunk-JLOABKLH.mjs +49 -0
  59. package/dist/chunk-JLOABKLH.mjs.map +1 -0
  60. package/dist/chunk-KMVGEY7Q.mjs +51 -0
  61. package/dist/chunk-KMVGEY7Q.mjs.map +1 -0
  62. package/dist/chunk-KNQIEOFP.mjs +19 -0
  63. package/dist/chunk-KNQIEOFP.mjs.map +1 -0
  64. package/dist/chunk-L7VVZH4Q.mjs +1 -0
  65. package/dist/chunk-L7VVZH4Q.mjs.map +1 -0
  66. package/dist/chunk-LYB4B6MK.mjs +19 -0
  67. package/dist/chunk-LYB4B6MK.mjs.map +1 -0
  68. package/dist/chunk-MCNXIA4Q.mjs +75 -0
  69. package/dist/chunk-MCNXIA4Q.mjs.map +1 -0
  70. package/dist/chunk-MMVDU6DF.mjs +1 -0
  71. package/dist/chunk-MMVDU6DF.mjs.map +1 -0
  72. package/dist/chunk-MRXNTQOX.mjs +59 -0
  73. package/dist/chunk-MRXNTQOX.mjs.map +1 -0
  74. package/dist/chunk-NAFNY4FL.mjs +17 -0
  75. package/dist/chunk-NAFNY4FL.mjs.map +1 -0
  76. package/dist/chunk-QFXR6DOA.mjs +64 -0
  77. package/dist/chunk-QFXR6DOA.mjs.map +1 -0
  78. package/dist/chunk-QJNFNPWH.mjs +85 -0
  79. package/dist/chunk-QJNFNPWH.mjs.map +1 -0
  80. package/dist/chunk-RUV6NBIF.mjs +1 -0
  81. package/dist/chunk-RUV6NBIF.mjs.map +1 -0
  82. package/dist/chunk-T4HVUB4T.mjs +60 -0
  83. package/dist/chunk-T4HVUB4T.mjs.map +1 -0
  84. package/dist/chunk-T6MTDQZ7.mjs +45 -0
  85. package/dist/chunk-T6MTDQZ7.mjs.map +1 -0
  86. package/dist/chunk-VSVQZUPW.mjs +124 -0
  87. package/dist/chunk-VSVQZUPW.mjs.map +1 -0
  88. package/dist/chunk-WADHCMPK.mjs +1 -0
  89. package/dist/chunk-WADHCMPK.mjs.map +1 -0
  90. package/dist/chunk-WGWQRALG.mjs +83 -0
  91. package/dist/chunk-WGWQRALG.mjs.map +1 -0
  92. package/dist/chunk-WJHSY5T6.mjs +1 -0
  93. package/dist/chunk-WJHSY5T6.mjs.map +1 -0
  94. package/dist/chunk-X2QR2YGZ.mjs +120 -0
  95. package/dist/chunk-X2QR2YGZ.mjs.map +1 -0
  96. package/dist/chunk-YLFAIYRY.mjs +50 -0
  97. package/dist/chunk-YLFAIYRY.mjs.map +1 -0
  98. package/dist/chunk-ZQSEYPNN.mjs +74 -0
  99. package/dist/chunk-ZQSEYPNN.mjs.map +1 -0
  100. package/dist/components/base-copilot-textarea/base-copilot-textarea.css +9 -0
  101. package/dist/components/base-copilot-textarea/base-copilot-textarea.css.map +1 -0
  102. package/dist/components/base-copilot-textarea/base-copilot-textarea.d.ts +43 -0
  103. package/dist/components/base-copilot-textarea/base-copilot-textarea.js +1781 -0
  104. package/dist/components/base-copilot-textarea/base-copilot-textarea.js.map +1 -0
  105. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +40 -0
  106. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map +1 -0
  107. package/dist/components/base-copilot-textarea/render-element.d.ts +7 -0
  108. package/dist/components/base-copilot-textarea/render-element.js +75 -0
  109. package/dist/components/base-copilot-textarea/render-element.js.map +1 -0
  110. package/dist/components/base-copilot-textarea/render-element.mjs +8 -0
  111. package/dist/components/base-copilot-textarea/render-element.mjs.map +1 -0
  112. package/dist/components/base-copilot-textarea/render-placeholder.d.ts +7 -0
  113. package/dist/components/base-copilot-textarea/render-placeholder.js +72 -0
  114. package/dist/components/base-copilot-textarea/render-placeholder.js.map +1 -0
  115. package/dist/components/base-copilot-textarea/render-placeholder.mjs +8 -0
  116. package/dist/components/base-copilot-textarea/render-placeholder.mjs.map +1 -0
  117. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.d.ts +8 -0
  118. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.js +112 -0
  119. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.js.map +1 -0
  120. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs +9 -0
  121. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs.map +1 -0
  122. package/dist/components/base-copilot-textarea/use-add-branding-css.d.ts +3 -0
  123. package/dist/components/base-copilot-textarea/use-add-branding-css.js +83 -0
  124. package/dist/components/base-copilot-textarea/use-add-branding-css.js.map +1 -0
  125. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs +8 -0
  126. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs.map +1 -0
  127. package/dist/components/copilot-textarea/copilot-textarea.css +9 -0
  128. package/dist/components/copilot-textarea/copilot-textarea.css.map +1 -0
  129. package/dist/components/copilot-textarea/copilot-textarea.d.ts +171 -0
  130. package/dist/components/copilot-textarea/copilot-textarea.js +2261 -0
  131. package/dist/components/copilot-textarea/copilot-textarea.js.map +1 -0
  132. package/dist/components/copilot-textarea/copilot-textarea.mjs +49 -0
  133. package/dist/components/copilot-textarea/copilot-textarea.mjs.map +1 -0
  134. package/dist/components/hovering-toolbar/hovering-editor-provider.d.ts +18 -0
  135. package/dist/components/hovering-toolbar/hovering-editor-provider.js +44 -0
  136. package/dist/components/hovering-toolbar/hovering-editor-provider.js.map +1 -0
  137. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs +10 -0
  138. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs.map +1 -0
  139. package/dist/components/hovering-toolbar/hovering-toolbar-components.d.ts +18 -0
  140. package/dist/components/hovering-toolbar/hovering-toolbar-components.js +164 -0
  141. package/dist/components/hovering-toolbar/hovering-toolbar-components.js.map +1 -0
  142. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs +16 -0
  143. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs.map +1 -0
  144. package/dist/components/hovering-toolbar/hovering-toolbar.d.ts +12 -0
  145. package/dist/components/hovering-toolbar/hovering-toolbar.js +894 -0
  146. package/dist/components/hovering-toolbar/hovering-toolbar.js.map +1 -0
  147. package/dist/components/hovering-toolbar/hovering-toolbar.mjs +23 -0
  148. package/dist/components/hovering-toolbar/hovering-toolbar.mjs.map +1 -0
  149. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.d.ts +16 -0
  150. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js +603 -0
  151. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js.map +1 -0
  152. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs +18 -0
  153. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs.map +1 -0
  154. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.d.ts +13 -0
  155. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js +626 -0
  156. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js.map +1 -0
  157. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs +19 -0
  158. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs.map +1 -0
  159. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.d.ts +16 -0
  160. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.js +133 -0
  161. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.js.map +1 -0
  162. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs +12 -0
  163. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs.map +1 -0
  164. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.d.ts +4 -0
  165. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js +626 -0
  166. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js.map +1 -0
  167. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs +20 -0
  168. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs.map +1 -0
  169. package/dist/components/index.css +9 -0
  170. package/dist/components/index.css.map +1 -0
  171. package/dist/components/index.d.ts +15 -0
  172. package/dist/components/index.js +2265 -0
  173. package/dist/components/index.js.map +1 -0
  174. package/dist/components/index.mjs +53 -0
  175. package/dist/components/index.mjs.map +1 -0
  176. package/dist/components/manual-ui/chip-with-icon.d.ts +10 -0
  177. package/dist/components/manual-ui/chip-with-icon.js +38 -0
  178. package/dist/components/manual-ui/chip-with-icon.js.map +1 -0
  179. package/dist/components/manual-ui/chip-with-icon.mjs +15 -0
  180. package/dist/components/manual-ui/chip-with-icon.mjs.map +1 -0
  181. package/dist/components/source-search-box/source-search-box.d.ts +16 -0
  182. package/dist/components/source-search-box/source-search-box.js +240 -0
  183. package/dist/components/source-search-box/source-search-box.js.map +1 -0
  184. package/dist/components/source-search-box/source-search-box.mjs +13 -0
  185. package/dist/components/source-search-box/source-search-box.mjs.map +1 -0
  186. package/dist/components/ui/button.d.ts +14 -0
  187. package/dist/components/ui/button.js +114 -0
  188. package/dist/components/ui/button.js.map +1 -0
  189. package/dist/components/ui/button.mjs +11 -0
  190. package/dist/components/ui/button.mjs.map +1 -0
  191. package/dist/components/ui/command.d.ts +53 -0
  192. package/dist/components/ui/command.js +285 -0
  193. package/dist/components/ui/command.js.map +1 -0
  194. package/dist/components/ui/command.mjs +26 -0
  195. package/dist/components/ui/command.mjs.map +1 -0
  196. package/dist/components/ui/dialog.d.ts +19 -0
  197. package/dist/components/ui/dialog.js +183 -0
  198. package/dist/components/ui/dialog.js.map +1 -0
  199. package/dist/components/ui/dialog.mjs +21 -0
  200. package/dist/components/ui/dialog.mjs.map +1 -0
  201. package/dist/components/ui/label.d.ts +8 -0
  202. package/dist/components/ui/label.js +87 -0
  203. package/dist/components/ui/label.js.map +1 -0
  204. package/dist/components/ui/label.mjs +9 -0
  205. package/dist/components/ui/label.mjs.map +1 -0
  206. package/dist/context/index.d.ts +2 -0
  207. package/dist/context/index.js +19 -0
  208. package/dist/context/index.js.map +1 -0
  209. package/dist/context/index.mjs +2 -0
  210. package/dist/context/index.mjs.map +1 -0
  211. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.d.ts +15 -0
  212. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.js +180 -0
  213. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.js.map +1 -0
  214. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs +11 -0
  215. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs.map +1 -0
  216. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.d.ts +8 -0
  217. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.js +194 -0
  218. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.js.map +1 -0
  219. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs +9 -0
  220. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs.map +1 -0
  221. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.d.ts +7 -0
  222. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.js +180 -0
  223. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.js.map +1 -0
  224. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs +10 -0
  225. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs.map +1 -0
  226. package/dist/hooks/index.d.ts +2 -0
  227. package/dist/hooks/index.js +19 -0
  228. package/dist/hooks/index.js.map +1 -0
  229. package/dist/hooks/index.mjs +2 -0
  230. package/dist/hooks/index.mjs.map +1 -0
  231. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.d.ts +22 -0
  232. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.js +137 -0
  233. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.js.map +1 -0
  234. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs +9 -0
  235. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs.map +1 -0
  236. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.d.ts +23 -0
  237. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.js +230 -0
  238. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.js.map +1 -0
  239. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs +9 -0
  240. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs.map +1 -0
  241. package/dist/hooks/misc/use-autosize-textarea.d.ts +5 -0
  242. package/dist/hooks/misc/use-autosize-textarea.js +37 -0
  243. package/dist/hooks/misc/use-autosize-textarea.js.map +1 -0
  244. package/dist/hooks/misc/use-autosize-textarea.mjs +8 -0
  245. package/dist/hooks/misc/use-autosize-textarea.mjs.map +1 -0
  246. package/dist/index.css +643 -0
  247. package/dist/index.css.map +1 -0
  248. package/dist/index.d.ts +15 -0
  249. package/dist/index.js +2270 -0
  250. package/dist/index.js.map +1 -0
  251. package/dist/index.mjs +64 -0
  252. package/dist/index.mjs.map +1 -0
  253. package/dist/lib/debouncer.d.ts +11 -0
  254. package/dist/lib/debouncer.js +76 -0
  255. package/dist/lib/debouncer.js.map +1 -0
  256. package/dist/lib/debouncer.mjs +8 -0
  257. package/dist/lib/debouncer.mjs.map +1 -0
  258. package/dist/lib/editor-to-text.d.ts +7 -0
  259. package/dist/lib/editor-to-text.js +69 -0
  260. package/dist/lib/editor-to-text.js.map +1 -0
  261. package/dist/lib/editor-to-text.mjs +8 -0
  262. package/dist/lib/editor-to-text.mjs.map +1 -0
  263. package/dist/lib/get-text-around-cursor.d.ts +15 -0
  264. package/dist/lib/get-text-around-cursor.js +131 -0
  265. package/dist/lib/get-text-around-cursor.js.map +1 -0
  266. package/dist/lib/get-text-around-cursor.mjs +14 -0
  267. package/dist/lib/get-text-around-cursor.mjs.map +1 -0
  268. package/dist/lib/retry.d.ts +3 -0
  269. package/dist/lib/retry.js +43 -0
  270. package/dist/lib/retry.js.map +1 -0
  271. package/dist/lib/retry.mjs +8 -0
  272. package/dist/lib/retry.mjs.map +1 -0
  273. package/dist/lib/slatejs-edits/add-autocompletions.d.ts +8 -0
  274. package/dist/lib/slatejs-edits/add-autocompletions.js +51 -0
  275. package/dist/lib/slatejs-edits/add-autocompletions.js.map +1 -0
  276. package/dist/lib/slatejs-edits/add-autocompletions.mjs +8 -0
  277. package/dist/lib/slatejs-edits/add-autocompletions.mjs.map +1 -0
  278. package/dist/lib/slatejs-edits/clear-autocompletions.d.ts +8 -0
  279. package/dist/lib/slatejs-edits/clear-autocompletions.js +46 -0
  280. package/dist/lib/slatejs-edits/clear-autocompletions.js.map +1 -0
  281. package/dist/lib/slatejs-edits/clear-autocompletions.mjs +8 -0
  282. package/dist/lib/slatejs-edits/clear-autocompletions.mjs.map +1 -0
  283. package/dist/lib/slatejs-edits/replace-text.d.ts +5 -0
  284. package/dist/lib/slatejs-edits/replace-text.js +53 -0
  285. package/dist/lib/slatejs-edits/replace-text.js.map +1 -0
  286. package/dist/lib/slatejs-edits/replace-text.mjs +8 -0
  287. package/dist/lib/slatejs-edits/replace-text.mjs.map +1 -0
  288. package/dist/lib/slatejs-edits/with-partial-history.d.ts +8 -0
  289. package/dist/lib/slatejs-edits/with-partial-history.js +133 -0
  290. package/dist/lib/slatejs-edits/with-partial-history.js.map +1 -0
  291. package/dist/lib/slatejs-edits/with-partial-history.mjs +10 -0
  292. package/dist/lib/slatejs-edits/with-partial-history.mjs.map +1 -0
  293. package/dist/lib/stream-promise-flatten.d.ts +12 -0
  294. package/dist/lib/stream-promise-flatten.js +72 -0
  295. package/dist/lib/stream-promise-flatten.js.map +1 -0
  296. package/dist/lib/stream-promise-flatten.mjs +8 -0
  297. package/dist/lib/stream-promise-flatten.mjs.map +1 -0
  298. package/dist/lib/utils.d.ts +9 -0
  299. package/dist/lib/utils.js +94 -0
  300. package/dist/lib/utils.js.map +1 -0
  301. package/dist/lib/utils.mjs +16 -0
  302. package/dist/lib/utils.mjs.map +1 -0
  303. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.d.ts +23 -0
  304. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.js +19 -0
  305. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.js.map +1 -0
  306. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs +1 -0
  307. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs.map +1 -0
  308. package/dist/types/autosuggestions-config/autosuggestions-config.d.ts +20 -0
  309. package/dist/types/autosuggestions-config/autosuggestions-config.js +287 -0
  310. package/dist/types/autosuggestions-config/autosuggestions-config.js.map +1 -0
  311. package/dist/types/autosuggestions-config/autosuggestions-config.mjs +13 -0
  312. package/dist/types/autosuggestions-config/autosuggestions-config.mjs.map +1 -0
  313. package/dist/types/autosuggestions-config/editing-api-config.d.ts +15 -0
  314. package/dist/types/autosuggestions-config/editing-api-config.js +108 -0
  315. package/dist/types/autosuggestions-config/editing-api-config.js.map +1 -0
  316. package/dist/types/autosuggestions-config/editing-api-config.mjs +12 -0
  317. package/dist/types/autosuggestions-config/editing-api-config.mjs.map +1 -0
  318. package/dist/types/autosuggestions-config/index.d.ts +10 -0
  319. package/dist/types/autosuggestions-config/index.js +287 -0
  320. package/dist/types/autosuggestions-config/index.js.map +1 -0
  321. package/dist/types/autosuggestions-config/index.mjs +14 -0
  322. package/dist/types/autosuggestions-config/index.mjs.map +1 -0
  323. package/dist/types/autosuggestions-config/insertions-api-config.d.ts +15 -0
  324. package/dist/types/autosuggestions-config/insertions-api-config.js +101 -0
  325. package/dist/types/autosuggestions-config/insertions-api-config.js.map +1 -0
  326. package/dist/types/autosuggestions-config/insertions-api-config.mjs +12 -0
  327. package/dist/types/autosuggestions-config/insertions-api-config.mjs.map +1 -0
  328. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.d.ts +3 -0
  329. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.js +19 -0
  330. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.js.map +1 -0
  331. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs +1 -0
  332. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs.map +1 -0
  333. package/dist/types/autosuggestions-config/suggestions-api-config.d.ts +15 -0
  334. package/dist/types/autosuggestions-config/suggestions-api-config.js +90 -0
  335. package/dist/types/autosuggestions-config/suggestions-api-config.js.map +1 -0
  336. package/dist/types/autosuggestions-config/suggestions-api-config.mjs +12 -0
  337. package/dist/types/autosuggestions-config/suggestions-api-config.mjs.map +1 -0
  338. package/dist/types/base/autosuggestion-state.d.ts +8 -0
  339. package/dist/types/base/autosuggestion-state.js +19 -0
  340. package/dist/types/base/autosuggestion-state.js.map +1 -0
  341. package/dist/types/base/autosuggestion-state.mjs +1 -0
  342. package/dist/types/base/autosuggestion-state.mjs.map +1 -0
  343. package/dist/types/base/autosuggestions-bare-function.d.ts +19 -0
  344. package/dist/types/base/autosuggestions-bare-function.js +19 -0
  345. package/dist/types/base/autosuggestions-bare-function.js.map +1 -0
  346. package/dist/types/base/autosuggestions-bare-function.mjs +1 -0
  347. package/dist/types/base/autosuggestions-bare-function.mjs.map +1 -0
  348. package/dist/types/base/base-autosuggestions-config.d.ts +87 -0
  349. package/dist/types/base/base-autosuggestions-config.js +54 -0
  350. package/dist/types/base/base-autosuggestions-config.js.map +1 -0
  351. package/dist/types/base/base-autosuggestions-config.mjs +8 -0
  352. package/dist/types/base/base-autosuggestions-config.mjs.map +1 -0
  353. package/dist/types/base/base-copilot-textarea-props.d.ts +5 -0
  354. package/dist/types/base/base-copilot-textarea-props.js +19 -0
  355. package/dist/types/base/base-copilot-textarea-props.js.map +1 -0
  356. package/dist/types/base/base-copilot-textarea-props.mjs +1 -0
  357. package/dist/types/base/base-copilot-textarea-props.mjs.map +1 -0
  358. package/dist/types/base/custom-editor.d.ts +29 -0
  359. package/dist/types/base/custom-editor.js +19 -0
  360. package/dist/types/base/custom-editor.js.map +1 -0
  361. package/dist/types/base/custom-editor.mjs +1 -0
  362. package/dist/types/base/custom-editor.mjs.map +1 -0
  363. package/dist/types/base/editor-autocomplete-state.d.ts +10 -0
  364. package/dist/types/base/editor-autocomplete-state.js +40 -0
  365. package/dist/types/base/editor-autocomplete-state.js.map +1 -0
  366. package/dist/types/base/editor-autocomplete-state.mjs +9 -0
  367. package/dist/types/base/editor-autocomplete-state.mjs.map +1 -0
  368. package/dist/types/base/index.d.ts +54 -0
  369. package/dist/types/base/index.js +56 -0
  370. package/dist/types/base/index.js.map +1 -0
  371. package/dist/types/base/index.mjs +9 -0
  372. package/dist/types/base/index.mjs.map +1 -0
  373. package/dist/types/html-copilot-textarea-element.d.ts +7 -0
  374. package/dist/types/html-copilot-textarea-element.js +19 -0
  375. package/dist/types/html-copilot-textarea-element.js.map +1 -0
  376. package/dist/types/html-copilot-textarea-element.mjs +2 -0
  377. package/dist/types/html-copilot-textarea-element.mjs.map +1 -0
  378. package/dist/types/index.d.ts +13 -0
  379. package/dist/types/index.js +289 -0
  380. package/dist/types/index.js.map +1 -0
  381. package/dist/types/index.mjs +19 -0
  382. package/dist/types/index.mjs.map +1 -0
  383. package/jest.config.js +5 -0
  384. package/package.json +99 -0
  385. package/postcss.config.js +12 -0
  386. package/src/components/base-copilot-textarea/base-copilot-textarea.css +9 -0
  387. package/src/components/base-copilot-textarea/base-copilot-textarea.tsx +323 -0
  388. package/src/components/base-copilot-textarea/render-element.tsx +40 -0
  389. package/src/components/base-copilot-textarea/render-placeholder.tsx +24 -0
  390. package/src/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.tsx +80 -0
  391. package/src/components/base-copilot-textarea/use-add-branding-css.tsx +74 -0
  392. package/src/components/copilot-textarea/copilot-textarea.tsx +210 -0
  393. package/src/components/hovering-toolbar/hovering-editor-provider.tsx +31 -0
  394. package/src/components/hovering-toolbar/hovering-toolbar-components.tsx +88 -0
  395. package/src/components/hovering-toolbar/hovering-toolbar.tsx +154 -0
  396. package/src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx +273 -0
  397. package/src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx +30 -0
  398. package/src/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.tsx +55 -0
  399. package/src/components/hovering-toolbar/text-insertion-prompt-box/index.ts +2 -0
  400. package/src/components/index.ts +4 -0
  401. package/src/components/manual-ui/chip-with-icon.tsx +17 -0
  402. package/src/components/source-search-box/source-search-box.tsx +117 -0
  403. package/src/components/ui/button.tsx +49 -0
  404. package/src/components/ui/command.tsx +141 -0
  405. package/src/components/ui/dialog.tsx +107 -0
  406. package/src/components/ui/label.tsx +19 -0
  407. package/src/context/index.ts +1 -0
  408. package/src/hooks/base-copilot-textarea-implementation/use-autosuggestions.ts +142 -0
  409. package/src/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.tsx +100 -0
  410. package/src/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.ts +93 -0
  411. package/src/hooks/index.ts +1 -0
  412. package/src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx +116 -0
  413. package/src/hooks/make-autosuggestions-function/use-make-standard-insertion-function.tsx +215 -0
  414. package/src/hooks/misc/use-autosize-textarea.tsx +18 -0
  415. package/src/index.tsx +7 -0
  416. package/src/lib/debouncer.ts +36 -0
  417. package/src/lib/editor-to-text.ts +61 -0
  418. package/src/lib/get-text-around-cursor.ts +135 -0
  419. package/src/lib/retry.tsx +23 -0
  420. package/src/lib/slatejs-edits/add-autocompletions.ts +30 -0
  421. package/src/lib/slatejs-edits/clear-autocompletions.ts +19 -0
  422. package/src/lib/slatejs-edits/replace-text.ts +28 -0
  423. package/src/lib/slatejs-edits/with-partial-history.ts +149 -0
  424. package/src/lib/stream-promise-flatten.ts +33 -0
  425. package/src/lib/utils.test.ts +7 -0
  426. package/src/lib/utils.ts +49 -0
  427. package/src/styles.css +3 -0
  428. package/src/types/autosuggestions-config/autosuggestions-config-user-specified.tsx +19 -0
  429. package/src/types/autosuggestions-config/autosuggestions-config.tsx +30 -0
  430. package/src/types/autosuggestions-config/editing-api-config.tsx +96 -0
  431. package/src/types/autosuggestions-config/index.ts +8 -0
  432. package/src/types/autosuggestions-config/insertions-api-config.tsx +87 -0
  433. package/src/types/autosuggestions-config/subtypes/make-system-prompt.ts +1 -0
  434. package/src/types/autosuggestions-config/suggestions-api-config.tsx +76 -0
  435. package/src/types/base/autosuggestion-state.ts +6 -0
  436. package/src/types/base/autosuggestions-bare-function.ts +30 -0
  437. package/src/types/base/base-autosuggestions-config.tsx +128 -0
  438. package/src/types/base/base-copilot-textarea-props.tsx +58 -0
  439. package/src/types/base/custom-editor.tsx +29 -0
  440. package/src/types/base/editor-autocomplete-state.ts +20 -0
  441. package/src/types/base/index.ts +6 -0
  442. package/src/types/html-copilot-textarea-element.ts +5 -0
  443. package/src/types/index.ts +3 -0
  444. package/tailwind.config.js +9 -0
  445. package/tsconfig.json +12 -0
  446. package/tsup.config.ts +11 -0
  447. package/typedoc.json +4 -0
@@ -0,0 +1,894 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __spreadValues = (a, b) => {
14
+ for (var prop in b || (b = {}))
15
+ if (__hasOwnProp.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ if (__getOwnPropSymbols)
18
+ for (var prop of __getOwnPropSymbols(b)) {
19
+ if (__propIsEnum.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __copyProps = (to, from, except, desc) => {
42
+ if (from && typeof from === "object" || typeof from === "function") {
43
+ for (let key of __getOwnPropNames(from))
44
+ if (!__hasOwnProp.call(to, key) && key !== except)
45
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
+ }
47
+ return to;
48
+ };
49
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
+ // If the importer is in node compatibility mode or this is not an ESM
51
+ // file that has been converted to a CommonJS file using a Babel-
52
+ // compatible transform (i.e. "__esModule" has not been set), then set
53
+ // "default" to the CommonJS "module.exports" for node compatibility.
54
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
+ mod
56
+ ));
57
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
+ var __async = (__this, __arguments, generator) => {
59
+ return new Promise((resolve, reject) => {
60
+ var fulfilled = (value) => {
61
+ try {
62
+ step(generator.next(value));
63
+ } catch (e) {
64
+ reject(e);
65
+ }
66
+ };
67
+ var rejected = (value) => {
68
+ try {
69
+ step(generator.throw(value));
70
+ } catch (e) {
71
+ reject(e);
72
+ }
73
+ };
74
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
75
+ step((generator = generator.apply(__this, __arguments)).next());
76
+ });
77
+ };
78
+
79
+ // src/components/hovering-toolbar/hovering-toolbar.tsx
80
+ var hovering_toolbar_exports = {};
81
+ __export(hovering_toolbar_exports, {
82
+ HoveringToolbar: () => HoveringToolbar
83
+ });
84
+ module.exports = __toCommonJS(hovering_toolbar_exports);
85
+ var import_react6 = require("react");
86
+ var import_slate2 = require("slate");
87
+ var import_slate_react = require("slate-react");
88
+
89
+ // src/lib/get-text-around-cursor.ts
90
+ var import_slate = require("slate");
91
+ function getTextAroundSelection(editor) {
92
+ const { selection } = editor;
93
+ if (!selection) {
94
+ return null;
95
+ }
96
+ const wellOrderedSelection = wellOrderedRange(selection);
97
+ const beforeRange = {
98
+ anchor: import_slate.Editor.start(editor, []),
99
+ focus: wellOrderedSelection.anchor
100
+ };
101
+ const afterRange = {
102
+ anchor: wellOrderedSelection.focus,
103
+ focus: import_slate.Editor.end(editor, [])
104
+ };
105
+ const before = extractTextWithNewlines(editor, beforeRange);
106
+ const after = extractTextWithNewlines(editor, afterRange);
107
+ const selectedText = extractTextWithNewlines(editor, wellOrderedSelection);
108
+ return {
109
+ selection: wellOrderedSelection,
110
+ textBeforeCursor: before,
111
+ selectedText,
112
+ textAfterCursor: after
113
+ };
114
+ }
115
+ function getFullEditorTextWithNewlines(editor) {
116
+ const fullDocumentRange = {
117
+ anchor: import_slate.Editor.start(editor, []),
118
+ focus: import_slate.Editor.end(editor, [])
119
+ };
120
+ return extractTextWithNewlines(editor, fullDocumentRange);
121
+ }
122
+ function extractTextWithNewlines(editor, range) {
123
+ const voids = false;
124
+ const [start, end] = import_slate.Range.edges(range);
125
+ let text = "";
126
+ let lastBlock = null;
127
+ for (const [node, path] of import_slate.Editor.nodes(editor, {
128
+ at: range,
129
+ match: import_slate.Text.isText,
130
+ voids
131
+ })) {
132
+ let t = node.text;
133
+ const [block] = import_slate.Editor.above(editor, {
134
+ at: path,
135
+ match: (n) => import_slate.Element.isElement(n) && n.type === "paragraph"
136
+ }) || [null];
137
+ if (lastBlock !== block && block) {
138
+ if (lastBlock) {
139
+ text += "\n";
140
+ }
141
+ lastBlock = block;
142
+ }
143
+ if (import_slate.Path.equals(path, end.path)) {
144
+ t = t.slice(0, end.offset);
145
+ }
146
+ if (import_slate.Path.equals(path, start.path)) {
147
+ t = t.slice(start.offset);
148
+ }
149
+ text += t;
150
+ }
151
+ return text;
152
+ }
153
+ function wellOrderedRange(range) {
154
+ const { anchor, focus } = range;
155
+ if (import_slate.Point.isBefore(anchor, focus)) {
156
+ return range;
157
+ }
158
+ return {
159
+ anchor: focus,
160
+ focus: anchor
161
+ };
162
+ }
163
+
164
+ // src/components/hovering-toolbar/hovering-editor-provider.tsx
165
+ var import_react = require("react");
166
+ var import_jsx_runtime = require("react/jsx-runtime");
167
+ var HoveringEditorContext = (0, import_react.createContext)({
168
+ isDisplayed: false,
169
+ setIsDisplayed: () => {
170
+ }
171
+ });
172
+ var useHoveringEditorContext = () => (0, import_react.useContext)(HoveringEditorContext);
173
+
174
+ // src/components/hovering-toolbar/hovering-toolbar-components.tsx
175
+ var import_css = require("@emotion/css");
176
+ var import_react2 = __toESM(require("react"));
177
+ var import_react_dom = __toESM(require("react-dom"));
178
+ var import_jsx_runtime2 = require("react/jsx-runtime");
179
+ var Button = import_react2.default.forwardRef((_a, ref) => {
180
+ var _b = _a, { className, active, reversed } = _b, props = __objRest(_b, ["className", "active", "reversed"]);
181
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
182
+ "span",
183
+ __spreadProps(__spreadValues({}, props), {
184
+ ref,
185
+ className: (0, import_css.cx)(
186
+ className,
187
+ import_css.css`
188
+ cursor: pointer;
189
+ color: ${reversed ? active ? "white" : "#aaa" : active ? "black" : "#ccc"};
190
+ `
191
+ )
192
+ })
193
+ );
194
+ });
195
+ var Icon = import_react2.default.forwardRef(
196
+ (_a, ref) => {
197
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
198
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
199
+ "span",
200
+ __spreadProps(__spreadValues({}, props), {
201
+ ref,
202
+ className: (0, import_css.cx)(
203
+ "material-icons",
204
+ className,
205
+ import_css.css`
206
+ font-size: 18px;
207
+ vertical-align: text-bottom;
208
+ `
209
+ )
210
+ })
211
+ );
212
+ }
213
+ );
214
+ var Menu = import_react2.default.forwardRef(
215
+ (_a, ref) => {
216
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
217
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
218
+ "div",
219
+ __spreadProps(__spreadValues({}, props), {
220
+ "data-testid": "menu",
221
+ ref,
222
+ className: (0, import_css.cx)(
223
+ className,
224
+ import_css.css`
225
+ & > * {
226
+ display: inline-block;
227
+ }
228
+
229
+ & > * + * {
230
+ margin-left: 15px;
231
+ }
232
+ `
233
+ )
234
+ })
235
+ );
236
+ }
237
+ );
238
+ var Portal = ({ children }) => {
239
+ return typeof document === "object" ? import_react_dom.default.createPortal(children, document.body) : null;
240
+ };
241
+ var Toolbar = import_react2.default.forwardRef(
242
+ (_a, ref) => {
243
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
244
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
245
+ Menu,
246
+ __spreadProps(__spreadValues({}, props), {
247
+ ref,
248
+ className: (0, import_css.cx)(
249
+ className,
250
+ import_css.css`
251
+ position: relative;
252
+ padding: 1px 18px 17px;
253
+ margin: 0 -20px;
254
+ border-bottom: 2px solid #eee;
255
+ margin-bottom: 20px;
256
+ `
257
+ )
258
+ })
259
+ );
260
+ }
261
+ );
262
+
263
+ // src/hooks/misc/use-autosize-textarea.tsx
264
+ var import_react3 = require("react");
265
+ var useAutosizeTextArea = (textAreaRef, value) => {
266
+ (0, import_react3.useEffect)(() => {
267
+ if (textAreaRef.current !== null) {
268
+ textAreaRef.current.style.height = "0px";
269
+ const scrollHeight = textAreaRef.current.scrollHeight;
270
+ textAreaRef.current.style.height = scrollHeight + "px";
271
+ }
272
+ }, [textAreaRef, value]);
273
+ };
274
+ var use_autosize_textarea_default = useAutosizeTextArea;
275
+
276
+ // src/components/source-search-box/source-search-box.tsx
277
+ var import_react4 = require("react");
278
+
279
+ // src/components/ui/command.tsx
280
+ var React2 = __toESM(require("react"));
281
+ var import_cmdk = require("cmdk");
282
+
283
+ // src/lib/utils.ts
284
+ var import_clsx = require("clsx");
285
+ var import_tailwind_merge = require("tailwind-merge");
286
+ function cn(...inputs) {
287
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
288
+ }
289
+
290
+ // src/components/ui/command.tsx
291
+ var import_jsx_runtime3 = require("react/jsx-runtime");
292
+ var Command = React2.forwardRef((_a, ref) => {
293
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
294
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
295
+ import_cmdk.Command,
296
+ __spreadValues({
297
+ ref,
298
+ className: cn(
299
+ "flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
300
+ className
301
+ )
302
+ }, props)
303
+ );
304
+ });
305
+ Command.displayName = import_cmdk.Command.displayName;
306
+ var CommandInput = React2.forwardRef((_a, ref) => {
307
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
308
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
309
+ import_cmdk.Command.Input,
310
+ __spreadValues({
311
+ ref,
312
+ className: cn(
313
+ "flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
314
+ className
315
+ )
316
+ }, props)
317
+ ) });
318
+ });
319
+ CommandInput.displayName = import_cmdk.Command.Input.displayName;
320
+ var CommandList = React2.forwardRef((_a, ref) => {
321
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
322
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
323
+ import_cmdk.Command.List,
324
+ __spreadValues({
325
+ ref,
326
+ className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden pb-2", className)
327
+ }, props)
328
+ );
329
+ });
330
+ CommandList.displayName = import_cmdk.Command.List.displayName;
331
+ var CommandEmpty = React2.forwardRef((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_cmdk.Command.Empty, __spreadValues({ ref, className: "py-6 text-center text-sm" }, props)));
332
+ CommandEmpty.displayName = import_cmdk.Command.Empty.displayName;
333
+ var CommandGroup = React2.forwardRef((_a, ref) => {
334
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
335
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
336
+ import_cmdk.Command.Group,
337
+ __spreadValues({
338
+ ref,
339
+ className: cn(
340
+ "overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
341
+ className
342
+ )
343
+ }, props)
344
+ );
345
+ });
346
+ CommandGroup.displayName = import_cmdk.Command.Group.displayName;
347
+ var CommandSeparator = React2.forwardRef((_a, ref) => {
348
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
349
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
350
+ import_cmdk.Command.Separator,
351
+ __spreadValues({
352
+ ref,
353
+ className: cn("-mx-1 h-px bg-border", className)
354
+ }, props)
355
+ );
356
+ });
357
+ CommandSeparator.displayName = import_cmdk.Command.Separator.displayName;
358
+ var CommandItem = React2.forwardRef((_a, ref) => {
359
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
360
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
361
+ import_cmdk.Command.Item,
362
+ __spreadValues({
363
+ ref,
364
+ className: cn(
365
+ "relative flex cursor-default select-none items-center rounded-sm text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
366
+ className
367
+ )
368
+ }, props)
369
+ );
370
+ });
371
+ CommandItem.displayName = import_cmdk.Command.Item.displayName;
372
+ var CommandShortcut = (_a) => {
373
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
374
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
375
+ "span",
376
+ __spreadValues({
377
+ className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className)
378
+ }, props)
379
+ );
380
+ };
381
+ CommandShortcut.displayName = "CommandShortcut";
382
+
383
+ // src/components/source-search-box/source-search-box.tsx
384
+ var import_jsx_runtime4 = require("react/jsx-runtime");
385
+ function SourceSearchBox(props) {
386
+ const [selectedValue, setSelectedValue] = (0, import_react4.useState)("");
387
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
388
+ Command,
389
+ {
390
+ className: "rounded-lg border shadow-md",
391
+ value: selectedValue,
392
+ onValueChange: (value) => {
393
+ setSelectedValue(value);
394
+ },
395
+ filter: (value, search) => {
396
+ if (props.searchTerm === "")
397
+ return 1;
398
+ if (value.startsWith(props.searchTerm))
399
+ return 1;
400
+ return 0;
401
+ },
402
+ children: [
403
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
404
+ CommandInput,
405
+ {
406
+ value: props.searchTerm,
407
+ className: "rounded-t-lg hidden",
408
+ placeholder: "Search for a command..."
409
+ }
410
+ ),
411
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(CommandList, { children: [
412
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CommandEmpty, { children: "No results found." }),
413
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CommandGroup, { heading: "Available resources", children: props.suggestedFiles.map((filePointer) => {
414
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
415
+ CommandItem,
416
+ {
417
+ value: filePointer.name,
418
+ onSelect: (value) => {
419
+ props.onSelectedFile(filePointer);
420
+ },
421
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: " px-3 flex flex-row gap-1 items-center", children: [
422
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Logo, { width: "20px", height: "20px", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
423
+ "img",
424
+ {
425
+ src: filePointer.iconImageUri,
426
+ alt: filePointer.sourceApplication,
427
+ className: "w-full h-full"
428
+ }
429
+ ) }),
430
+ filePointer.name
431
+ ] })
432
+ },
433
+ `word-${filePointer.sourceApplication}.${filePointer.name}`
434
+ );
435
+ }) }),
436
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CommandSeparator, {})
437
+ ] })
438
+ ]
439
+ }
440
+ );
441
+ }
442
+ function Logo({
443
+ children,
444
+ width,
445
+ height
446
+ }) {
447
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "flex items-center justify-center", style: { width, height }, children });
448
+ }
449
+
450
+ // src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx
451
+ var import_react_core = require("@copilotkit/react-core");
452
+
453
+ // src/components/ui/button.tsx
454
+ var React3 = __toESM(require("react"));
455
+ var import_react_slot = require("@radix-ui/react-slot");
456
+ var import_class_variance_authority = require("class-variance-authority");
457
+ var import_jsx_runtime5 = require("react/jsx-runtime");
458
+ var buttonVariants = (0, import_class_variance_authority.cva)(
459
+ "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
460
+ {
461
+ variants: {
462
+ variant: {
463
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
464
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
465
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
466
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
467
+ ghost: "hover:bg-accent hover:text-accent-foreground",
468
+ link: "text-primary underline-offset-4 hover:underline"
469
+ },
470
+ size: {
471
+ default: "h-10 px-4 py-2",
472
+ sm: "h-9 rounded-md px-3",
473
+ lg: "h-11 rounded-md px-8",
474
+ icon: "h-10 w-10"
475
+ }
476
+ },
477
+ defaultVariants: {
478
+ variant: "default",
479
+ size: "default"
480
+ }
481
+ }
482
+ );
483
+ var Button2 = React3.forwardRef(
484
+ (_a, ref) => {
485
+ var _b = _a, { className, variant, size, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "size", "asChild"]);
486
+ const Comp = asChild ? import_react_slot.Slot : "button";
487
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Comp, __spreadValues({ className: cn(buttonVariants({ variant, size, className })), ref }, props));
488
+ }
489
+ );
490
+ Button2.displayName = "Button";
491
+
492
+ // src/components/ui/label.tsx
493
+ var React4 = __toESM(require("react"));
494
+ var LabelPrimitive = __toESM(require("@radix-ui/react-label"));
495
+ var import_class_variance_authority2 = require("class-variance-authority");
496
+ var import_jsx_runtime6 = require("react/jsx-runtime");
497
+ var labelVariants = (0, import_class_variance_authority2.cva)(
498
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
499
+ );
500
+ var Label = React4.forwardRef((_a, ref) => {
501
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
502
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(LabelPrimitive.Root, __spreadValues({ ref, className: cn(labelVariants(), className) }, props));
503
+ });
504
+ Label.displayName = LabelPrimitive.Root.displayName;
505
+
506
+ // src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx
507
+ var import_react5 = require("react");
508
+
509
+ // src/lib/stream-promise-flatten.ts
510
+ function streamPromiseFlatten(promise) {
511
+ return new ReadableStream({
512
+ start(controller) {
513
+ return __async(this, null, function* () {
514
+ try {
515
+ const stream = yield promise;
516
+ const reader = stream.getReader();
517
+ while (true) {
518
+ const { done, value } = yield reader.read();
519
+ if (done) {
520
+ controller.close();
521
+ return;
522
+ }
523
+ controller.enqueue(value);
524
+ }
525
+ } catch (error) {
526
+ controller.error(error);
527
+ }
528
+ });
529
+ }
530
+ });
531
+ }
532
+
533
+ // src/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.tsx
534
+ var import_Chip = __toESM(require("@mui/material/Chip/Chip.js"));
535
+ var import_Avatar = __toESM(require("@mui/material/Avatar/Avatar.js"));
536
+ var import_jsx_runtime7 = require("react/jsx-runtime");
537
+ var IncludedFilesPreview = ({
538
+ includedFiles,
539
+ setIncludedFiles
540
+ }) => {
541
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-2 mt-2", children: [
542
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Label, { className: "", children: "Included context:" }),
543
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap gap-2", children: includedFiles.map((filePointer, index) => {
544
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
545
+ FileChipPreview,
546
+ {
547
+ filePointer,
548
+ onDelete: () => {
549
+ setIncludedFiles((prev) => prev.filter((fp) => fp !== filePointer));
550
+ }
551
+ },
552
+ `file-${filePointer.sourceApplication}.${filePointer.name}`
553
+ );
554
+ }) })
555
+ ] });
556
+ };
557
+ var FileChipPreview = ({ filePointer, onDelete }) => {
558
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
559
+ import_Chip.default,
560
+ {
561
+ label: filePointer.name,
562
+ onDelete,
563
+ avatar: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
564
+ import_Avatar.default,
565
+ {
566
+ src: filePointer.iconImageUri,
567
+ alt: filePointer.sourceApplication,
568
+ sx: { backgroundColor: "transparent" }
569
+ }
570
+ )
571
+ }
572
+ );
573
+ };
574
+
575
+ // src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx
576
+ var import_jsx_runtime8 = require("react/jsx-runtime");
577
+ var HoveringInsertionPromptBoxCore = ({
578
+ performInsertion,
579
+ state,
580
+ insertionOrEditingFunction,
581
+ contextCategories
582
+ }) => {
583
+ const { getDocumentsContext } = (0, import_react_core.useCopilotContext)();
584
+ const [editSuggestion, setEditSuggestion] = (0, import_react5.useState)("");
585
+ const [suggestionIsLoading, setSuggestionIsLoading] = (0, import_react5.useState)(false);
586
+ const [adjustmentPrompt, setAdjustmentPrompt] = (0, import_react5.useState)("");
587
+ const [generatingSuggestion, setGeneratingSuggestion] = (0, import_react5.useState)(
588
+ null
589
+ );
590
+ const adjustmentTextAreaRef = (0, import_react5.useRef)(null);
591
+ const suggestionTextAreaRef = (0, import_react5.useRef)(null);
592
+ const [filePointers, setFilePointers] = (0, import_react5.useState)([]);
593
+ const [suggestedFiles, setSuggestedFiles] = (0, import_react5.useState)([]);
594
+ (0, import_react5.useEffect)(() => {
595
+ setSuggestedFiles(getDocumentsContext(contextCategories));
596
+ }, [contextCategories, getDocumentsContext]);
597
+ use_autosize_textarea_default(suggestionTextAreaRef, editSuggestion || "");
598
+ use_autosize_textarea_default(adjustmentTextAreaRef, adjustmentPrompt || "");
599
+ (0, import_react5.useEffect)(() => {
600
+ var _a;
601
+ (_a = adjustmentTextAreaRef.current) == null ? void 0 : _a.focus();
602
+ }, []);
603
+ (0, import_react5.useEffect)(() => {
604
+ if (!generatingSuggestion) {
605
+ return;
606
+ }
607
+ if (generatingSuggestion.locked) {
608
+ return;
609
+ }
610
+ setEditSuggestion("");
611
+ const reader = generatingSuggestion.getReader();
612
+ const read = () => __async(void 0, null, function* () {
613
+ setSuggestionIsLoading(true);
614
+ while (true) {
615
+ const { done, value } = yield reader.read();
616
+ if (done) {
617
+ break;
618
+ }
619
+ setEditSuggestion((prev) => {
620
+ const newSuggestion = prev + value;
621
+ if (suggestionTextAreaRef.current) {
622
+ suggestionTextAreaRef.current.scrollTop = suggestionTextAreaRef.current.scrollHeight;
623
+ }
624
+ return newSuggestion;
625
+ });
626
+ }
627
+ setSuggestionIsLoading(false);
628
+ });
629
+ read();
630
+ return () => {
631
+ const releaseLockIfNotClosed = () => __async(void 0, null, function* () {
632
+ try {
633
+ yield reader.closed;
634
+ } catch (e) {
635
+ reader.releaseLock();
636
+ }
637
+ });
638
+ releaseLockIfNotClosed();
639
+ };
640
+ }, [generatingSuggestion]);
641
+ const beginGeneratingAdjustment = (0, import_react5.useCallback)(() => __async(void 0, null, function* () {
642
+ if (!adjustmentPrompt.trim()) {
643
+ return;
644
+ }
645
+ let modificationState = state.editorState;
646
+ if (editSuggestion !== "") {
647
+ modificationState.selectedText = editSuggestion;
648
+ }
649
+ const adjustmentSuggestionTextStreamPromise = insertionOrEditingFunction(
650
+ modificationState,
651
+ adjustmentPrompt,
652
+ filePointers,
653
+ new AbortController().signal
654
+ );
655
+ const adjustmentSuggestionTextStream = streamPromiseFlatten(
656
+ adjustmentSuggestionTextStreamPromise
657
+ );
658
+ setGeneratingSuggestion(adjustmentSuggestionTextStream);
659
+ }), [
660
+ adjustmentPrompt,
661
+ editSuggestion,
662
+ state.editorState,
663
+ insertionOrEditingFunction,
664
+ filePointers
665
+ ]);
666
+ const isLoading = suggestionIsLoading;
667
+ const textToEdit = editSuggestion || state.editorState.selectedText;
668
+ const adjustmentLabel = textToEdit === "" ? "Describe the text you want to insert" : "Describe adjustments to the suggested text";
669
+ const placeholder = textToEdit === "" ? "e.g. 'summarize the client's top 3 pain-points from @CallTranscript'" : "e.g. 'make it more formal', 'be more specific', ...";
670
+ const { setIsDisplayed } = useHoveringEditorContext();
671
+ const AdjustmentPromptComponent = /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
672
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Label, { className: "", children: adjustmentLabel }),
673
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "relative w-full flex items-center", children: [
674
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
675
+ "textarea",
676
+ {
677
+ "data-testid": "adjustment-prompt",
678
+ disabled: suggestionIsLoading,
679
+ ref: adjustmentTextAreaRef,
680
+ value: adjustmentPrompt,
681
+ onChange: (e) => setAdjustmentPrompt(e.target.value),
682
+ onKeyDown: (e) => {
683
+ if (e.key === "Enter" && e.shiftKey) {
684
+ e.preventDefault();
685
+ setAdjustmentPrompt(adjustmentPrompt + "\n");
686
+ } else if (e.key === "Enter") {
687
+ e.preventDefault();
688
+ beginGeneratingAdjustment();
689
+ }
690
+ },
691
+ placeholder,
692
+ style: { minHeight: "3rem" },
693
+ className: "w-full bg-slate-100 h-auto h-min-14 text-sm p-2 rounded-md resize-none overflow-visible focus:outline-none focus:ring-0 focus:border-non pr-[3rem]",
694
+ rows: 1
695
+ }
696
+ ),
697
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
698
+ "button",
699
+ {
700
+ onClick: beginGeneratingAdjustment,
701
+ className: "absolute right-2 bg-blue-500 text-white w-8 h-8 rounded-full flex items-center justify-center",
702
+ "data-testid": "generate-button",
703
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("i", { className: "material-icons", children: "arrow_forward" })
704
+ }
705
+ )
706
+ ] })
707
+ ] });
708
+ const SuggestionComponent = /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
709
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex justify-between items-end w-full", children: [
710
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Label, { className: "mt-4", children: "Suggested:" }),
711
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "ml-auto", children: isLoading && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
712
+ "div",
713
+ {
714
+ className: "inline-block h-4 w-4 animate-spin rounded-full border-4 border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite]",
715
+ role: "status",
716
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]", children: "Loading..." })
717
+ }
718
+ ) }) })
719
+ ] }),
720
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
721
+ "textarea",
722
+ {
723
+ "data-testid": "suggestion-result",
724
+ ref: suggestionTextAreaRef,
725
+ value: editSuggestion,
726
+ disabled: suggestionIsLoading,
727
+ onChange: (e) => setEditSuggestion(e.target.value),
728
+ className: "w-full text-base p-2 border border-gray-300 rounded-md resize-none bg-green-50",
729
+ style: { overflow: "auto", maxHeight: "10em" }
730
+ }
731
+ )
732
+ ] });
733
+ const SubmitComponent = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex w-full gap-4 justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
734
+ Button2,
735
+ {
736
+ "data-testid": "insert-button",
737
+ className: " bg-green-700 text-white",
738
+ onClick: () => {
739
+ performInsertion(editSuggestion);
740
+ },
741
+ children: [
742
+ "Insert ",
743
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("i", { className: "material-icons", children: "check" })
744
+ ]
745
+ }
746
+ ) });
747
+ const sourceSearchCandidate = adjustmentPrompt.split(" ").pop();
748
+ const sourceSearchWord = (sourceSearchCandidate == null ? void 0 : sourceSearchCandidate.startsWith("@")) ? sourceSearchCandidate.slice(1) : void 0;
749
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "w-full flex flex-col items-start relative gap-2", children: [
750
+ AdjustmentPromptComponent,
751
+ filePointers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IncludedFilesPreview, { includedFiles: filePointers, setIncludedFiles: setFilePointers }),
752
+ sourceSearchWord !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
753
+ SourceSearchBox,
754
+ {
755
+ searchTerm: sourceSearchWord,
756
+ suggestedFiles,
757
+ onSelectedFile: (filePointer) => {
758
+ var _a;
759
+ setAdjustmentPrompt(adjustmentPrompt.replace(new RegExp(`@${sourceSearchWord}$`), ""));
760
+ setFilePointers((prev) => [...prev, filePointer]);
761
+ (_a = adjustmentTextAreaRef.current) == null ? void 0 : _a.focus();
762
+ }
763
+ }
764
+ ),
765
+ generatingSuggestion ? SuggestionComponent : null,
766
+ generatingSuggestion ? SubmitComponent : null
767
+ ] });
768
+ };
769
+
770
+ // src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx
771
+ var import_jsx_runtime9 = require("react/jsx-runtime");
772
+ var HoveringInsertionPromptBox = (props) => {
773
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
774
+ "div",
775
+ {
776
+ className: "flex flex-col justify-center items-center space-y-4 rounded-md border shadow-lg p-4 border-gray- bg-white",
777
+ style: { width: "35rem" },
778
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
779
+ HoveringInsertionPromptBoxCore,
780
+ {
781
+ state: {
782
+ editorState: props.editorState
783
+ },
784
+ insertionOrEditingFunction: props.apiConfig.insertionOrEditingFunction,
785
+ performInsertion: props.performInsertion,
786
+ contextCategories: props.contextCategories
787
+ }
788
+ )
789
+ }
790
+ );
791
+ };
792
+
793
+ // src/components/hovering-toolbar/hovering-toolbar.tsx
794
+ var import_jsx_runtime10 = require("react/jsx-runtime");
795
+ var HoveringToolbar = (props) => {
796
+ const ref = (0, import_react6.useRef)(null);
797
+ const editor = (0, import_slate_react.useSlate)();
798
+ const selection = (0, import_slate_react.useSlateSelection)();
799
+ const { isDisplayed, setIsDisplayed } = useHoveringEditorContext();
800
+ const [isClient, setIsClient] = (0, import_react6.useState)(false);
801
+ (0, import_react6.useEffect)(() => {
802
+ setIsClient(true);
803
+ }, []);
804
+ const isShown = isClient && isDisplayed && selection;
805
+ (0, import_react6.useLayoutEffect)(() => {
806
+ const el = ref.current;
807
+ const { selection: selection2 } = editor;
808
+ if (!el || !isShown) {
809
+ return;
810
+ }
811
+ if (!selection2) {
812
+ el.removeAttribute("style");
813
+ return;
814
+ }
815
+ const domSelection = window.getSelection();
816
+ if (!domSelection || domSelection.rangeCount === 0) {
817
+ return;
818
+ }
819
+ const domRange = domSelection.getRangeAt(0);
820
+ const rect = domRange.getBoundingClientRect();
821
+ if (rect.top === 0 && rect.left === 0 && rect.width === 0 && rect.height === 0) {
822
+ return;
823
+ }
824
+ const verticalOffsetFromCorner = 0;
825
+ const horizontalOffsetFromCorner = 0;
826
+ let top = rect.bottom + window.scrollY + verticalOffsetFromCorner;
827
+ if (rect.bottom + el.offsetHeight > window.innerHeight - verticalOffsetFromCorner) {
828
+ top = rect.top + window.scrollY - el.offsetHeight - verticalOffsetFromCorner;
829
+ }
830
+ let left = rect.left + window.scrollX - el.offsetWidth / 2 + rect.width / 2 + horizontalOffsetFromCorner;
831
+ if (left < horizontalOffsetFromCorner) {
832
+ left = horizontalOffsetFromCorner;
833
+ } else if (left + el.offsetWidth > window.innerWidth - horizontalOffsetFromCorner) {
834
+ left = window.innerWidth - el.offsetWidth - horizontalOffsetFromCorner;
835
+ }
836
+ el.style.opacity = "1";
837
+ el.style.position = "absolute";
838
+ el.style.top = `${top}px`;
839
+ el.style.left = `${left}px`;
840
+ }, [isShown]);
841
+ (0, import_react6.useEffect)(() => {
842
+ const handleClickOutside = (event) => {
843
+ if (ref.current && !ref.current.contains(event.target)) {
844
+ setIsDisplayed(false);
845
+ }
846
+ };
847
+ document.addEventListener("mousedown", handleClickOutside);
848
+ return () => {
849
+ document.removeEventListener("mousedown", handleClickOutside);
850
+ };
851
+ }, [ref, setIsDisplayed]);
852
+ if (!isShown) {
853
+ return null;
854
+ }
855
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
856
+ Menu,
857
+ {
858
+ ref,
859
+ className: "copilot-kit-textarea-css-scope " + (props.hoverMenuClassname || "p-2 absolute z-10 top-[-10000px] left-[-10000px] mt-[-6px] opacity-0 transition-opacity duration-700"),
860
+ "data-testid": "hovering-toolbar",
861
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
862
+ HoveringInsertionPromptBox,
863
+ {
864
+ editorState: editorState(editor, selection),
865
+ apiConfig: props.apiConfig,
866
+ performInsertion: (insertedText) => {
867
+ import_slate2.Transforms.delete(editor, { at: selection });
868
+ import_slate2.Transforms.insertText(editor, insertedText, {
869
+ at: selection
870
+ });
871
+ setIsDisplayed(false);
872
+ },
873
+ contextCategories: props.contextCategories
874
+ }
875
+ )
876
+ }
877
+ ) });
878
+ };
879
+ function editorState(editor, selection) {
880
+ const textAroundCursor = getTextAroundSelection(editor);
881
+ if (textAroundCursor) {
882
+ return textAroundCursor;
883
+ }
884
+ return {
885
+ textBeforeCursor: getFullEditorTextWithNewlines(editor),
886
+ textAfterCursor: "",
887
+ selectedText: ""
888
+ };
889
+ }
890
+ // Annotate the CommonJS export names for ESM import in node:
891
+ 0 && (module.exports = {
892
+ HoveringToolbar
893
+ });
894
+ //# sourceMappingURL=hovering-toolbar.js.map