@copilotkit/react-textarea 0.0.0-feat-dynamic-copilotcloud-qa-20250117190454

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 (451) hide show
  1. package/CHANGELOG.md +2456 -0
  2. package/README.md +46 -0
  3. package/dist/chunk-23Q6A46J.mjs +103 -0
  4. package/dist/chunk-23Q6A46J.mjs.map +1 -0
  5. package/dist/chunk-2C7O2EVM.mjs +27 -0
  6. package/dist/chunk-2C7O2EVM.mjs.map +1 -0
  7. package/dist/chunk-2QDCE7PD.mjs +32 -0
  8. package/dist/chunk-2QDCE7PD.mjs.map +1 -0
  9. package/dist/chunk-2VMZ5ZWT.mjs +229 -0
  10. package/dist/chunk-2VMZ5ZWT.mjs.map +1 -0
  11. package/dist/chunk-3PQ7GSFE.mjs +17 -0
  12. package/dist/chunk-3PQ7GSFE.mjs.map +1 -0
  13. package/dist/chunk-4CVSOOJY.mjs +30 -0
  14. package/dist/chunk-4CVSOOJY.mjs.map +1 -0
  15. package/dist/chunk-4NHVQZ67.mjs +108 -0
  16. package/dist/chunk-4NHVQZ67.mjs.map +1 -0
  17. package/dist/chunk-4PDYALMP.mjs +52 -0
  18. package/dist/chunk-4PDYALMP.mjs.map +1 -0
  19. package/dist/chunk-4XXU5BSA.mjs +125 -0
  20. package/dist/chunk-4XXU5BSA.mjs.map +1 -0
  21. package/dist/chunk-5UNJXFUO.mjs +29 -0
  22. package/dist/chunk-5UNJXFUO.mjs.map +1 -0
  23. package/dist/chunk-7L6GIHDM.mjs +39 -0
  24. package/dist/chunk-7L6GIHDM.mjs.map +1 -0
  25. package/dist/chunk-7LSRNPNI.mjs +59 -0
  26. package/dist/chunk-7LSRNPNI.mjs.map +1 -0
  27. package/dist/chunk-ABYCGF77.mjs +31 -0
  28. package/dist/chunk-ABYCGF77.mjs.map +1 -0
  29. package/dist/chunk-AJ5OMEXM.mjs +13 -0
  30. package/dist/chunk-AJ5OMEXM.mjs.map +1 -0
  31. package/dist/chunk-BNBGJBBM.mjs +60 -0
  32. package/dist/chunk-BNBGJBBM.mjs.map +1 -0
  33. package/dist/chunk-D47EKHIF.mjs +26 -0
  34. package/dist/chunk-D47EKHIF.mjs.map +1 -0
  35. package/dist/chunk-DE5K76I2.mjs +1 -0
  36. package/dist/chunk-DE5K76I2.mjs.map +1 -0
  37. package/dist/chunk-DFTV4TST.mjs +36 -0
  38. package/dist/chunk-DFTV4TST.mjs.map +1 -0
  39. package/dist/chunk-DRV2FOHZ.mjs +70 -0
  40. package/dist/chunk-DRV2FOHZ.mjs.map +1 -0
  41. package/dist/chunk-ECR45NSD.mjs +104 -0
  42. package/dist/chunk-ECR45NSD.mjs.map +1 -0
  43. package/dist/chunk-EJGGLWWR.mjs +82 -0
  44. package/dist/chunk-EJGGLWWR.mjs.map +1 -0
  45. package/dist/chunk-F6GMWOLE.mjs +93 -0
  46. package/dist/chunk-F6GMWOLE.mjs.map +1 -0
  47. package/dist/chunk-GQN2HYFJ.mjs +22 -0
  48. package/dist/chunk-GQN2HYFJ.mjs.map +1 -0
  49. package/dist/chunk-H4VKQGVU.mjs +1 -0
  50. package/dist/chunk-H4VKQGVU.mjs.map +1 -0
  51. package/dist/chunk-HDBI2WN5.mjs +113 -0
  52. package/dist/chunk-HDBI2WN5.mjs.map +1 -0
  53. package/dist/chunk-I72DKFHD.mjs +114 -0
  54. package/dist/chunk-I72DKFHD.mjs.map +1 -0
  55. package/dist/chunk-IU3WTXLQ.mjs +1 -0
  56. package/dist/chunk-IU3WTXLQ.mjs.map +1 -0
  57. package/dist/chunk-KMVGEY7Q.mjs +51 -0
  58. package/dist/chunk-KMVGEY7Q.mjs.map +1 -0
  59. package/dist/chunk-KNQIEOFP.mjs +19 -0
  60. package/dist/chunk-KNQIEOFP.mjs.map +1 -0
  61. package/dist/chunk-L7VVZH4Q.mjs +1 -0
  62. package/dist/chunk-L7VVZH4Q.mjs.map +1 -0
  63. package/dist/chunk-LQ2OWQU7.mjs +49 -0
  64. package/dist/chunk-LQ2OWQU7.mjs.map +1 -0
  65. package/dist/chunk-LYB4B6MK.mjs +19 -0
  66. package/dist/chunk-LYB4B6MK.mjs.map +1 -0
  67. package/dist/chunk-MCNXIA4Q.mjs +75 -0
  68. package/dist/chunk-MCNXIA4Q.mjs.map +1 -0
  69. package/dist/chunk-MGYT7RNL.mjs +32 -0
  70. package/dist/chunk-MGYT7RNL.mjs.map +1 -0
  71. package/dist/chunk-MMVDU6DF.mjs +1 -0
  72. package/dist/chunk-MMVDU6DF.mjs.map +1 -0
  73. package/dist/chunk-MRXNTQOX.mjs +59 -0
  74. package/dist/chunk-MRXNTQOX.mjs.map +1 -0
  75. package/dist/chunk-PZYM7K4Y.mjs +265 -0
  76. package/dist/chunk-PZYM7K4Y.mjs.map +1 -0
  77. package/dist/chunk-QFXR6DOA.mjs +64 -0
  78. package/dist/chunk-QFXR6DOA.mjs.map +1 -0
  79. package/dist/chunk-QJNFNPWH.mjs +85 -0
  80. package/dist/chunk-QJNFNPWH.mjs.map +1 -0
  81. package/dist/chunk-RUV6NBIF.mjs +1 -0
  82. package/dist/chunk-RUV6NBIF.mjs.map +1 -0
  83. package/dist/chunk-RXV67GJN.mjs +168 -0
  84. package/dist/chunk-RXV67GJN.mjs.map +1 -0
  85. package/dist/chunk-T6MTDQZ7.mjs +45 -0
  86. package/dist/chunk-T6MTDQZ7.mjs.map +1 -0
  87. package/dist/chunk-VSVQZUPW.mjs +124 -0
  88. package/dist/chunk-VSVQZUPW.mjs.map +1 -0
  89. package/dist/chunk-WADHCMPK.mjs +1 -0
  90. package/dist/chunk-WADHCMPK.mjs.map +1 -0
  91. package/dist/chunk-WGWQRALG.mjs +83 -0
  92. package/dist/chunk-WGWQRALG.mjs.map +1 -0
  93. package/dist/chunk-WJHSY5T6.mjs +1 -0
  94. package/dist/chunk-WJHSY5T6.mjs.map +1 -0
  95. package/dist/chunk-XW3ICO4S.mjs +25 -0
  96. package/dist/chunk-XW3ICO4S.mjs.map +1 -0
  97. package/dist/chunk-YLFAIYRY.mjs +50 -0
  98. package/dist/chunk-YLFAIYRY.mjs.map +1 -0
  99. package/dist/components/base-copilot-textarea/base-copilot-textarea.css +9 -0
  100. package/dist/components/base-copilot-textarea/base-copilot-textarea.css.map +1 -0
  101. package/dist/components/base-copilot-textarea/base-copilot-textarea.d.ts +43 -0
  102. package/dist/components/base-copilot-textarea/base-copilot-textarea.js +1795 -0
  103. package/dist/components/base-copilot-textarea/base-copilot-textarea.js.map +1 -0
  104. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +40 -0
  105. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map +1 -0
  106. package/dist/components/base-copilot-textarea/render-element.d.ts +6 -0
  107. package/dist/components/base-copilot-textarea/render-element.js +75 -0
  108. package/dist/components/base-copilot-textarea/render-element.js.map +1 -0
  109. package/dist/components/base-copilot-textarea/render-element.mjs +8 -0
  110. package/dist/components/base-copilot-textarea/render-element.mjs.map +1 -0
  111. package/dist/components/base-copilot-textarea/render-placeholder.d.ts +6 -0
  112. package/dist/components/base-copilot-textarea/render-placeholder.js +72 -0
  113. package/dist/components/base-copilot-textarea/render-placeholder.js.map +1 -0
  114. package/dist/components/base-copilot-textarea/render-placeholder.mjs +8 -0
  115. package/dist/components/base-copilot-textarea/render-placeholder.mjs.map +1 -0
  116. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.d.ts +8 -0
  117. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.js +112 -0
  118. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.js.map +1 -0
  119. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs +9 -0
  120. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs.map +1 -0
  121. package/dist/components/base-copilot-textarea/use-add-branding-css.d.ts +3 -0
  122. package/dist/components/base-copilot-textarea/use-add-branding-css.js +83 -0
  123. package/dist/components/base-copilot-textarea/use-add-branding-css.js.map +1 -0
  124. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs +8 -0
  125. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs.map +1 -0
  126. package/dist/components/copilot-textarea/copilot-textarea.css +9 -0
  127. package/dist/components/copilot-textarea/copilot-textarea.css.map +1 -0
  128. package/dist/components/copilot-textarea/copilot-textarea.d.ts +171 -0
  129. package/dist/components/copilot-textarea/copilot-textarea.js +2289 -0
  130. package/dist/components/copilot-textarea/copilot-textarea.js.map +1 -0
  131. package/dist/components/copilot-textarea/copilot-textarea.mjs +49 -0
  132. package/dist/components/copilot-textarea/copilot-textarea.mjs.map +1 -0
  133. package/dist/components/hovering-toolbar/hovering-editor-provider.d.ts +18 -0
  134. package/dist/components/hovering-toolbar/hovering-editor-provider.js +44 -0
  135. package/dist/components/hovering-toolbar/hovering-editor-provider.js.map +1 -0
  136. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs +10 -0
  137. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs.map +1 -0
  138. package/dist/components/hovering-toolbar/hovering-toolbar-components.d.ts +18 -0
  139. package/dist/components/hovering-toolbar/hovering-toolbar-components.js +174 -0
  140. package/dist/components/hovering-toolbar/hovering-toolbar-components.js.map +1 -0
  141. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs +16 -0
  142. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs.map +1 -0
  143. package/dist/components/hovering-toolbar/hovering-toolbar.d.ts +12 -0
  144. package/dist/components/hovering-toolbar/hovering-toolbar.js +912 -0
  145. package/dist/components/hovering-toolbar/hovering-toolbar.js.map +1 -0
  146. package/dist/components/hovering-toolbar/hovering-toolbar.mjs +23 -0
  147. package/dist/components/hovering-toolbar/hovering-toolbar.mjs.map +1 -0
  148. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.d.ts +16 -0
  149. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js +606 -0
  150. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js.map +1 -0
  151. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs +18 -0
  152. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs.map +1 -0
  153. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.d.ts +14 -0
  154. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js +629 -0
  155. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js.map +1 -0
  156. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs +19 -0
  157. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs.map +1 -0
  158. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.d.ts +16 -0
  159. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.js +133 -0
  160. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.js.map +1 -0
  161. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs +12 -0
  162. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs.map +1 -0
  163. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.d.ts +4 -0
  164. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js +629 -0
  165. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js.map +1 -0
  166. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs +20 -0
  167. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs.map +1 -0
  168. package/dist/components/index.css +9 -0
  169. package/dist/components/index.css.map +1 -0
  170. package/dist/components/index.d.ts +15 -0
  171. package/dist/components/index.js +2293 -0
  172. package/dist/components/index.js.map +1 -0
  173. package/dist/components/index.mjs +53 -0
  174. package/dist/components/index.mjs.map +1 -0
  175. package/dist/components/manual-ui/chip-with-icon.d.ts +10 -0
  176. package/dist/components/manual-ui/chip-with-icon.js +38 -0
  177. package/dist/components/manual-ui/chip-with-icon.js.map +1 -0
  178. package/dist/components/manual-ui/chip-with-icon.mjs +15 -0
  179. package/dist/components/manual-ui/chip-with-icon.mjs.map +1 -0
  180. package/dist/components/source-search-box/source-search-box.d.ts +16 -0
  181. package/dist/components/source-search-box/source-search-box.js +240 -0
  182. package/dist/components/source-search-box/source-search-box.js.map +1 -0
  183. package/dist/components/source-search-box/source-search-box.mjs +13 -0
  184. package/dist/components/source-search-box/source-search-box.mjs.map +1 -0
  185. package/dist/components/ui/button.d.ts +14 -0
  186. package/dist/components/ui/button.js +114 -0
  187. package/dist/components/ui/button.js.map +1 -0
  188. package/dist/components/ui/button.mjs +11 -0
  189. package/dist/components/ui/button.mjs.map +1 -0
  190. package/dist/components/ui/command.d.ts +53 -0
  191. package/dist/components/ui/command.js +285 -0
  192. package/dist/components/ui/command.js.map +1 -0
  193. package/dist/components/ui/command.mjs +26 -0
  194. package/dist/components/ui/command.mjs.map +1 -0
  195. package/dist/components/ui/dialog.d.ts +19 -0
  196. package/dist/components/ui/dialog.js +183 -0
  197. package/dist/components/ui/dialog.js.map +1 -0
  198. package/dist/components/ui/dialog.mjs +21 -0
  199. package/dist/components/ui/dialog.mjs.map +1 -0
  200. package/dist/components/ui/label.d.ts +8 -0
  201. package/dist/components/ui/label.js +87 -0
  202. package/dist/components/ui/label.js.map +1 -0
  203. package/dist/components/ui/label.mjs +9 -0
  204. package/dist/components/ui/label.mjs.map +1 -0
  205. package/dist/context/index.d.ts +2 -0
  206. package/dist/context/index.js +19 -0
  207. package/dist/context/index.js.map +1 -0
  208. package/dist/context/index.mjs +2 -0
  209. package/dist/context/index.mjs.map +1 -0
  210. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.d.ts +15 -0
  211. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.js +180 -0
  212. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.js.map +1 -0
  213. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs +11 -0
  214. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs.map +1 -0
  215. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.d.ts +8 -0
  216. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.js +194 -0
  217. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.js.map +1 -0
  218. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs +9 -0
  219. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs.map +1 -0
  220. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.d.ts +7 -0
  221. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.js +180 -0
  222. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.js.map +1 -0
  223. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs +10 -0
  224. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs.map +1 -0
  225. package/dist/hooks/index.d.ts +2 -0
  226. package/dist/hooks/index.js +19 -0
  227. package/dist/hooks/index.js.map +1 -0
  228. package/dist/hooks/index.mjs +2 -0
  229. package/dist/hooks/index.mjs.map +1 -0
  230. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.d.ts +22 -0
  231. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.js +153 -0
  232. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.js.map +1 -0
  233. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs +9 -0
  234. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs.map +1 -0
  235. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.d.ts +23 -0
  236. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.js +228 -0
  237. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.js.map +1 -0
  238. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs +9 -0
  239. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs.map +1 -0
  240. package/dist/hooks/misc/use-autosize-textarea.d.ts +5 -0
  241. package/dist/hooks/misc/use-autosize-textarea.js +37 -0
  242. package/dist/hooks/misc/use-autosize-textarea.js.map +1 -0
  243. package/dist/hooks/misc/use-autosize-textarea.mjs +8 -0
  244. package/dist/hooks/misc/use-autosize-textarea.mjs.map +1 -0
  245. package/dist/index.css +644 -0
  246. package/dist/index.css.map +1 -0
  247. package/dist/index.d.ts +15 -0
  248. package/dist/index.js +2298 -0
  249. package/dist/index.js.map +1 -0
  250. package/dist/index.mjs +64 -0
  251. package/dist/index.mjs.map +1 -0
  252. package/dist/lib/debouncer.d.ts +11 -0
  253. package/dist/lib/debouncer.js +76 -0
  254. package/dist/lib/debouncer.js.map +1 -0
  255. package/dist/lib/debouncer.mjs +8 -0
  256. package/dist/lib/debouncer.mjs.map +1 -0
  257. package/dist/lib/editor-to-text.d.ts +7 -0
  258. package/dist/lib/editor-to-text.js +69 -0
  259. package/dist/lib/editor-to-text.js.map +1 -0
  260. package/dist/lib/editor-to-text.mjs +8 -0
  261. package/dist/lib/editor-to-text.mjs.map +1 -0
  262. package/dist/lib/get-text-around-cursor.d.ts +15 -0
  263. package/dist/lib/get-text-around-cursor.js +131 -0
  264. package/dist/lib/get-text-around-cursor.js.map +1 -0
  265. package/dist/lib/get-text-around-cursor.mjs +14 -0
  266. package/dist/lib/get-text-around-cursor.mjs.map +1 -0
  267. package/dist/lib/retry.d.ts +3 -0
  268. package/dist/lib/retry.js +43 -0
  269. package/dist/lib/retry.js.map +1 -0
  270. package/dist/lib/retry.mjs +8 -0
  271. package/dist/lib/retry.mjs.map +1 -0
  272. package/dist/lib/slatejs-edits/add-autocompletions.d.ts +8 -0
  273. package/dist/lib/slatejs-edits/add-autocompletions.js +51 -0
  274. package/dist/lib/slatejs-edits/add-autocompletions.js.map +1 -0
  275. package/dist/lib/slatejs-edits/add-autocompletions.mjs +8 -0
  276. package/dist/lib/slatejs-edits/add-autocompletions.mjs.map +1 -0
  277. package/dist/lib/slatejs-edits/clear-autocompletions.d.ts +8 -0
  278. package/dist/lib/slatejs-edits/clear-autocompletions.js +46 -0
  279. package/dist/lib/slatejs-edits/clear-autocompletions.js.map +1 -0
  280. package/dist/lib/slatejs-edits/clear-autocompletions.mjs +8 -0
  281. package/dist/lib/slatejs-edits/clear-autocompletions.mjs.map +1 -0
  282. package/dist/lib/slatejs-edits/replace-text.d.ts +5 -0
  283. package/dist/lib/slatejs-edits/replace-text.js +53 -0
  284. package/dist/lib/slatejs-edits/replace-text.js.map +1 -0
  285. package/dist/lib/slatejs-edits/replace-text.mjs +8 -0
  286. package/dist/lib/slatejs-edits/replace-text.mjs.map +1 -0
  287. package/dist/lib/slatejs-edits/with-partial-history.d.ts +8 -0
  288. package/dist/lib/slatejs-edits/with-partial-history.js +133 -0
  289. package/dist/lib/slatejs-edits/with-partial-history.js.map +1 -0
  290. package/dist/lib/slatejs-edits/with-partial-history.mjs +10 -0
  291. package/dist/lib/slatejs-edits/with-partial-history.mjs.map +1 -0
  292. package/dist/lib/stream-promise-flatten.d.ts +12 -0
  293. package/dist/lib/stream-promise-flatten.js +72 -0
  294. package/dist/lib/stream-promise-flatten.js.map +1 -0
  295. package/dist/lib/stream-promise-flatten.mjs +8 -0
  296. package/dist/lib/stream-promise-flatten.mjs.map +1 -0
  297. package/dist/lib/utils.d.ts +9 -0
  298. package/dist/lib/utils.js +94 -0
  299. package/dist/lib/utils.js.map +1 -0
  300. package/dist/lib/utils.mjs +16 -0
  301. package/dist/lib/utils.mjs.map +1 -0
  302. package/dist/lib/utils.test.d.ts +2 -0
  303. package/dist/lib/utils.test.js +9 -0
  304. package/dist/lib/utils.test.js.map +1 -0
  305. package/dist/lib/utils.test.mjs +7 -0
  306. package/dist/lib/utils.test.mjs.map +1 -0
  307. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.d.ts +23 -0
  308. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.js +19 -0
  309. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.js.map +1 -0
  310. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs +1 -0
  311. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs.map +1 -0
  312. package/dist/types/autosuggestions-config/autosuggestions-config.d.ts +20 -0
  313. package/dist/types/autosuggestions-config/autosuggestions-config.js +287 -0
  314. package/dist/types/autosuggestions-config/autosuggestions-config.js.map +1 -0
  315. package/dist/types/autosuggestions-config/autosuggestions-config.mjs +13 -0
  316. package/dist/types/autosuggestions-config/autosuggestions-config.mjs.map +1 -0
  317. package/dist/types/autosuggestions-config/editing-api-config.d.ts +15 -0
  318. package/dist/types/autosuggestions-config/editing-api-config.js +108 -0
  319. package/dist/types/autosuggestions-config/editing-api-config.js.map +1 -0
  320. package/dist/types/autosuggestions-config/editing-api-config.mjs +12 -0
  321. package/dist/types/autosuggestions-config/editing-api-config.mjs.map +1 -0
  322. package/dist/types/autosuggestions-config/index.d.ts +10 -0
  323. package/dist/types/autosuggestions-config/index.js +287 -0
  324. package/dist/types/autosuggestions-config/index.js.map +1 -0
  325. package/dist/types/autosuggestions-config/index.mjs +14 -0
  326. package/dist/types/autosuggestions-config/index.mjs.map +1 -0
  327. package/dist/types/autosuggestions-config/insertions-api-config.d.ts +15 -0
  328. package/dist/types/autosuggestions-config/insertions-api-config.js +101 -0
  329. package/dist/types/autosuggestions-config/insertions-api-config.js.map +1 -0
  330. package/dist/types/autosuggestions-config/insertions-api-config.mjs +12 -0
  331. package/dist/types/autosuggestions-config/insertions-api-config.mjs.map +1 -0
  332. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.d.ts +3 -0
  333. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.js +19 -0
  334. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.js.map +1 -0
  335. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs +1 -0
  336. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs.map +1 -0
  337. package/dist/types/autosuggestions-config/suggestions-api-config.d.ts +15 -0
  338. package/dist/types/autosuggestions-config/suggestions-api-config.js +90 -0
  339. package/dist/types/autosuggestions-config/suggestions-api-config.js.map +1 -0
  340. package/dist/types/autosuggestions-config/suggestions-api-config.mjs +12 -0
  341. package/dist/types/autosuggestions-config/suggestions-api-config.mjs.map +1 -0
  342. package/dist/types/base/autosuggestion-state.d.ts +8 -0
  343. package/dist/types/base/autosuggestion-state.js +19 -0
  344. package/dist/types/base/autosuggestion-state.js.map +1 -0
  345. package/dist/types/base/autosuggestion-state.mjs +1 -0
  346. package/dist/types/base/autosuggestion-state.mjs.map +1 -0
  347. package/dist/types/base/autosuggestions-bare-function.d.ts +19 -0
  348. package/dist/types/base/autosuggestions-bare-function.js +19 -0
  349. package/dist/types/base/autosuggestions-bare-function.js.map +1 -0
  350. package/dist/types/base/autosuggestions-bare-function.mjs +1 -0
  351. package/dist/types/base/autosuggestions-bare-function.mjs.map +1 -0
  352. package/dist/types/base/base-autosuggestions-config.d.ts +83 -0
  353. package/dist/types/base/base-autosuggestions-config.js +54 -0
  354. package/dist/types/base/base-autosuggestions-config.js.map +1 -0
  355. package/dist/types/base/base-autosuggestions-config.mjs +8 -0
  356. package/dist/types/base/base-autosuggestions-config.mjs.map +1 -0
  357. package/dist/types/base/base-copilot-textarea-props.d.ts +5 -0
  358. package/dist/types/base/base-copilot-textarea-props.js +19 -0
  359. package/dist/types/base/base-copilot-textarea-props.js.map +1 -0
  360. package/dist/types/base/base-copilot-textarea-props.mjs +1 -0
  361. package/dist/types/base/base-copilot-textarea-props.mjs.map +1 -0
  362. package/dist/types/base/custom-editor.d.ts +29 -0
  363. package/dist/types/base/custom-editor.js +19 -0
  364. package/dist/types/base/custom-editor.js.map +1 -0
  365. package/dist/types/base/custom-editor.mjs +1 -0
  366. package/dist/types/base/custom-editor.mjs.map +1 -0
  367. package/dist/types/base/editor-autocomplete-state.d.ts +10 -0
  368. package/dist/types/base/editor-autocomplete-state.js +40 -0
  369. package/dist/types/base/editor-autocomplete-state.js.map +1 -0
  370. package/dist/types/base/editor-autocomplete-state.mjs +9 -0
  371. package/dist/types/base/editor-autocomplete-state.mjs.map +1 -0
  372. package/dist/types/base/index.d.ts +54 -0
  373. package/dist/types/base/index.js +56 -0
  374. package/dist/types/base/index.js.map +1 -0
  375. package/dist/types/base/index.mjs +9 -0
  376. package/dist/types/base/index.mjs.map +1 -0
  377. package/dist/types/html-copilot-textarea-element.d.ts +7 -0
  378. package/dist/types/html-copilot-textarea-element.js +19 -0
  379. package/dist/types/html-copilot-textarea-element.js.map +1 -0
  380. package/dist/types/html-copilot-textarea-element.mjs +2 -0
  381. package/dist/types/html-copilot-textarea-element.mjs.map +1 -0
  382. package/dist/types/index.d.ts +13 -0
  383. package/dist/types/index.js +289 -0
  384. package/dist/types/index.js.map +1 -0
  385. package/dist/types/index.mjs +19 -0
  386. package/dist/types/index.mjs.map +1 -0
  387. package/jest.config.js +5 -0
  388. package/package.json +95 -0
  389. package/postcss.config.js +12 -0
  390. package/src/components/base-copilot-textarea/base-copilot-textarea.css +9 -0
  391. package/src/components/base-copilot-textarea/base-copilot-textarea.tsx +317 -0
  392. package/src/components/base-copilot-textarea/render-element.tsx +39 -0
  393. package/src/components/base-copilot-textarea/render-placeholder.tsx +23 -0
  394. package/src/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.tsx +80 -0
  395. package/src/components/base-copilot-textarea/use-add-branding-css.tsx +74 -0
  396. package/src/components/copilot-textarea/copilot-textarea.tsx +210 -0
  397. package/src/components/hovering-toolbar/hovering-editor-provider.tsx +31 -0
  398. package/src/components/hovering-toolbar/hovering-toolbar-components.tsx +100 -0
  399. package/src/components/hovering-toolbar/hovering-toolbar.tsx +151 -0
  400. package/src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx +276 -0
  401. package/src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx +31 -0
  402. package/src/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.tsx +55 -0
  403. package/src/components/hovering-toolbar/text-insertion-prompt-box/index.ts +2 -0
  404. package/src/components/index.ts +4 -0
  405. package/src/components/manual-ui/chip-with-icon.tsx +17 -0
  406. package/src/components/source-search-box/source-search-box.tsx +117 -0
  407. package/src/components/ui/button.tsx +49 -0
  408. package/src/components/ui/command.tsx +141 -0
  409. package/src/components/ui/dialog.tsx +107 -0
  410. package/src/components/ui/label.tsx +19 -0
  411. package/src/context/index.ts +1 -0
  412. package/src/hooks/base-copilot-textarea-implementation/use-autosuggestions.ts +142 -0
  413. package/src/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.tsx +100 -0
  414. package/src/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.ts +93 -0
  415. package/src/hooks/index.ts +1 -0
  416. package/src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx +114 -0
  417. package/src/hooks/make-autosuggestions-function/use-make-standard-insertion-function.tsx +214 -0
  418. package/src/hooks/misc/use-autosize-textarea.tsx +18 -0
  419. package/src/index.tsx +7 -0
  420. package/src/lib/debouncer.ts +36 -0
  421. package/src/lib/editor-to-text.ts +61 -0
  422. package/src/lib/get-text-around-cursor.ts +135 -0
  423. package/src/lib/retry.tsx +23 -0
  424. package/src/lib/slatejs-edits/add-autocompletions.ts +30 -0
  425. package/src/lib/slatejs-edits/clear-autocompletions.ts +19 -0
  426. package/src/lib/slatejs-edits/replace-text.ts +28 -0
  427. package/src/lib/slatejs-edits/with-partial-history.ts +149 -0
  428. package/src/lib/stream-promise-flatten.ts +33 -0
  429. package/src/lib/utils.test.ts +7 -0
  430. package/src/lib/utils.ts +49 -0
  431. package/src/styles.css +3 -0
  432. package/src/types/autosuggestions-config/autosuggestions-config-user-specified.tsx +19 -0
  433. package/src/types/autosuggestions-config/autosuggestions-config.tsx +30 -0
  434. package/src/types/autosuggestions-config/editing-api-config.tsx +96 -0
  435. package/src/types/autosuggestions-config/index.ts +8 -0
  436. package/src/types/autosuggestions-config/insertions-api-config.tsx +87 -0
  437. package/src/types/autosuggestions-config/subtypes/make-system-prompt.ts +1 -0
  438. package/src/types/autosuggestions-config/suggestions-api-config.tsx +76 -0
  439. package/src/types/base/autosuggestion-state.ts +6 -0
  440. package/src/types/base/autosuggestions-bare-function.ts +30 -0
  441. package/src/types/base/base-autosuggestions-config.tsx +123 -0
  442. package/src/types/base/base-copilot-textarea-props.tsx +58 -0
  443. package/src/types/base/custom-editor.tsx +29 -0
  444. package/src/types/base/editor-autocomplete-state.ts +20 -0
  445. package/src/types/base/index.ts +6 -0
  446. package/src/types/html-copilot-textarea-element.ts +5 -0
  447. package/src/types/index.ts +3 -0
  448. package/tailwind.config.js +9 -0
  449. package/tsconfig.json +12 -0
  450. package/tsup.config.ts +16 -0
  451. package/typedoc.json +4 -0
@@ -0,0 +1,108 @@
1
+ // src/lib/slatejs-edits/with-partial-history.ts
2
+ import { Editor, Operation, Path, Transforms } from "slate";
3
+ import { HistoryEditor } from "slate-history";
4
+ var withPartialHistory = (editor, shouldSave) => {
5
+ const e = editor;
6
+ const { apply } = e;
7
+ e.history = { undos: [], redos: [] };
8
+ e.redo = () => {
9
+ const { history } = e;
10
+ const { redos } = history;
11
+ if (redos.length > 0) {
12
+ const batch = redos[redos.length - 1];
13
+ if (batch.selectionBefore) {
14
+ Transforms.setSelection(e, batch.selectionBefore);
15
+ }
16
+ HistoryEditor.withoutSaving(e, () => {
17
+ Editor.withoutNormalizing(e, () => {
18
+ for (const op of batch.operations) {
19
+ e.apply(op);
20
+ }
21
+ });
22
+ });
23
+ history.redos.pop();
24
+ e.writeHistory("undos", batch);
25
+ }
26
+ };
27
+ e.undo = () => {
28
+ const { history } = e;
29
+ const { undos } = history;
30
+ if (undos.length > 0) {
31
+ const batch = undos[undos.length - 1];
32
+ HistoryEditor.withoutSaving(e, () => {
33
+ Editor.withoutNormalizing(e, () => {
34
+ const inverseOps = batch.operations.map(Operation.inverse).reverse();
35
+ for (const op of inverseOps) {
36
+ e.apply(op);
37
+ }
38
+ if (batch.selectionBefore) {
39
+ Transforms.setSelection(e, batch.selectionBefore);
40
+ }
41
+ });
42
+ });
43
+ e.writeHistory("redos", batch);
44
+ history.undos.pop();
45
+ }
46
+ };
47
+ e.apply = (op) => {
48
+ const { operations, history } = e;
49
+ const { undos } = history;
50
+ const lastBatch = undos[undos.length - 1];
51
+ const lastOp = lastBatch && lastBatch.operations[lastBatch.operations.length - 1];
52
+ let save = HistoryEditor.isSaving(e);
53
+ let merge = HistoryEditor.isMerging(e);
54
+ if (save == null) {
55
+ save = shouldSave(op, lastOp);
56
+ }
57
+ if (save) {
58
+ if (merge == null) {
59
+ if (lastBatch == null) {
60
+ merge = false;
61
+ } else if (operations.length !== 0) {
62
+ merge = true;
63
+ } else {
64
+ merge = shouldMerge(op, lastOp);
65
+ }
66
+ }
67
+ if (lastBatch && merge) {
68
+ lastBatch.operations.push(op);
69
+ } else {
70
+ const batch = {
71
+ operations: [op],
72
+ selectionBefore: e.selection
73
+ };
74
+ e.writeHistory("undos", batch);
75
+ }
76
+ while (undos.length > 100) {
77
+ undos.shift();
78
+ }
79
+ history.redos = [];
80
+ }
81
+ apply(op);
82
+ };
83
+ e.writeHistory = (stack, batch) => {
84
+ e.history[stack].push(batch);
85
+ };
86
+ return e;
87
+ };
88
+ var shouldMerge = (op, prev) => {
89
+ if (prev && op.type === "insert_text" && prev.type === "insert_text" && op.offset === prev.offset + prev.text.length && Path.equals(op.path, prev.path)) {
90
+ return true;
91
+ }
92
+ if (prev && op.type === "remove_text" && prev.type === "remove_text" && op.offset + op.text.length === prev.offset && Path.equals(op.path, prev.path)) {
93
+ return true;
94
+ }
95
+ return false;
96
+ };
97
+ var defaultShouldSave = (op, prev) => {
98
+ if (op.type === "set_selection") {
99
+ return false;
100
+ }
101
+ return true;
102
+ };
103
+
104
+ export {
105
+ withPartialHistory,
106
+ defaultShouldSave
107
+ };
108
+ //# sourceMappingURL=chunk-4NHVQZ67.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/slatejs-edits/with-partial-history.ts"],"sourcesContent":["import { Editor, Operation, Path, Range, Transforms } from \"slate\";\nimport { HistoryEditor } from \"slate-history\";\n\n// Copy-pasted from `https://github.com/ianstormtaylor/slate/blob/main/packages/slate-history/src/with-history.ts`\n// With one exception: the `shouldSave` function is passed in as an argument to `withPartialHistory` instead of being hardcoded\nexport type ShouldSaveToHistory = (op: Operation, prev: Operation | undefined) => boolean;\n\nexport const withPartialHistory = <T extends Editor>(\n editor: T,\n shouldSave: ShouldSaveToHistory,\n) => {\n const e = editor as T & HistoryEditor;\n const { apply } = e;\n e.history = { undos: [], redos: [] };\n\n e.redo = () => {\n const { history } = e;\n const { redos } = history;\n\n if (redos.length > 0) {\n const batch = redos[redos.length - 1];\n\n if (batch.selectionBefore) {\n Transforms.setSelection(e, batch.selectionBefore);\n }\n\n HistoryEditor.withoutSaving(e, () => {\n Editor.withoutNormalizing(e, () => {\n for (const op of batch.operations) {\n e.apply(op);\n }\n });\n });\n\n history.redos.pop();\n e.writeHistory(\"undos\", batch);\n }\n };\n\n e.undo = () => {\n const { history } = e;\n const { undos } = history;\n\n if (undos.length > 0) {\n const batch = undos[undos.length - 1];\n\n HistoryEditor.withoutSaving(e, () => {\n Editor.withoutNormalizing(e, () => {\n const inverseOps = batch.operations.map(Operation.inverse).reverse();\n\n for (const op of inverseOps) {\n e.apply(op);\n }\n if (batch.selectionBefore) {\n Transforms.setSelection(e, batch.selectionBefore);\n }\n });\n });\n\n e.writeHistory(\"redos\", batch);\n history.undos.pop();\n }\n };\n\n e.apply = (op: Operation) => {\n const { operations, history } = e;\n const { undos } = history;\n const lastBatch = undos[undos.length - 1];\n const lastOp = lastBatch && lastBatch.operations[lastBatch.operations.length - 1];\n let save = HistoryEditor.isSaving(e);\n let merge = HistoryEditor.isMerging(e);\n\n if (save == null) {\n save = shouldSave(op, lastOp);\n }\n\n if (save) {\n if (merge == null) {\n if (lastBatch == null) {\n merge = false;\n } else if (operations.length !== 0) {\n merge = true;\n } else {\n merge = shouldMerge(op, lastOp);\n }\n }\n\n if (lastBatch && merge) {\n lastBatch.operations.push(op);\n } else {\n const batch = {\n operations: [op],\n selectionBefore: e.selection,\n };\n e.writeHistory(\"undos\", batch);\n }\n\n while (undos.length > 100) {\n undos.shift();\n }\n\n history.redos = [];\n }\n\n apply(op);\n };\n\n e.writeHistory = (stack: \"undos\" | \"redos\", batch: any) => {\n e.history[stack].push(batch);\n };\n\n return e;\n};\n\n/**\n * Check whether to merge an operation into the previous operation.\n */\n\nconst shouldMerge = (op: Operation, prev: Operation | undefined): boolean => {\n if (\n prev &&\n op.type === \"insert_text\" &&\n prev.type === \"insert_text\" &&\n op.offset === prev.offset + prev.text.length &&\n Path.equals(op.path, prev.path)\n ) {\n return true;\n }\n\n if (\n prev &&\n op.type === \"remove_text\" &&\n prev.type === \"remove_text\" &&\n op.offset + op.text.length === prev.offset &&\n Path.equals(op.path, prev.path)\n ) {\n return true;\n }\n\n return false;\n};\n\nexport const defaultShouldSave = (op: Operation, prev: Operation | undefined): boolean => {\n if (op.type === \"set_selection\") {\n return false;\n }\n\n return true;\n};\n"],"mappings":"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","names":[]}
@@ -0,0 +1,52 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-YLFAIYRY.mjs";
4
+ import {
5
+ __objRest,
6
+ __spreadValues
7
+ } from "./chunk-MRXNTQOX.mjs";
8
+
9
+ // src/components/ui/button.tsx
10
+ import * as React from "react";
11
+ import { Slot } from "@radix-ui/react-slot";
12
+ import { cva } from "class-variance-authority";
13
+ import { jsx } from "react/jsx-runtime";
14
+ var buttonVariants = cva(
15
+ "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",
16
+ {
17
+ variants: {
18
+ variant: {
19
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
20
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
21
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
22
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
23
+ ghost: "hover:bg-accent hover:text-accent-foreground",
24
+ link: "text-primary underline-offset-4 hover:underline"
25
+ },
26
+ size: {
27
+ default: "h-10 px-4 py-2",
28
+ sm: "h-9 rounded-md px-3",
29
+ lg: "h-11 rounded-md px-8",
30
+ icon: "h-10 w-10"
31
+ }
32
+ },
33
+ defaultVariants: {
34
+ variant: "default",
35
+ size: "default"
36
+ }
37
+ }
38
+ );
39
+ var Button = React.forwardRef(
40
+ (_a, ref) => {
41
+ var _b = _a, { className, variant, size, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "size", "asChild"]);
42
+ const Comp = asChild ? Slot : "button";
43
+ return /* @__PURE__ */ jsx(Comp, __spreadValues({ className: cn(buttonVariants({ variant, size, className })), ref }, props));
44
+ }
45
+ );
46
+ Button.displayName = "Button";
47
+
48
+ export {
49
+ buttonVariants,
50
+ Button
51
+ };
52
+ //# sourceMappingURL=chunk-4PDYALMP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/button.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"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\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n"],"mappings":";;;;;;;;;AAAA,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,WAA8B;AAwCjC;AApCN,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aAAa;AAAA,QACb,SAAS;AAAA,QACT,WAAW;AAAA,QACX,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAQA,IAAM,SAAe;AAAA,EACnB,CAAC,IAAyD,QAAQ;AAAjE,iBAAE,aAAW,SAAS,MAAM,UAAU,MAvCzC,IAuCG,IAAgD,kBAAhD,IAAgD,CAA9C,aAAW,WAAS,QAAM;AAC3B,UAAM,OAAO,UAAU,OAAO;AAC9B,WACE,oBAAC,uBAAK,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC,GAAG,OAAc,MAAO;AAAA,EAE5F;AACF;AACA,OAAO,cAAc;","names":[]}
@@ -0,0 +1,125 @@
1
+ import {
2
+ HoveringInsertionPromptBox
3
+ } from "./chunk-ABYCGF77.mjs";
4
+ import {
5
+ useHoveringEditorContext
6
+ } from "./chunk-LYB4B6MK.mjs";
7
+ import {
8
+ Menu,
9
+ Portal
10
+ } from "./chunk-HDBI2WN5.mjs";
11
+ import {
12
+ getFullEditorTextWithNewlines,
13
+ getTextAroundSelection
14
+ } from "./chunk-ECR45NSD.mjs";
15
+
16
+ // src/components/hovering-toolbar/hovering-toolbar.tsx
17
+ import { useEffect, useRef, useState } from "react";
18
+ import { Transforms } from "slate";
19
+ import { useSlate, useSlateSelection } from "slate-react";
20
+ import { jsx } from "react/jsx-runtime";
21
+ var HoveringToolbar = (props) => {
22
+ const ref = useRef(null);
23
+ const editor = useSlate();
24
+ const selection = useSlateSelection();
25
+ const { isDisplayed, setIsDisplayed } = useHoveringEditorContext();
26
+ const [isClient, setIsClient] = useState(false);
27
+ useEffect(() => {
28
+ setIsClient(true);
29
+ }, []);
30
+ useEffect(() => {
31
+ const el = ref.current;
32
+ const { selection: selection2 } = editor;
33
+ if (!el) {
34
+ return;
35
+ }
36
+ if (!selection2) {
37
+ el.removeAttribute("style");
38
+ return;
39
+ }
40
+ const domSelection = window.getSelection();
41
+ if (!domSelection || domSelection.rangeCount === 0) {
42
+ return;
43
+ }
44
+ const domRange = domSelection.getRangeAt(0);
45
+ const rect = domRange.getBoundingClientRect();
46
+ if (rect.top === 0 && rect.left === 0 && rect.width === 0 && rect.height === 0) {
47
+ return;
48
+ }
49
+ const minGapFromEdge = 60;
50
+ const verticalOffsetFromCorner = 35;
51
+ const horizontalOffsetFromCorner = 15;
52
+ let top = rect.top + window.scrollY - el.offsetHeight + verticalOffsetFromCorner;
53
+ if (top < minGapFromEdge) {
54
+ top = rect.bottom + window.scrollY + minGapFromEdge;
55
+ } else if (top + el.offsetHeight > window.innerHeight - minGapFromEdge) {
56
+ top = rect.top + window.scrollY - el.offsetHeight - minGapFromEdge;
57
+ }
58
+ let left = rect.left + window.scrollX - el.offsetWidth / 2 + rect.width / 2 + horizontalOffsetFromCorner;
59
+ if (left < minGapFromEdge) {
60
+ left = minGapFromEdge;
61
+ } else if (left + el.offsetWidth > window.innerWidth - minGapFromEdge) {
62
+ left = window.innerWidth - el.offsetWidth - minGapFromEdge;
63
+ }
64
+ el.style.opacity = "1";
65
+ el.style.position = "absolute";
66
+ el.style.top = `${top}px`;
67
+ el.style.left = `${left}px`;
68
+ });
69
+ useEffect(() => {
70
+ const handleClickOutside = (event) => {
71
+ if (ref.current && !ref.current.contains(event.target)) {
72
+ setIsDisplayed(false);
73
+ }
74
+ };
75
+ document.addEventListener("mousedown", handleClickOutside);
76
+ return () => {
77
+ document.removeEventListener("mousedown", handleClickOutside);
78
+ };
79
+ }, [ref, setIsDisplayed]);
80
+ if (!isClient) {
81
+ return null;
82
+ }
83
+ return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(
84
+ Menu,
85
+ {
86
+ ref,
87
+ 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"),
88
+ "data-testid": "hovering-toolbar",
89
+ children: isDisplayed && selection && /* @__PURE__ */ jsx(
90
+ HoveringInsertionPromptBox,
91
+ {
92
+ editorState: editorState(editor, selection),
93
+ apiConfig: props.apiConfig,
94
+ closeWindow: () => {
95
+ setIsDisplayed(false);
96
+ },
97
+ performInsertion: (insertedText) => {
98
+ Transforms.delete(editor, { at: selection });
99
+ Transforms.insertText(editor, insertedText, {
100
+ at: selection
101
+ });
102
+ setIsDisplayed(false);
103
+ },
104
+ contextCategories: props.contextCategories
105
+ }
106
+ )
107
+ }
108
+ ) });
109
+ };
110
+ function editorState(editor, selection) {
111
+ const textAroundCursor = getTextAroundSelection(editor);
112
+ if (textAroundCursor) {
113
+ return textAroundCursor;
114
+ }
115
+ return {
116
+ textBeforeCursor: getFullEditorTextWithNewlines(editor),
117
+ textAfterCursor: "",
118
+ selectedText: ""
119
+ };
120
+ }
121
+
122
+ export {
123
+ HoveringToolbar
124
+ };
125
+ //# sourceMappingURL=chunk-4XXU5BSA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/hovering-toolbar/hovering-toolbar.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { Editor, Location, Transforms } from \"slate\";\nimport { useSlate, useSlateSelection } from \"slate-react\";\nimport { HoveringInsertionPromptBox } from \"./text-insertion-prompt-box\";\nimport { Menu, Portal } from \"./hovering-toolbar-components\";\nimport { useHoveringEditorContext } from \"./hovering-editor-provider\";\nimport {\n getFullEditorTextWithNewlines,\n getTextAroundSelection,\n} from \"../../lib/get-text-around-cursor\";\nimport {\n EditingEditorState,\n InsertionEditorApiConfig,\n} from \"../../types/base/autosuggestions-bare-function\";\n\nexport interface HoveringToolbarProps {\n apiConfig: InsertionEditorApiConfig;\n contextCategories: string[];\n hoverMenuClassname: string | undefined;\n}\n\nexport const HoveringToolbar = (props: HoveringToolbarProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const editor = useSlate();\n const selection = useSlateSelection();\n const { isDisplayed, setIsDisplayed } = useHoveringEditorContext();\n\n // only render on client\n const [isClient, setIsClient] = useState(false);\n useEffect(() => {\n setIsClient(true);\n }, []);\n\n useEffect(() => {\n const el = ref.current;\n const { selection } = editor;\n\n if (!el) {\n return;\n }\n\n if (!selection) {\n el.removeAttribute(\"style\");\n return;\n }\n\n const domSelection = window.getSelection();\n if (!domSelection || domSelection.rangeCount === 0) {\n return;\n }\n\n const domRange = domSelection.getRangeAt(0);\n const rect = domRange.getBoundingClientRect();\n\n // We use window = (0,0,0,0) as a signal that the selection is not in the original copilot-textarea,\n // but inside the hovering window.\n //\n // in such case, we simply do nothing.\n if (rect.top === 0 && rect.left === 0 && rect.width === 0 && rect.height === 0) {\n return;\n }\n const minGapFromEdge = 60;\n const verticalOffsetFromCorner = 35;\n const horizontalOffsetFromCorner = 15;\n let top = rect.top + window.scrollY - el.offsetHeight + verticalOffsetFromCorner;\n // make sure top is in the viewport and not too close to the edge\n if (top < minGapFromEdge) {\n top = rect.bottom + window.scrollY + minGapFromEdge;\n } else if (top + el.offsetHeight > window.innerHeight - minGapFromEdge) {\n top = rect.top + window.scrollY - el.offsetHeight - minGapFromEdge;\n }\n\n let left =\n rect.left + window.scrollX - el.offsetWidth / 2 + rect.width / 2 + horizontalOffsetFromCorner;\n // make sure left is in the viewport and not too close to the edge\n if (left < minGapFromEdge) {\n left = minGapFromEdge;\n } else if (left + el.offsetWidth > window.innerWidth - minGapFromEdge) {\n left = window.innerWidth - el.offsetWidth - minGapFromEdge;\n }\n\n el.style.opacity = \"1\";\n el.style.position = \"absolute\";\n\n el.style.top = `${top}px`;\n el.style.left = `${left}px`;\n });\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n setIsDisplayed(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, setIsDisplayed]);\n\n if (!isClient) {\n return null;\n }\n\n return (\n <Portal>\n <Menu\n ref={ref}\n className={\n \"copilot-kit-textarea-css-scope \" +\n (props.hoverMenuClassname ||\n \"p-2 absolute z-10 top-[-10000px] left-[-10000px] mt-[-6px] opacity-0 transition-opacity duration-700\")\n }\n data-testid=\"hovering-toolbar\"\n >\n {isDisplayed && selection && (\n <HoveringInsertionPromptBox\n editorState={editorState(editor, selection)}\n apiConfig={props.apiConfig}\n closeWindow={() => {\n setIsDisplayed(false);\n }}\n performInsertion={(insertedText) => {\n // replace the selection with the inserted text\n Transforms.delete(editor, { at: selection });\n Transforms.insertText(editor, insertedText, {\n at: selection,\n });\n setIsDisplayed(false);\n }}\n contextCategories={props.contextCategories}\n />\n )}\n </Menu>\n </Portal>\n );\n};\n\nfunction editorState(editor: Editor, selection: Location): EditingEditorState {\n const textAroundCursor = getTextAroundSelection(editor);\n if (textAroundCursor) {\n return textAroundCursor;\n }\n\n return {\n textBeforeCursor: getFullEditorTextWithNewlines(editor),\n textAfterCursor: \"\",\n selectedText: \"\",\n };\n}\n"],"mappings":"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","names":["selection"]}
@@ -0,0 +1,29 @@
1
+ // src/lib/slatejs-edits/replace-text.ts
2
+ import { Editor, Transforms } from "slate";
3
+ function replaceEditorText(editor, newText) {
4
+ Transforms.delete(editor, {
5
+ at: {
6
+ anchor: Editor.start(editor, []),
7
+ focus: Editor.end(editor, [])
8
+ }
9
+ });
10
+ if (newText && newText !== "") {
11
+ Transforms.insertNodes(
12
+ editor,
13
+ [
14
+ {
15
+ type: "paragraph",
16
+ children: [{ text: newText }]
17
+ }
18
+ ],
19
+ {
20
+ at: [0]
21
+ }
22
+ );
23
+ }
24
+ }
25
+
26
+ export {
27
+ replaceEditorText
28
+ };
29
+ //# sourceMappingURL=chunk-5UNJXFUO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/slatejs-edits/replace-text.ts"],"sourcesContent":["import { Editor, Transforms } from \"slate\";\n\nexport function replaceEditorText(editor: Editor, newText: string) {\n // clear all previous text\n Transforms.delete(editor, {\n at: {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n },\n });\n\n // insert new text\n if (newText && newText !== \"\") {\n // don't insert empty text - results in strange visual behavior\n Transforms.insertNodes(\n editor,\n [\n {\n type: \"paragraph\",\n children: [{ text: newText }],\n },\n ],\n {\n at: [0],\n },\n );\n }\n}\n"],"mappings":";AAAA,SAAS,QAAQ,kBAAkB;AAE5B,SAAS,kBAAkB,QAAgB,SAAiB;AAEjE,aAAW,OAAO,QAAQ;AAAA,IACxB,IAAI;AAAA,MACF,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,MAC/B,OAAO,OAAO,IAAI,QAAQ,CAAC,CAAC;AAAA,IAC9B;AAAA,EACF,CAAC;AAGD,MAAI,WAAW,YAAY,IAAI;AAE7B,eAAW;AAAA,MACT;AAAA,MACA;AAAA,QACE;AAAA,UACE,MAAM;AAAA,UACN,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;AAAA,QAC9B;AAAA,MACF;AAAA,MACA;AAAA,QACE,IAAI,CAAC,CAAC;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,39 @@
1
+ import {
2
+ __spreadProps,
3
+ __spreadValues
4
+ } from "./chunk-MRXNTQOX.mjs";
5
+
6
+ // src/components/base-copilot-textarea/render-element.tsx
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function makeRenderElementFunction(suggestionsStyle) {
9
+ return (props) => {
10
+ switch (props.element.type) {
11
+ case "paragraph":
12
+ return /* @__PURE__ */ jsx(DefaultElement, __spreadValues({}, props));
13
+ case "suggestion":
14
+ return /* @__PURE__ */ jsx(SuggestionElement, __spreadProps(__spreadValues({}, props), { suggestionsStyle }));
15
+ }
16
+ };
17
+ }
18
+ var DefaultElement = (props) => {
19
+ return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({}, props.attributes), { children: props.children }));
20
+ };
21
+ var SuggestionElement = (props) => {
22
+ return /* @__PURE__ */ jsxs(
23
+ "span",
24
+ __spreadProps(__spreadValues({}, props.attributes), {
25
+ style: __spreadValues({}, props.suggestionsStyle),
26
+ "data-testid": "suggestion",
27
+ contentEditable: false,
28
+ children: [
29
+ props.children,
30
+ props.element.type === "suggestion" && props.element.content
31
+ ]
32
+ })
33
+ );
34
+ };
35
+
36
+ export {
37
+ makeRenderElementFunction
38
+ };
39
+ //# sourceMappingURL=chunk-7L6GIHDM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/base-copilot-textarea/render-element.tsx"],"sourcesContent":["import { RenderElementProps } from \"slate-react\";\n\nexport type RenderElementFunction = (props: RenderElementProps) => JSX.Element;\n\nexport function makeRenderElementFunction(\n suggestionsStyle: React.CSSProperties,\n): RenderElementFunction {\n return (props: RenderElementProps) => {\n switch (props.element.type) {\n case \"paragraph\":\n return <DefaultElement {...props} />;\n case \"suggestion\":\n return <SuggestionElement {...props} suggestionsStyle={suggestionsStyle} />;\n }\n };\n}\n\nconst DefaultElement = (props: RenderElementProps) => {\n return <div {...props.attributes}>{props.children}</div>;\n};\nconst SuggestionElement = (\n props: RenderElementProps & {\n suggestionsStyle: React.CSSProperties;\n },\n) => {\n return (\n <span\n {...props.attributes}\n style={{\n ...props.suggestionsStyle,\n }}\n data-testid=\"suggestion\"\n contentEditable={false}\n >\n {props.children /* https://github.com/ianstormtaylor/slate/issues/3930 */}\n {props.element.type === \"suggestion\" && props.element.content}\n </span>\n );\n};\n"],"mappings":";;;;;;AAUe,cAgBX,YAhBW;AANR,SAAS,0BACd,kBACuB;AACvB,SAAO,CAAC,UAA8B;AACpC,YAAQ,MAAM,QAAQ,MAAM;AAAA,MAC1B,KAAK;AACH,eAAO,oBAAC,mCAAmB,MAAO;AAAA,MACpC,KAAK;AACH,eAAO,oBAAC,oDAAsB,QAAtB,EAA6B,mBAAoC;AAAA,IAC7E;AAAA,EACF;AACF;AAEA,IAAM,iBAAiB,CAAC,UAA8B;AACpD,SAAO,oBAAC,wCAAQ,MAAM,aAAd,EAA2B,gBAAM,WAAS;AACpD;AACA,IAAM,oBAAoB,CACxB,UAGG;AACH,SACE;AAAA,IAAC;AAAA,qCACK,MAAM,aADX;AAAA,MAEC,OAAO,mBACF,MAAM;AAAA,MAEX,eAAY;AAAA,MACZ,iBAAiB;AAAA,MAEhB;AAAA,cAAM;AAAA,QACN,MAAM,QAAQ,SAAS,gBAAgB,MAAM,QAAQ;AAAA;AAAA;AAAA,EACxD;AAEJ;","names":[]}
@@ -0,0 +1,59 @@
1
+ // src/components/base-copilot-textarea/use-add-branding-css.tsx
2
+ import { useEffect } from "react";
3
+ function useAddBrandingCss(suggestionStyleAugmented, disableBranding) {
4
+ const cssSelector = ".copilot-textarea.with-branding";
5
+ useEffect(() => {
6
+ if (disableBranding) {
7
+ return;
8
+ }
9
+ const styleEl = document.createElement("style");
10
+ styleEl.id = "dynamic-styles";
11
+ let dynamicStyles = Object.entries(suggestionStyleAugmented).map(([key, value]) => {
12
+ const kebabCaseKey = key.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase();
13
+ return `${kebabCaseKey}: ${value};`;
14
+ }).join(" ");
15
+ dynamicStyles += `font-style: normal; font-size: x-small;`;
16
+ dynamicStyles += `content: "CopilotKit";`;
17
+ dynamicStyles += `bottom: 6px;`;
18
+ dynamicStyles += `right: 6px;`;
19
+ dynamicStyles += `pointer-events: none;`;
20
+ dynamicStyles += `font-weight: 200;`;
21
+ dynamicStyles += `padding: 0;`;
22
+ dynamicStyles += `margin: 0;`;
23
+ dynamicStyles += `border: 0;`;
24
+ dynamicStyles += `line-height: 1;`;
25
+ dynamicStyles += `position: absolute;`;
26
+ styleEl.innerHTML = `
27
+ ${cssSelector}::after {
28
+ ${dynamicStyles}
29
+ }
30
+ `;
31
+ document.head.appendChild(styleEl);
32
+ const textarea = document.querySelector(cssSelector);
33
+ const handleScroll = () => {
34
+ const styleEl2 = document.getElementById("dynamic-styles");
35
+ if (styleEl2 && textarea) {
36
+ const offsetFromBottom = -textarea.scrollTop + 6;
37
+ const offsetFromRight = -textarea.scrollLeft + 6;
38
+ styleEl2.innerHTML = `
39
+ ${cssSelector}::after {
40
+ ${dynamicStyles}
41
+ bottom: ${offsetFromBottom}px;
42
+ right: ${offsetFromRight}px;
43
+ }
44
+ `;
45
+ }
46
+ };
47
+ textarea == null ? void 0 : textarea.addEventListener("scroll", handleScroll);
48
+ return () => {
49
+ var _a;
50
+ (_a = document.getElementById("dynamic-styles")) == null ? void 0 : _a.remove();
51
+ textarea == null ? void 0 : textarea.removeEventListener("scroll", handleScroll);
52
+ };
53
+ }, [disableBranding, suggestionStyleAugmented]);
54
+ }
55
+
56
+ export {
57
+ useAddBrandingCss
58
+ };
59
+ //# sourceMappingURL=chunk-7LSRNPNI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/base-copilot-textarea/use-add-branding-css.tsx"],"sourcesContent":["import { useEffect } from \"react\";\n\nexport function useAddBrandingCss(\n suggestionStyleAugmented: React.CSSProperties,\n disableBranding: boolean | undefined,\n) {\n const cssSelector = \".copilot-textarea.with-branding\";\n useEffect(() => {\n if (disableBranding) {\n return;\n }\n\n // ---\n // 1: Add the CSS to the DOM\n const styleEl = document.createElement(\"style\");\n styleEl.id = \"dynamic-styles\";\n\n // Build the CSS string dynamically\n let dynamicStyles = Object.entries(suggestionStyleAugmented)\n .map(([key, value]) => {\n const kebabCaseKey = key.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\").toLowerCase();\n return `${kebabCaseKey}: ${value};`;\n })\n .join(\" \");\n\n // Append overrides for italics and font-size\n dynamicStyles += `font-style: normal; font-size: x-small;`;\n dynamicStyles += `content: \"CopilotKit\";`;\n dynamicStyles += `bottom: 6px;`;\n dynamicStyles += `right: 6px;`;\n dynamicStyles += `pointer-events: none;`;\n dynamicStyles += `font-weight: 200;`;\n dynamicStyles += `padding: 0;`;\n dynamicStyles += `margin: 0;`;\n dynamicStyles += `border: 0;`;\n dynamicStyles += `line-height: 1;`;\n dynamicStyles += `position: absolute;`;\n\n // Append it to the ::after class\n styleEl.innerHTML = `\n ${cssSelector}::after {\n ${dynamicStyles}\n }\n `;\n\n document.head.appendChild(styleEl);\n\n // ---\n // 2: Add the scroll listener (to keep the branding in the bottom right as the textarea scrolls)\n const textarea = document.querySelector(cssSelector);\n const handleScroll = () => {\n const styleEl = document.getElementById(\"dynamic-styles\");\n if (styleEl && textarea) {\n const offsetFromBottom = -textarea.scrollTop + 6;\n const offsetFromRight = -textarea.scrollLeft + 6;\n styleEl.innerHTML = `\n ${cssSelector}::after {\n ${dynamicStyles}\n bottom: ${offsetFromBottom}px;\n right: ${offsetFromRight}px;\n }\n `;\n }\n };\n\n textarea?.addEventListener(\"scroll\", handleScroll);\n\n // Cleanup\n return () => {\n document.getElementById(\"dynamic-styles\")?.remove();\n textarea?.removeEventListener(\"scroll\", handleScroll);\n };\n }, [disableBranding, suggestionStyleAugmented]);\n}\n"],"mappings":";AAAA,SAAS,iBAAiB;AAEnB,SAAS,kBACd,0BACA,iBACA;AACA,QAAM,cAAc;AACpB,YAAU,MAAM;AACd,QAAI,iBAAiB;AACnB;AAAA,IACF;AAIA,UAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,YAAQ,KAAK;AAGb,QAAI,gBAAgB,OAAO,QAAQ,wBAAwB,EACxD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACrB,YAAM,eAAe,IAAI,QAAQ,gCAAgC,OAAO,EAAE,YAAY;AACtF,aAAO,GAAG,iBAAiB;AAAA,IAC7B,CAAC,EACA,KAAK,GAAG;AAGX,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AACjB,qBAAiB;AAGjB,YAAQ,YAAY;AAAA,QAChB;AAAA,UACE;AAAA;AAAA;AAIN,aAAS,KAAK,YAAY,OAAO;AAIjC,UAAM,WAAW,SAAS,cAAc,WAAW;AACnD,UAAM,eAAe,MAAM;AACzB,YAAMA,WAAU,SAAS,eAAe,gBAAgB;AACxD,UAAIA,YAAW,UAAU;AACvB,cAAM,mBAAmB,CAAC,SAAS,YAAY;AAC/C,cAAM,kBAAkB,CAAC,SAAS,aAAa;AAC/C,QAAAA,SAAQ,YAAY;AAAA,YAChB;AAAA,cACE;AAAA,sBACQ;AAAA,qBACD;AAAA;AAAA;AAAA,MAGf;AAAA,IACF;AAEA,yCAAU,iBAAiB,UAAU;AAGrC,WAAO,MAAM;AApEjB;AAqEM,qBAAS,eAAe,gBAAgB,MAAxC,mBAA2C;AAC3C,2CAAU,oBAAoB,UAAU;AAAA,IAC1C;AAAA,EACF,GAAG,CAAC,iBAAiB,wBAAwB,CAAC;AAChD;","names":["styleEl"]}
@@ -0,0 +1,31 @@
1
+ import {
2
+ HoveringInsertionPromptBoxCore
3
+ } from "./chunk-2VMZ5ZWT.mjs";
4
+
5
+ // src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx
6
+ import { jsx } from "react/jsx-runtime";
7
+ var HoveringInsertionPromptBox = (props) => {
8
+ return /* @__PURE__ */ jsx(
9
+ "div",
10
+ {
11
+ className: "flex flex-col justify-center items-center space-y-4 rounded-md border shadow-lg p-4 border-gray- bg-white",
12
+ style: { width: "35rem" },
13
+ children: /* @__PURE__ */ jsx(
14
+ HoveringInsertionPromptBoxCore,
15
+ {
16
+ state: {
17
+ editorState: props.editorState
18
+ },
19
+ insertionOrEditingFunction: props.apiConfig.insertionOrEditingFunction,
20
+ performInsertion: props.performInsertion,
21
+ contextCategories: props.contextCategories
22
+ }
23
+ )
24
+ }
25
+ );
26
+ };
27
+
28
+ export {
29
+ HoveringInsertionPromptBox
30
+ };
31
+ //# sourceMappingURL=chunk-ABYCGF77.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx"],"sourcesContent":["import { HoveringInsertionPromptBoxCore } from \"./hovering-insertion-prompt-box-core\";\nimport {\n EditingEditorState,\n InsertionEditorApiConfig,\n} from \"../../../types/base/autosuggestions-bare-function\";\n\nexport interface Props {\n editorState: EditingEditorState;\n apiConfig: InsertionEditorApiConfig;\n performInsertion: (insertedText: string) => void;\n closeWindow: () => void;\n contextCategories: string[];\n}\n\nexport const HoveringInsertionPromptBox = (props: Props) => {\n return (\n <div\n className=\"flex flex-col justify-center items-center space-y-4 rounded-md border shadow-lg p-4 border-gray- bg-white\"\n style={{ width: \"35rem\" }}\n >\n <HoveringInsertionPromptBoxCore\n state={{\n editorState: props.editorState,\n }}\n insertionOrEditingFunction={props.apiConfig.insertionOrEditingFunction}\n performInsertion={props.performInsertion}\n contextCategories={props.contextCategories}\n />\n </div>\n );\n};\n"],"mappings":";;;;;AAoBM;AANC,IAAM,6BAA6B,CAAC,UAAiB;AAC1D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,OAAO,QAAQ;AAAA,MAExB;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,aAAa,MAAM;AAAA,UACrB;AAAA,UACA,4BAA4B,MAAM,UAAU;AAAA,UAC5C,kBAAkB,MAAM;AAAA,UACxB,mBAAmB,MAAM;AAAA;AAAA,MAC3B;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,13 @@
1
+ import {
2
+ arraysAreEqual
3
+ } from "./chunk-YLFAIYRY.mjs";
4
+
5
+ // src/types/base/editor-autocomplete-state.ts
6
+ function areEqual_autocompleteState(prev, next) {
7
+ return prev.cursorPoint.offset === next.cursorPoint.offset && arraysAreEqual(prev.cursorPoint.path, next.cursorPoint.path) && prev.textBeforeCursor === next.textBeforeCursor && prev.textAfterCursor === next.textAfterCursor;
8
+ }
9
+
10
+ export {
11
+ areEqual_autocompleteState
12
+ };
13
+ //# sourceMappingURL=chunk-AJ5OMEXM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/base/editor-autocomplete-state.ts"],"sourcesContent":["import { BasePoint } from \"slate\";\nimport { arraysAreEqual } from \"../../lib/utils\";\n\nexport interface EditorAutocompleteState {\n cursorPoint: BasePoint;\n textBeforeCursor: string;\n textAfterCursor: string;\n}\n\nexport function areEqual_autocompleteState(\n prev: EditorAutocompleteState,\n next: EditorAutocompleteState,\n) {\n return (\n prev.cursorPoint.offset === next.cursorPoint.offset &&\n arraysAreEqual(prev.cursorPoint.path, next.cursorPoint.path) &&\n prev.textBeforeCursor === next.textBeforeCursor &&\n prev.textAfterCursor === next.textAfterCursor\n );\n}\n"],"mappings":";;;;;AASO,SAAS,2BACd,MACA,MACA;AACA,SACE,KAAK,YAAY,WAAW,KAAK,YAAY,UAC7C,eAAe,KAAK,YAAY,MAAM,KAAK,YAAY,IAAI,KAC3D,KAAK,qBAAqB,KAAK,oBAC/B,KAAK,oBAAoB,KAAK;AAElC;","names":[]}
@@ -0,0 +1,60 @@
1
+ import {
2
+ useMakeStandardInsertionOrEditingFunction
3
+ } from "./chunk-RXV67GJN.mjs";
4
+ import {
5
+ useMakeStandardAutosuggestionFunction
6
+ } from "./chunk-F6GMWOLE.mjs";
7
+ import {
8
+ defaultAutosuggestionsConfig
9
+ } from "./chunk-MGYT7RNL.mjs";
10
+ import {
11
+ BaseCopilotTextarea
12
+ } from "./chunk-PZYM7K4Y.mjs";
13
+ import {
14
+ __objRest,
15
+ __spreadProps,
16
+ __spreadValues
17
+ } from "./chunk-MRXNTQOX.mjs";
18
+
19
+ // src/components/copilot-textarea/copilot-textarea.tsx
20
+ import React from "react";
21
+ import merge from "lodash.merge";
22
+ import { Fragment, jsx } from "react/jsx-runtime";
23
+ var CopilotTextarea = React.forwardRef(
24
+ (props, ref) => {
25
+ const _a = props, { autosuggestionsConfig: autosuggestionsConfigUserSpecified } = _a, forwardedProps = __objRest(_a, ["autosuggestionsConfig"]);
26
+ const autosuggestionsConfig = merge(
27
+ defaultAutosuggestionsConfig,
28
+ autosuggestionsConfigUserSpecified
29
+ );
30
+ const autosuggestionsFunction = useMakeStandardAutosuggestionFunction(
31
+ autosuggestionsConfig.textareaPurpose,
32
+ autosuggestionsConfig.contextCategories,
33
+ autosuggestionsConfig.chatApiConfigs.suggestionsApiConfig
34
+ );
35
+ const insertionOrEditingFunction = useMakeStandardInsertionOrEditingFunction(
36
+ autosuggestionsConfig.textareaPurpose,
37
+ autosuggestionsConfig.contextCategories,
38
+ autosuggestionsConfig.chatApiConfigs.insertionApiConfig,
39
+ autosuggestionsConfig.chatApiConfigs.editingApiConfig
40
+ );
41
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
42
+ BaseCopilotTextarea,
43
+ __spreadProps(__spreadValues({
44
+ ref
45
+ }, forwardedProps), {
46
+ baseAutosuggestionsConfig: __spreadProps(__spreadValues({}, autosuggestionsConfig), {
47
+ apiConfig: {
48
+ insertionOrEditingFunction,
49
+ autosuggestionsFunction
50
+ }
51
+ })
52
+ })
53
+ ) });
54
+ }
55
+ );
56
+
57
+ export {
58
+ CopilotTextarea
59
+ };
60
+ //# sourceMappingURL=chunk-BNBGJBBM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/copilot-textarea/copilot-textarea.tsx"],"sourcesContent":["/**\n * <br/>\n * <img src=\"/images/CopilotTextarea.gif\" width=\"500\" />\n *\n * `<CopilotTextarea>` is a React component that acts as a drop-in replacement for the standard `<textarea>`,\n * offering enhanced autocomplete features powered by AI. It is context-aware, integrating seamlessly with the\n * [`useCopilotReadable`](/reference/hooks/useCopilotReadable) hook to provide intelligent suggestions based on the application context.\n *\n * In addition, it provides a hovering editor window (available by default via `Cmd + K` on Mac and `Ctrl + K` on Windows) that allows the user to\n * suggest changes to the text, for example providing a summary or rephrasing the text.\n *\n * ## Example\n *\n * ```tsx\n * import { CopilotTextarea } from '@copilotkit/react-textarea';\n * import \"@copilotkit/react-textarea/styles.css\";\n *\n * <CopilotTextarea\n * autosuggestionsConfig={{\n * textareaPurpose:\n * \"the body of an email message\",\n * chatApiConfigs: {},\n * }}\n * />\n * ```\n *\n * ## Usage\n *\n * ### Install Dependencies\n *\n * This component is part of the [@copilotkit/react-textarea](https://npmjs.com/package/@copilotkit/react-textarea) package.\n *\n * ```shell npm2yarn \\\"@copilotkit/react-textarea\"\\\n * npm install @copilotkit/react-core @copilotkit/react-textarea\n * ```\n *\n * ### Usage\n *\n * Use the CopilotTextarea component in your React application similarly to a standard `<textarea />`,\n * with additional configurations for AI-powered features.\n *\n * For example:\n *\n * ```tsx\n * import { useState } from \"react\";\n * import { CopilotTextarea } from \"@copilotkit/react-textarea\";\n * import \"@copilotkit/react-textarea/styles.css\";\n *\n * export function ExampleComponent() {\n * const [text, setText] = useState(\"\");\n *\n * return (\n * <CopilotTextarea\n * className=\"custom-textarea-class\"\n * value={text}\n * onValueChange={(value: string) => setText(value)}\n * placeholder=\"Enter your text here...\"\n * autosuggestionsConfig={{\n * textareaPurpose: \"Provide context or purpose of the textarea.\",\n * chatApiConfigs: {\n * suggestionsApiConfig: {\n * maxTokens: 20,\n * stop: [\".\", \"?\", \"!\"],\n * },\n * },\n * }}\n * />\n * );\n * }\n * ```\n *\n * ### Look & Feel\n *\n * By default, CopilotKit components do not have any styles. You can import CopilotKit's stylesheet at the root of your project:\n * ```tsx title=\"YourRootComponent.tsx\"\n * ...\n * import \"@copilotkit/react-textarea/styles.css\"; // [!code highlight]\n *\n * export function YourRootComponent() {\n * return (\n * <CopilotKit>\n * ...\n * </CopilotKit>\n * );\n * }\n * ```\n * For more information about how to customize the styles, check out the [Customize Look & Feel](/guides/custom-look-and-feel/customize-built-in-ui-components) guide.\n * */\nimport React from \"react\";\nimport { useMakeStandardAutosuggestionFunction } from \"../../hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function\";\nimport { HTMLCopilotTextAreaElement } from \"../../types\";\nimport { BaseCopilotTextareaProps } from \"../../types/base/base-copilot-textarea-props\";\nimport {\n AutosuggestionsConfig,\n defaultAutosuggestionsConfig,\n} from \"../../types/autosuggestions-config\";\nimport { BaseCopilotTextarea } from \"../base-copilot-textarea/base-copilot-textarea\";\nimport { useMakeStandardInsertionOrEditingFunction } from \"../../hooks/make-autosuggestions-function/use-make-standard-insertion-function\";\nimport merge from \"lodash.merge\";\nimport { AutosuggestionsConfigUserSpecified } from \"../../types/autosuggestions-config/autosuggestions-config-user-specified\";\n\n// Like the base copilot textarea props,\n// but with baseAutosuggestionsConfig replaced with autosuggestionsConfig.\nexport interface CopilotTextareaProps\n extends Omit<BaseCopilotTextareaProps, \"baseAutosuggestionsConfig\"> {\n /**\n * Configuration settings for the autosuggestions feature.\n * For full reference, [check the interface on GitHub](https://github.com/CopilotKit/CopilotKit/blob/main/CopilotKit/packages/react-textarea/src/types/base/base-copilot-textarea-props.tsx#L8).\n *\n * <PropertyReference name=\"textareaPurpose\" type=\"string\" required={true} >\n * The purpose of the text area in plain text.\n *\n * Example: *\"The body of the email response\"*\n * </PropertyReference>\n *\n * <PropertyReference name=\"chatApiConfigs\" type=\"ChatApiConfigs\" >\n * The chat API configurations.\n *\n * <strong>NOTE:</strong> You must provide specify at least one of `suggestionsApiConfig` or `insertionApiConfig`.\n *\n * <PropertyReference name=\"suggestionsApiConfig\" type=\"SuggestionsApiConfig\">\n * For full reference, please [click here](https://github.com/CopilotKit/CopilotKit/blob/main/CopilotKit/packages/react-textarea/src/types/autosuggestions-config/suggestions-api-config.tsx#L4).\n * </PropertyReference>\n * <PropertyReference name=\"insertionApiConfig\" type=\"InsertionApiConfig\">\n * For full reference, please [click here](https://github.com/CopilotKit/CopilotKit/blob/main/CopilotKit/packages/react-textarea/src/types/autosuggestions-config/insertions-api-config.tsx#L4).\n * </PropertyReference>\n * </PropertyReference>\n *\n * <PropertyReference name=\"disabled\" type=\"boolean\" >\n * Whether the textarea is disabled.\n * </PropertyReference>\n *\n * <PropertyReference name=\"disableBranding\" type=\"boolean\" >\n * Whether to disable the CopilotKit branding.\n * </PropertyReference>\n *\n * <PropertyReference name=\"placeholderStyle\" type=\"React.CSSProperties\" >\n * Specifies the CSS styles to apply to the placeholder text.\n * </PropertyReference>\n *\n * <PropertyReference name=\"suggestionsStyle\" type=\"React.CSSProperties\" >\n * Specifies the CSS styles to apply to the suggestions list.\n * </PropertyReference>\n *\n * <PropertyReference name=\"hoverMenuClassname\" type=\"string\" >\n * A class name to apply to the editor popover window.\n * </PropertyReference>\n *\n * <PropertyReference name=\"value\" type=\"string\" >\n * The initial value of the textarea. Can be controlled via `onValueChange`.\n * </PropertyReference>\n *\n * <PropertyReference name=\"onValueChange\" type=\"(value: string) => void\" >\n * Callback invoked when the value of the textarea changes.\n * </PropertyReference>\n *\n * <PropertyReference name=\"onChange\" type=\"(event: React.ChangeEvent<HTMLTextAreaElement>) => void\" >\n * Callback invoked when a `change` event is triggered on the textarea element.\n * </PropertyReference>\n *\n * <PropertyReference name=\"shortcut\" type=\"string\" >\n * The shortcut to use to open the editor popover window. Default is `\"Cmd-k\"`.\n * </PropertyReference>\n */\n autosuggestionsConfig: AutosuggestionsConfigUserSpecified;\n}\n\n/**\n * A copilot textarea that uses the standard autosuggestions function.\n */\nexport const CopilotTextarea = React.forwardRef(\n (props: CopilotTextareaProps, ref: React.Ref<HTMLCopilotTextAreaElement>) => {\n // separate the AutosuggestionsConfigUserSpecified from the rest of the props\n const { autosuggestionsConfig: autosuggestionsConfigUserSpecified, ...forwardedProps } = props;\n\n const autosuggestionsConfig: AutosuggestionsConfig = merge(\n defaultAutosuggestionsConfig,\n autosuggestionsConfigUserSpecified,\n );\n\n const autosuggestionsFunction = useMakeStandardAutosuggestionFunction(\n autosuggestionsConfig.textareaPurpose,\n autosuggestionsConfig.contextCategories,\n autosuggestionsConfig.chatApiConfigs.suggestionsApiConfig,\n );\n\n const insertionOrEditingFunction = useMakeStandardInsertionOrEditingFunction(\n autosuggestionsConfig.textareaPurpose,\n autosuggestionsConfig.contextCategories,\n autosuggestionsConfig.chatApiConfigs.insertionApiConfig,\n autosuggestionsConfig.chatApiConfigs.editingApiConfig,\n );\n\n return (\n <>\n <BaseCopilotTextarea\n ref={ref}\n {...forwardedProps}\n baseAutosuggestionsConfig={{\n ...autosuggestionsConfig,\n apiConfig: {\n insertionOrEditingFunction: insertionOrEditingFunction,\n autosuggestionsFunction: autosuggestionsFunction,\n },\n }}\n />\n </>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAwFA,OAAO,WAAW;AAUlB,OAAO,WAAW;AAgGZ,mBACE,WADF;AAxBC,IAAM,kBAAkB,MAAM;AAAA,EACnC,CAAC,OAA6B,QAA+C;AAE3E,UAAyF,YAAjF,yBAAuB,mCA7KnC,IA6K6F,IAAnB,2BAAmB,IAAnB,CAA9D;AAER,UAAM,wBAA+C;AAAA,MACnD;AAAA,MACA;AAAA,IACF;AAEA,UAAM,0BAA0B;AAAA,MAC9B,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,sBAAsB,eAAe;AAAA,IACvC;AAEA,UAAM,6BAA6B;AAAA,MACjC,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,sBAAsB,eAAe;AAAA,MACrC,sBAAsB,eAAe;AAAA,IACvC;AAEA,WACE,gCACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,SACI,iBAFL;AAAA,QAGC,2BAA2B,iCACtB,wBADsB;AAAA,UAEzB,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA;AAAA,IACF,GACF;AAAA,EAEJ;AACF;","names":[]}
@@ -0,0 +1,26 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-YLFAIYRY.mjs";
4
+ import {
5
+ __objRest,
6
+ __spreadValues
7
+ } from "./chunk-MRXNTQOX.mjs";
8
+
9
+ // src/components/ui/label.tsx
10
+ import * as React from "react";
11
+ import * as LabelPrimitive from "@radix-ui/react-label";
12
+ import { cva } from "class-variance-authority";
13
+ import { jsx } from "react/jsx-runtime";
14
+ var labelVariants = cva(
15
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
16
+ );
17
+ var Label = React.forwardRef((_a, ref) => {
18
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
19
+ return /* @__PURE__ */ jsx(LabelPrimitive.Root, __spreadValues({ ref, className: cn(labelVariants(), className) }, props));
20
+ });
21
+ Label.displayName = LabelPrimitive.Root.displayName;
22
+
23
+ export {
24
+ Label
25
+ };
26
+ //# sourceMappingURL=chunk-D47EKHIF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/label.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"],"mappings":";;;;;;;;;AAAA,YAAY,WAAW;AACvB,YAAY,oBAAoB;AAChC,SAAS,WAA8B;AAYrC;AARF,IAAM,gBAAgB;AAAA,EACpB;AACF;AAEA,IAAM,QAAc,iBAGlB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAbL,IAaG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,6BAAgB,qBAAf,iBAAoB,KAAU,WAAW,GAAG,cAAc,GAAG,SAAS,KAAO,MAAO;AAAA,CACtF;AACD,MAAM,cAA6B,oBAAK;","names":[]}