@copilotkit/react-textarea 0.27.0-alpha.5 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/.turbo/turbo-build.log +298 -298
  2. package/CHANGELOG.md +23 -0
  3. package/dist/chunk-224UKA7C.mjs +33 -0
  4. package/dist/chunk-224UKA7C.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 +29 -0
  8. package/dist/chunk-2QDCE7PD.mjs.map +1 -0
  9. package/dist/chunk-3PQ7GSFE.mjs +17 -0
  10. package/dist/chunk-3PQ7GSFE.mjs.map +1 -0
  11. package/dist/chunk-47L4PLG4.mjs +45 -0
  12. package/dist/chunk-47L4PLG4.mjs.map +1 -0
  13. package/dist/chunk-4NHVQZ67.mjs +107 -0
  14. package/dist/chunk-4NHVQZ67.mjs.map +1 -0
  15. package/dist/chunk-4OJ3H65F.mjs +86 -0
  16. package/dist/chunk-4OJ3H65F.mjs.map +1 -0
  17. package/dist/chunk-5UNJXFUO.mjs +29 -0
  18. package/dist/chunk-5UNJXFUO.mjs.map +1 -0
  19. package/dist/chunk-72P3KOHZ.mjs +91 -0
  20. package/dist/chunk-72P3KOHZ.mjs.map +1 -0
  21. package/dist/chunk-7LSRNPNI.mjs +59 -0
  22. package/dist/chunk-7LSRNPNI.mjs.map +1 -0
  23. package/dist/chunk-7SUZ6CXM.mjs +47 -0
  24. package/dist/chunk-7SUZ6CXM.mjs.map +1 -0
  25. package/dist/chunk-AZHILHKM.mjs +19 -0
  26. package/dist/chunk-AZHILHKM.mjs.map +1 -0
  27. package/dist/chunk-DE5K76I2.mjs +3 -0
  28. package/dist/chunk-DE5K76I2.mjs.map +1 -0
  29. package/dist/chunk-DRV2FOHZ.mjs +65 -0
  30. package/dist/chunk-DRV2FOHZ.mjs.map +1 -0
  31. package/dist/chunk-ECR45NSD.mjs +101 -0
  32. package/dist/chunk-ECR45NSD.mjs.map +1 -0
  33. package/dist/chunk-EPBVNDKE.mjs +46 -0
  34. package/dist/chunk-EPBVNDKE.mjs.map +1 -0
  35. package/dist/chunk-FJNUPSQK.mjs +72 -0
  36. package/dist/chunk-FJNUPSQK.mjs.map +1 -0
  37. package/dist/chunk-FP2EKU3L.mjs +28 -0
  38. package/dist/chunk-FP2EKU3L.mjs.map +1 -0
  39. package/dist/chunk-GQN2HYFJ.mjs +22 -0
  40. package/dist/chunk-GQN2HYFJ.mjs.map +1 -0
  41. package/dist/chunk-H4VKQGVU.mjs +3 -0
  42. package/dist/chunk-H4VKQGVU.mjs.map +1 -0
  43. package/dist/chunk-HSCZA5TS.mjs +27 -0
  44. package/dist/chunk-HSCZA5TS.mjs.map +1 -0
  45. package/dist/chunk-IU3WTXLQ.mjs +3 -0
  46. package/dist/chunk-IU3WTXLQ.mjs.map +1 -0
  47. package/dist/chunk-JJLQVT7S.mjs +10 -0
  48. package/dist/chunk-JJLQVT7S.mjs.map +1 -0
  49. package/dist/chunk-JYWINDWZ.mjs +46 -0
  50. package/dist/chunk-JYWINDWZ.mjs.map +1 -0
  51. package/dist/chunk-KDVMG3XF.mjs +63 -0
  52. package/dist/chunk-KDVMG3XF.mjs.map +1 -0
  53. package/dist/chunk-KFQZHRPJ.mjs +19 -0
  54. package/dist/chunk-KFQZHRPJ.mjs.map +1 -0
  55. package/dist/chunk-KJNSWCJC.mjs +112 -0
  56. package/dist/chunk-KJNSWCJC.mjs.map +1 -0
  57. package/dist/chunk-KNQIEOFP.mjs +18 -0
  58. package/dist/chunk-KNQIEOFP.mjs.map +1 -0
  59. package/dist/chunk-KTTN5H7S.mjs +202 -0
  60. package/dist/chunk-KTTN5H7S.mjs.map +1 -0
  61. package/dist/chunk-L7VVZH4Q.mjs +3 -0
  62. package/dist/chunk-L7VVZH4Q.mjs.map +1 -0
  63. package/dist/chunk-LQZBI6XD.mjs +112 -0
  64. package/dist/chunk-LQZBI6XD.mjs.map +1 -0
  65. package/dist/chunk-M2DR4KVB.mjs +33 -0
  66. package/dist/chunk-M2DR4KVB.mjs.map +1 -0
  67. package/dist/chunk-MMVDU6DF.mjs +3 -0
  68. package/dist/chunk-MMVDU6DF.mjs.map +1 -0
  69. package/dist/chunk-MRXNTQOX.mjs +55 -0
  70. package/dist/chunk-MRXNTQOX.mjs.map +1 -0
  71. package/dist/chunk-NT3GWKWK.mjs +59 -0
  72. package/dist/chunk-NT3GWKWK.mjs.map +1 -0
  73. package/dist/chunk-OHO4G6DR.mjs +19 -0
  74. package/dist/chunk-OHO4G6DR.mjs.map +1 -0
  75. package/dist/chunk-P4QVFRLY.mjs +103 -0
  76. package/dist/chunk-P4QVFRLY.mjs.map +1 -0
  77. package/dist/chunk-PTZVE6NC.mjs +94 -0
  78. package/dist/chunk-PTZVE6NC.mjs.map +1 -0
  79. package/dist/chunk-RKQ6RTZM.mjs +77 -0
  80. package/dist/chunk-RKQ6RTZM.mjs.map +1 -0
  81. package/dist/chunk-RUV6NBIF.mjs +3 -0
  82. package/dist/chunk-RUV6NBIF.mjs.map +1 -0
  83. package/dist/chunk-T6MTDQZ7.mjs +45 -0
  84. package/dist/chunk-T6MTDQZ7.mjs.map +1 -0
  85. package/dist/chunk-VPEH6V7T.mjs +83 -0
  86. package/dist/chunk-VPEH6V7T.mjs.map +1 -0
  87. package/dist/chunk-WADHCMPK.mjs +3 -0
  88. package/dist/chunk-WADHCMPK.mjs.map +1 -0
  89. package/dist/chunk-WFTAAA7R.mjs +44 -0
  90. package/dist/chunk-WFTAAA7R.mjs.map +1 -0
  91. package/dist/chunk-WJHSY5T6.mjs +3 -0
  92. package/dist/chunk-WJHSY5T6.mjs.map +1 -0
  93. package/dist/chunk-WTASPE2W.mjs +105 -0
  94. package/dist/chunk-WTASPE2W.mjs.map +1 -0
  95. package/dist/chunk-XV7MLLXQ.mjs +18 -0
  96. package/dist/chunk-XV7MLLXQ.mjs.map +1 -0
  97. package/dist/chunk-YLXEQDMS.mjs +217 -0
  98. package/dist/chunk-YLXEQDMS.mjs.map +1 -0
  99. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +35 -1745
  100. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map +1 -1
  101. package/dist/components/base-copilot-textarea/render-element.mjs +3 -51
  102. package/dist/components/base-copilot-textarea/render-element.mjs.map +1 -1
  103. package/dist/components/base-copilot-textarea/render-placeholder.mjs +3 -49
  104. package/dist/components/base-copilot-textarea/render-placeholder.mjs.map +1 -1
  105. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs +4 -86
  106. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs.map +1 -1
  107. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs +3 -57
  108. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs.map +1 -1
  109. package/dist/components/copilot-textarea/copilot-textarea.mjs +44 -2192
  110. package/dist/components/copilot-textarea/copilot-textarea.mjs.map +1 -1
  111. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs +3 -17
  112. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs.map +1 -1
  113. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs +3 -137
  114. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs.map +1 -1
  115. package/dist/components/hovering-toolbar/hovering-toolbar.mjs +18 -875
  116. package/dist/components/hovering-toolbar/hovering-toolbar.mjs.map +1 -1
  117. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs +12 -558
  118. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs.map +1 -1
  119. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs +13 -581
  120. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs.map +1 -1
  121. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs +5 -102
  122. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs.map +1 -1
  123. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs +14 -581
  124. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs.map +1 -1
  125. package/dist/components/index.mjs +45 -2193
  126. package/dist/components/index.mjs.map +1 -1
  127. package/dist/components/manual-ui/chip-with-icon.mjs +6 -5
  128. package/dist/components/manual-ui/chip-with-icon.mjs.map +1 -1
  129. package/dist/components/source-search-box/source-search-box.mjs +6 -211
  130. package/dist/components/source-search-box/source-search-box.mjs.map +1 -1
  131. package/dist/components/ui/button.mjs +4 -85
  132. package/dist/components/ui/button.mjs.map +1 -1
  133. package/dist/components/ui/card.mjs +7 -53
  134. package/dist/components/ui/card.mjs.map +1 -1
  135. package/dist/components/ui/command.mjs +5 -244
  136. package/dist/components/ui/command.mjs.map +1 -1
  137. package/dist/components/ui/dialog.mjs +4 -144
  138. package/dist/components/ui/dialog.mjs.map +1 -1
  139. package/dist/components/ui/label.mjs +4 -60
  140. package/dist/components/ui/label.mjs.map +1 -1
  141. package/dist/components/ui/separator.mjs +8 -50
  142. package/dist/components/ui/separator.mjs.map +1 -1
  143. package/dist/components/ui/textarea.mjs +7 -48
  144. package/dist/components/ui/textarea.mjs.map +1 -1
  145. package/dist/context/index.mjs +2 -0
  146. package/dist/context/index.mjs.map +1 -1
  147. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs +6 -158
  148. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs.map +1 -1
  149. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs +4 -168
  150. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs.map +1 -1
  151. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs +5 -148
  152. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs.map +1 -1
  153. package/dist/hooks/index.mjs +2 -0
  154. package/dist/hooks/index.mjs.map +1 -1
  155. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs +4 -114
  156. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs.map +1 -1
  157. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs +4 -166
  158. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs.map +1 -1
  159. package/dist/hooks/misc/use-autosize-textarea.mjs +3 -15
  160. package/dist/hooks/misc/use-autosize-textarea.mjs.map +1 -1
  161. package/dist/index.mjs +49 -2195
  162. package/dist/index.mjs.map +1 -1
  163. package/dist/lib/debouncer.mjs +3 -51
  164. package/dist/lib/debouncer.mjs.map +1 -1
  165. package/dist/lib/editor-to-text.mjs +3 -43
  166. package/dist/lib/editor-to-text.mjs.map +1 -1
  167. package/dist/lib/get-text-around-cursor.mjs +3 -102
  168. package/dist/lib/get-text-around-cursor.mjs.map +1 -1
  169. package/dist/lib/retry.mjs +3 -17
  170. package/dist/lib/retry.mjs.map +1 -1
  171. package/dist/lib/slatejs-edits/add-autocompletions.mjs +3 -25
  172. package/dist/lib/slatejs-edits/add-autocompletions.mjs.map +1 -1
  173. package/dist/lib/slatejs-edits/clear-autocompletions.mjs +3 -20
  174. package/dist/lib/slatejs-edits/clear-autocompletions.mjs.map +1 -1
  175. package/dist/lib/slatejs-edits/replace-text.mjs +3 -27
  176. package/dist/lib/slatejs-edits/replace-text.mjs.map +1 -1
  177. package/dist/lib/slatejs-edits/with-partial-history.mjs +3 -106
  178. package/dist/lib/slatejs-edits/with-partial-history.mjs.map +1 -1
  179. package/dist/lib/stream-promise-flatten.mjs +3 -47
  180. package/dist/lib/stream-promise-flatten.mjs.map +1 -1
  181. package/dist/lib/utils.mjs +3 -71
  182. package/dist/lib/utils.mjs.map +1 -1
  183. package/dist/lib/utils.test.mjs +1 -0
  184. package/dist/lib/utils.test.mjs.map +1 -1
  185. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs +2 -0
  186. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs.map +1 -1
  187. package/dist/types/autosuggestions-config/autosuggestions-config.mjs +8 -274
  188. package/dist/types/autosuggestions-config/autosuggestions-config.mjs.map +1 -1
  189. package/dist/types/autosuggestions-config/editing-api-config.mjs +3 -87
  190. package/dist/types/autosuggestions-config/editing-api-config.mjs.map +1 -1
  191. package/dist/types/autosuggestions-config/index.mjs +9 -274
  192. package/dist/types/autosuggestions-config/index.mjs.map +1 -1
  193. package/dist/types/autosuggestions-config/insertions-api-config.mjs +3 -78
  194. package/dist/types/autosuggestions-config/insertions-api-config.mjs.map +1 -1
  195. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs +2 -0
  196. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs.map +1 -1
  197. package/dist/types/autosuggestions-config/subtypes/minimal-chat-gpt-message.mjs +2 -0
  198. package/dist/types/autosuggestions-config/subtypes/minimal-chat-gpt-message.mjs.map +1 -1
  199. package/dist/types/autosuggestions-config/suggestions-api-config.mjs +3 -64
  200. package/dist/types/autosuggestions-config/suggestions-api-config.mjs.map +1 -1
  201. package/dist/types/base/autosuggestion-state.mjs +2 -0
  202. package/dist/types/base/autosuggestion-state.mjs.map +1 -1
  203. package/dist/types/base/autosuggestions-bare-function.mjs +2 -0
  204. package/dist/types/base/autosuggestions-bare-function.mjs.map +1 -1
  205. package/dist/types/base/base-autosuggestions-config.mjs +3 -26
  206. package/dist/types/base/base-autosuggestions-config.mjs.map +1 -1
  207. package/dist/types/base/base-copilot-textarea-props.mjs +2 -0
  208. package/dist/types/base/base-copilot-textarea-props.mjs.map +1 -1
  209. package/dist/types/base/custom-editor.mjs +2 -0
  210. package/dist/types/base/custom-editor.mjs.map +1 -1
  211. package/dist/types/base/editor-autocomplete-state.mjs +4 -17
  212. package/dist/types/base/editor-autocomplete-state.mjs.map +1 -1
  213. package/dist/types/base/index.mjs +4 -26
  214. package/dist/types/base/index.mjs.map +1 -1
  215. package/dist/types/html-copilot-textarea-element.mjs +2 -0
  216. package/dist/types/html-copilot-textarea-element.mjs.map +1 -1
  217. package/dist/types/index.mjs +11 -275
  218. package/dist/types/index.mjs.map +1 -1
  219. package/package.json +2 -2
@@ -0,0 +1,33 @@
1
+ import { __async } from './chunk-MRXNTQOX.mjs';
2
+
3
+ // src/lib/debouncer.ts
4
+ var Debouncer = class {
5
+ constructor(wait) {
6
+ this.wait = wait;
7
+ this.debounce = (func, ...args) => __async(this, null, function* () {
8
+ this.cancel();
9
+ this.timeoutId = setTimeout(() => __async(this, null, function* () {
10
+ try {
11
+ this.activeAbortController = new AbortController();
12
+ yield func(...args, this.activeAbortController.signal);
13
+ this.activeAbortController = void 0;
14
+ } catch (error) {
15
+ }
16
+ }), this.wait);
17
+ });
18
+ this.cancel = () => {
19
+ if (this.activeAbortController) {
20
+ this.activeAbortController.abort();
21
+ this.activeAbortController = void 0;
22
+ }
23
+ if (this.timeoutId !== void 0) {
24
+ clearTimeout(this.timeoutId);
25
+ this.timeoutId = void 0;
26
+ }
27
+ };
28
+ }
29
+ };
30
+
31
+ export { Debouncer };
32
+ //# sourceMappingURL=out.js.map
33
+ //# sourceMappingURL=chunk-M2DR4KVB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/debouncer.ts"],"names":[],"mappings":";;;;;AAEO,IAAM,YAAN,MAAiC;AAAA,EAItC,YAAoB,MAAc;AAAd;AAEpB,oBAAW,CAAO,SAA2B,SAAY;AAEvD,WAAK,OAAO;AAEZ,WAAK,YAAY,WAAW,MAAY;AACtC,YAAI;AACF,eAAK,wBAAwB,IAAI,gBAAgB;AAGjD,gBAAM,KAAK,GAAG,MAAM,KAAK,sBAAsB,MAAM;AAErD,eAAK,wBAAwB;AAAA,QAC/B,SAAS,OAAP;AAAA,QAAe;AAAA,MACnB,IAAG,KAAK,IAAI;AAAA,IACd;AAEA,kBAAS,MAAM;AACb,UAAI,KAAK,uBAAuB;AAC9B,aAAK,sBAAsB,MAAM;AACjC,aAAK,wBAAwB;AAAA,MAC/B;AAEA,UAAI,KAAK,cAAc,QAAW;AAChC,qBAAa,KAAK,SAAS;AAC3B,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAAA,EA5BmC;AA6BrC","sourcesContent":["export type AsyncFunction<T extends any[]> = (...args: [...T, AbortSignal]) => Promise<void>;\n\nexport class Debouncer<T extends any[]> {\n private timeoutId?: number;\n private activeAbortController?: AbortController;\n\n constructor(private wait: number) {}\n\n debounce = async (func: AsyncFunction<T>, ...args: T) => {\n // Abort the previous promise immediately\n this.cancel();\n\n this.timeoutId = setTimeout(async () => {\n try {\n this.activeAbortController = new AbortController();\n\n // Pass the signal to the async function, assuming it supports it\n await func(...args, this.activeAbortController.signal);\n\n this.activeAbortController = undefined;\n } catch (error) {}\n }, this.wait);\n };\n\n cancel = () => {\n if (this.activeAbortController) {\n this.activeAbortController.abort();\n this.activeAbortController = undefined;\n }\n\n if (this.timeoutId !== undefined) {\n clearTimeout(this.timeoutId);\n this.timeoutId = undefined;\n }\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=out.js.map
3
+ //# sourceMappingURL=chunk-MMVDU6DF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ var __async = (__this, __arguments, generator) => {
33
+ return new Promise((resolve, reject) => {
34
+ var fulfilled = (value) => {
35
+ try {
36
+ step(generator.next(value));
37
+ } catch (e) {
38
+ reject(e);
39
+ }
40
+ };
41
+ var rejected = (value) => {
42
+ try {
43
+ step(generator.throw(value));
44
+ } catch (e) {
45
+ reject(e);
46
+ }
47
+ };
48
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
49
+ step((generator = generator.apply(__this, __arguments)).next());
50
+ });
51
+ };
52
+
53
+ export { __async, __objRest, __spreadProps, __spreadValues };
54
+ //# sourceMappingURL=out.js.map
55
+ //# sourceMappingURL=chunk-MRXNTQOX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -0,0 +1,59 @@
1
+ import { retry } from './chunk-KNQIEOFP.mjs';
2
+ import { __async, __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
3
+ import { CopilotContext, ChatCompletionStream } from '@copilotkit/react-core';
4
+ import { useContext, useCallback } from 'react';
5
+
6
+ function useMakeStandardAutosuggestionFunction(textareaPurpose, contextCategories, apiConfig) {
7
+ const { getContextString, copilotApiConfig } = useContext(CopilotContext);
8
+ return useCallback(
9
+ (editorState, abortSignal) => __async(this, null, function* () {
10
+ const res = yield retry(() => __async(this, null, function* () {
11
+ const messages = [
12
+ {
13
+ role: "system",
14
+ content: apiConfig.makeSystemPrompt(
15
+ textareaPurpose,
16
+ getContextString([], contextCategories)
17
+ )
18
+ },
19
+ ...apiConfig.fewShotMessages,
20
+ {
21
+ role: "user",
22
+ name: "TextAfterCursor",
23
+ content: editorState.textAfterCursor
24
+ },
25
+ {
26
+ role: "user",
27
+ name: "TextBeforeCursor",
28
+ content: editorState.textBeforeCursor
29
+ }
30
+ ];
31
+ const chatCompletionStream = new ChatCompletionStream({
32
+ url: copilotApiConfig.chatApiEndpoint
33
+ });
34
+ const stream = yield chatCompletionStream.fetch(__spreadProps(__spreadValues({
35
+ messages
36
+ }, apiConfig.forwardedParams), {
37
+ copilotConfig: copilotApiConfig,
38
+ signal: abortSignal
39
+ }));
40
+ const reader = stream.getReader();
41
+ let result = "";
42
+ while (!abortSignal.aborted) {
43
+ const { done, value } = yield reader.read();
44
+ if (done) {
45
+ break;
46
+ }
47
+ result += value;
48
+ }
49
+ return result;
50
+ }));
51
+ return res;
52
+ }),
53
+ [apiConfig, getContextString, contextCategories, textareaPurpose]
54
+ );
55
+ }
56
+
57
+ export { useMakeStandardAutosuggestionFunction };
58
+ //# sourceMappingURL=out.js.map
59
+ //# sourceMappingURL=chunk-NT3GWKWK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,SAAS,sBAA+B;AACxC,SAAS,aAAa,kBAAkB;AAKxC,SAAS,4BAA4B;AAe9B,SAAS,sCACd,iBACA,mBACA,WAC6B;AAC7B,QAAM,EAAE,kBAAkB,iBAAiB,IAAI,WAAW,cAAc;AAExE,SAAO;AAAA,IACL,CAAO,aAAmC,gBAA6B;AACrE,YAAM,MAAM,MAAM,MAAM,MAAY;AAClC,cAAM,WAAoC;AAAA,UACxC;AAAA,YACE,MAAM;AAAA,YACN,SAAS,UAAU;AAAA,cACjB;AAAA,cACA,iBAAiB,CAAC,GAAG,iBAAiB;AAAA,YACxC;AAAA,UACF;AAAA,UACA,GAAG,UAAU;AAAA,UACb;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS,YAAY;AAAA,UACvB;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS,YAAY;AAAA,UACvB;AAAA,QACF;AAEA,cAAM,uBAAuB,IAAI,qBAAqB;AAAA,UACpD,KAAK,iBAAiB;AAAA,QACxB,CAAC;AAED,cAAM,SAAS,MAAM,qBAAqB,MAAM;AAAA,UAC9C;AAAA,WACG,UAAU,kBAFiC;AAAA,UAG9C,eAAe;AAAA,UACf,QAAQ;AAAA,QACV,EAAC;AAGD,cAAM,SAAS,OAAO,UAAU;AAChC,YAAI,SAAS;AAEb,eAAO,CAAC,YAAY,SAAS;AAC3B,gBAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,cAAI,MAAM;AACR;AAAA,UACF;AACA,oBAAU;AAAA,QACZ;AAEA,eAAO;AAAA,MACT,EAAC;AAED,aAAO;AAAA,IACT;AAAA,IACA,CAAC,WAAW,kBAAkB,mBAAmB,eAAe;AAAA,EAClE;AACF","sourcesContent":["import { CopilotContext, Message } from \"@copilotkit/react-core\";\nimport { useCallback, useContext } from \"react\";\nimport { AutosuggestionsBareFunction, MinimalChatGPTMessage } from \"../../types\";\nimport { retry } from \"../../lib/retry\";\nimport { InsertionEditorState } from \"../../types/base/autosuggestions-bare-function\";\nimport { SuggestionsApiConfig } from \"../../types/autosuggestions-config/suggestions-api-config\";\nimport { ChatCompletionStream } from \"@copilotkit/react-core\";\n\n/**\n * Returns a memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n * The function takes in the text before and after the cursor, and an abort signal.\n * It sends a POST request to the API endpoint with the messages array containing the system message, few shot messages, and user messages.\n * The function returns the suggestion from the API response.\n *\n * @param textareaPurpose - The purpose of the textarea. This is included in the system message.\n * @param apiEndpoint - The API endpoint to send the autosuggestion request to.\n * @param makeSystemMessage - A function that takes in a context string and returns a system message to include in the autosuggestion request.\n * @param fewShotMessages - An array of few shot messages to include in the autosuggestion request.\n * @param contextCategories - The categories of context strings we want to include. By default, we include the (default) \"global\" context category.\n * @returns A memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n */\nexport function useMakeStandardAutosuggestionFunction(\n textareaPurpose: string,\n contextCategories: string[],\n apiConfig: SuggestionsApiConfig,\n): AutosuggestionsBareFunction {\n const { getContextString, copilotApiConfig } = useContext(CopilotContext);\n\n return useCallback(\n async (editorState: InsertionEditorState, abortSignal: AbortSignal) => {\n const res = await retry(async () => {\n const messages: MinimalChatGPTMessage[] = [\n {\n role: \"system\",\n content: apiConfig.makeSystemPrompt(\n textareaPurpose,\n getContextString([], contextCategories),\n ),\n },\n ...apiConfig.fewShotMessages,\n {\n role: \"user\",\n name: \"TextAfterCursor\",\n content: editorState.textAfterCursor,\n },\n {\n role: \"user\",\n name: \"TextBeforeCursor\",\n content: editorState.textBeforeCursor,\n },\n ];\n\n const chatCompletionStream = new ChatCompletionStream({\n url: copilotApiConfig.chatApiEndpoint,\n });\n\n const stream = await chatCompletionStream.fetch({\n messages: messages as Message[],\n ...apiConfig.forwardedParams,\n copilotConfig: copilotApiConfig,\n signal: abortSignal,\n });\n\n // read the stream:\n const reader = stream.getReader();\n let result = \"\";\n\n while (!abortSignal.aborted) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n result += value;\n }\n\n return result;\n });\n\n return res;\n },\n [apiConfig, getContextString, contextCategories, textareaPurpose],\n );\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
2
+ import { jsx } from 'react/jsx-runtime';
3
+
4
+ function makeRenderPlaceholderFunction(placeholderStyle) {
5
+ return (props) => {
6
+ const _a = props.attributes, { style } = _a, restAttributes = __objRest(_a, ["style"]);
7
+ return /* @__PURE__ */ jsx(
8
+ "div",
9
+ __spreadProps(__spreadValues({}, restAttributes), {
10
+ style: __spreadValues(__spreadValues({}, style), placeholderStyle),
11
+ children: props.children
12
+ })
13
+ );
14
+ };
15
+ }
16
+
17
+ export { makeRenderPlaceholderFunction };
18
+ //# sourceMappingURL=out.js.map
19
+ //# sourceMappingURL=chunk-OHO4G6DR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/base-copilot-textarea/render-placeholder.tsx"],"names":[],"mappings":";;;;;;;AAWM;AAPC,SAAS,8BACd,kBAC2B;AAC3B,SAAO,CAAC,UAAkC;AACxC,UAAqC,WAAM,YAAnC,QARZ,IAQyC,IAAnB,2BAAmB,IAAnB,CAAV;AAER,WACE;AAAA,MAAC;AAAA,uCACK,iBADL;AAAA,QAEC,OAAO,kCACF,QACA;AAAA,QAGJ,gBAAM;AAAA;AAAA,IACT;AAAA,EAEJ;AACF","sourcesContent":["import { RenderElementProps, RenderPlaceholderProps } from \"slate-react\";\n\nexport type RenderPlaceholderFunction = (props: RenderPlaceholderProps) => JSX.Element;\n\nexport function makeRenderPlaceholderFunction(\n placeholderStyle?: React.CSSProperties,\n): RenderPlaceholderFunction {\n return (props: RenderPlaceholderProps) => {\n const { style, ...restAttributes } = props.attributes;\n\n return (\n <div\n {...restAttributes}\n style={{\n ...style,\n ...placeholderStyle,\n }}\n >\n {props.children}\n </div>\n );\n };\n}\n"]}
@@ -0,0 +1,103 @@
1
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
2
+ import { cx, css } from '@emotion/css';
3
+ import React from 'react';
4
+ import ReactDOM from 'react-dom';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var Button = React.forwardRef(
8
+ (_a, ref) => {
9
+ var _b = _a, {
10
+ className,
11
+ active,
12
+ reversed
13
+ } = _b, props = __objRest(_b, [
14
+ "className",
15
+ "active",
16
+ "reversed"
17
+ ]);
18
+ return /* @__PURE__ */ jsx(
19
+ "span",
20
+ __spreadProps(__spreadValues({}, props), {
21
+ ref,
22
+ className: cx(
23
+ className,
24
+ css`
25
+ cursor: pointer;
26
+ color: ${reversed ? active ? "white" : "#aaa" : active ? "black" : "#ccc"};
27
+ `
28
+ )
29
+ })
30
+ );
31
+ }
32
+ );
33
+ var Icon = React.forwardRef(
34
+ (_a, ref) => {
35
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
36
+ return /* @__PURE__ */ jsx(
37
+ "span",
38
+ __spreadProps(__spreadValues({}, props), {
39
+ ref,
40
+ className: cx(
41
+ "material-icons",
42
+ className,
43
+ css`
44
+ font-size: 18px;
45
+ vertical-align: text-bottom;
46
+ `
47
+ )
48
+ })
49
+ );
50
+ }
51
+ );
52
+ var Menu = React.forwardRef(
53
+ (_a, ref) => {
54
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
55
+ return /* @__PURE__ */ jsx(
56
+ "div",
57
+ __spreadProps(__spreadValues({}, props), {
58
+ "data-test-id": "menu",
59
+ ref,
60
+ className: cx(
61
+ className,
62
+ css`
63
+ & > * {
64
+ display: inline-block;
65
+ }
66
+
67
+ & > * + * {
68
+ margin-left: 15px;
69
+ }
70
+ `
71
+ )
72
+ })
73
+ );
74
+ }
75
+ );
76
+ var Portal = ({ children }) => {
77
+ return typeof document === "object" ? ReactDOM.createPortal(children, document.body) : null;
78
+ };
79
+ var Toolbar = React.forwardRef(
80
+ (_a, ref) => {
81
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
82
+ return /* @__PURE__ */ jsx(
83
+ Menu,
84
+ __spreadProps(__spreadValues({}, props), {
85
+ ref,
86
+ className: cx(
87
+ className,
88
+ css`
89
+ position: relative;
90
+ padding: 1px 18px 17px;
91
+ margin: 0 -20px;
92
+ border-bottom: 2px solid #eee;
93
+ margin-bottom: 20px;
94
+ `
95
+ )
96
+ })
97
+ );
98
+ }
99
+ );
100
+
101
+ export { Button, Icon, Menu, Portal, Toolbar };
102
+ //# sourceMappingURL=out.js.map
103
+ //# sourceMappingURL=chunk-P4QVFRLY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/hovering-toolbar/hovering-toolbar-components.tsx"],"names":[],"mappings":";;;;;;;AAAA,SAAS,KAAK,UAAU;AACxB,OAAO,WAAuC;AAC9C,OAAO,cAAc;AAsBjB;AAfG,IAAM,SAAS,MAAM;AAAA,EAC1B,CACE,IAWA,QACA;AAZA,iBACE;AAAA;AAAA,MACA;AAAA,MACA;AAAA,IAdN,IAWI,IAIK,kBAJL,IAIK;AAAA,MAHH;AAAA,MACA;AAAA,MACA;AAAA;AAUF;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA;AAAA,mBAEW,WAAY,SAAS,UAAU,SAAU,SAAS,UAAU;AAAA;AAAA,QAEzE;AAAA;AAAA,IACF;AAAA;AAEJ;AAEO,IAAM,OAAO,MAAM;AAAA,EACxB,CAAC,IAAuD,QAAkC;AAAzF,iBAAE,YAvCL,IAuCG,IAAgB,kBAAhB,IAAgB,CAAd;AACD;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA;AAAA;AAAA;AAAA,QAIF;AAAA;AAAA,IACF;AAAA;AAEJ;AAEO,IAAM,OAAO,MAAM;AAAA,EACxB,CAAC,IAAuD,QAAiC;AAAxF,iBAAE,YAxDL,IAwDG,IAAgB,kBAAhB,IAAgB,CAAd;AACD;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC,gBAAa;AAAA,QACb;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASF;AAAA;AAAA,IACF;AAAA;AAEJ;AACO,IAAM,SAAS,CAAC,EAAE,SAAS,MAAqC;AACrE,SAAO,OAAO,aAAa,WAAW,SAAS,aAAa,UAAU,SAAS,IAAI,IAAI;AACzF;AAEO,IAAM,UAAU,MAAM;AAAA,EAC3B,CAAC,IAAuD,QAA2B;AAAlF,iBAAE,YAjFL,IAiFG,IAAgB,kBAAhB,IAAgB,CAAd;AACD;AAAA,MAAC;AAAA,uCACK,QADL;AAAA,QAEC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOF;AAAA;AAAA,IACF;AAAA;AAEJ","sourcesContent":["import { css, cx } from \"@emotion/css\";\nimport React, { PropsWithChildren, Ref } from \"react\";\nimport ReactDOM from \"react-dom\";\n\ninterface BaseProps {\n className: string;\n [key: string]: unknown;\n}\n\nexport const Button = React.forwardRef(\n (\n {\n className,\n active,\n reversed,\n ...props\n }: PropsWithChildren<\n {\n active: boolean;\n reversed: boolean;\n } & BaseProps\n >,\n ref: Ref<HTMLSpanElement | null>,\n ) => (\n <span\n {...props}\n ref={ref as Ref<HTMLSpanElement>}\n className={cx(\n className,\n css`\n cursor: pointer;\n color: ${reversed ? (active ? \"white\" : \"#aaa\") : active ? \"black\" : \"#ccc\"};\n `,\n )}\n />\n ),\n);\n\nexport const Icon = React.forwardRef(\n ({ className, ...props }: PropsWithChildren<BaseProps>, ref: Ref<HTMLSpanElement | null>) => (\n <span\n {...props}\n ref={ref as Ref<HTMLSpanElement>}\n className={cx(\n \"material-icons\",\n className,\n css`\n font-size: 18px;\n vertical-align: text-bottom;\n `,\n )}\n />\n ),\n);\n\nexport const Menu = React.forwardRef(\n ({ className, ...props }: PropsWithChildren<BaseProps>, ref: Ref<HTMLDivElement | null>) => (\n <div\n {...props}\n data-test-id=\"menu\"\n ref={ref as Ref<HTMLDivElement>}\n className={cx(\n className,\n css`\n & > * {\n display: inline-block;\n }\n\n & > * + * {\n margin-left: 15px;\n }\n `,\n )}\n />\n ),\n);\nexport const Portal = ({ children }: { children: React.ReactNode }) => {\n return typeof document === \"object\" ? ReactDOM.createPortal(children, document.body) : null;\n};\n\nexport const Toolbar = React.forwardRef(\n ({ className, ...props }: PropsWithChildren<BaseProps>, ref?: Ref<HTMLDivElement>) => (\n <Menu\n {...props}\n ref={ref}\n className={cx(\n className,\n css`\n position: relative;\n padding: 1px 18px 17px;\n margin: 0 -20px;\n border-bottom: 2px solid #eee;\n margin-bottom: 20px;\n `,\n )}\n />\n ),\n);\n"]}
@@ -0,0 +1,94 @@
1
+ import { cn } from './chunk-7SUZ6CXM.mjs';
2
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-MRXNTQOX.mjs';
3
+ import * as React from 'react';
4
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
5
+ import { X } from 'lucide-react';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ var Dialog = DialogPrimitive.Root;
9
+ var DialogTrigger = DialogPrimitive.Trigger;
10
+ var DialogPortal = (_a) => {
11
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
12
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, __spreadValues({ className: cn(className) }, props));
13
+ };
14
+ DialogPortal.displayName = DialogPrimitive.Portal.displayName;
15
+ var DialogOverlay = React.forwardRef((_a, ref) => {
16
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
17
+ return /* @__PURE__ */ jsx(
18
+ DialogPrimitive.Overlay,
19
+ __spreadValues({
20
+ ref,
21
+ className: cn(
22
+ "fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
23
+ className
24
+ )
25
+ }, props)
26
+ );
27
+ });
28
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
29
+ var DialogContent = React.forwardRef((_a, ref) => {
30
+ var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
31
+ return /* @__PURE__ */ jsxs(DialogPortal, { children: [
32
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
33
+ /* @__PURE__ */ jsxs(
34
+ DialogPrimitive.Content,
35
+ __spreadProps(__spreadValues({
36
+ ref,
37
+ className: cn(
38
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg md:w-full",
39
+ className
40
+ )
41
+ }, props), {
42
+ children: [
43
+ children,
44
+ /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
45
+ /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
46
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
47
+ ] })
48
+ ]
49
+ })
50
+ )
51
+ ] });
52
+ });
53
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
54
+ var DialogHeader = (_a) => {
55
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
56
+ return /* @__PURE__ */ jsx("div", __spreadValues({ className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className) }, props));
57
+ };
58
+ DialogHeader.displayName = "DialogHeader";
59
+ var DialogFooter = (_a) => {
60
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
61
+ return /* @__PURE__ */ jsx(
62
+ "div",
63
+ __spreadValues({
64
+ className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className)
65
+ }, props)
66
+ );
67
+ };
68
+ DialogFooter.displayName = "DialogFooter";
69
+ var DialogTitle = React.forwardRef((_a, ref) => {
70
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
71
+ return /* @__PURE__ */ jsx(
72
+ DialogPrimitive.Title,
73
+ __spreadValues({
74
+ ref,
75
+ className: cn("text-lg font-semibold leading-none tracking-tight", className)
76
+ }, props)
77
+ );
78
+ });
79
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
80
+ var DialogDescription = React.forwardRef((_a, ref) => {
81
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
82
+ return /* @__PURE__ */ jsx(
83
+ DialogPrimitive.Description,
84
+ __spreadValues({
85
+ ref,
86
+ className: cn("text-sm text-muted-foreground", className)
87
+ }, props)
88
+ );
89
+ });
90
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
91
+
92
+ export { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger };
93
+ //# sourceMappingURL=out.js.map
94
+ //# sourceMappingURL=chunk-PTZVE6NC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/dialog.tsx"],"names":[],"mappings":";;;;;;;;;;AAEA,YAAY,WAAW;AACvB,YAAY,qBAAqB;AACjC,SAAS,SAAS;AAShB,cAkCI,YAlCJ;AALF,IAAM,SAAyB;AAE/B,IAAM,gBAAgC;AAEtC,IAAM,eAAe,CAAC,OAA4D;AAA5D,eAAE,YAZxB,IAYsB,IAAgB,kBAAhB,IAAgB,CAAd;AACtB,6BAAiB,wBAAhB,iBAAuB,WAAW,GAAG,SAAS,KAAO,MAAO;AAAA;AAE/D,aAAa,cAA8B,uBAAO;AAElD,IAAM,gBAAsB,iBAG1B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YApBL,IAoBG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,gBAAsB,iBAG1B,CAAC,IAAmC,QAAK;AAAxC,eAAE,aAAW,SAnChB,IAmCG,IAA0B,kBAA1B,IAA0B,CAAxB,aAAW;AACd,8BAAC,gBACC;AAAA,wBAAC,iBAAc;AAAA,IACf;AAAA,MAAiB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,SACI,QANL;AAAA,QAQE;AAAA;AAAA,UACD,qBAAiB,uBAAhB,EAAsB,WAAU,iRAC/B;AAAA,gCAAC,KAAE,WAAU,WAAU;AAAA,YACvB,oBAAC,UAAK,WAAU,WAAU,mBAAK;AAAA,aACjC;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAAA,CACD;AACD,cAAc,cAA8B,wBAAQ;AAEpD,IAAM,eAAe,CAAC,OAA+D;AAA/D,eAAE,YAxDxB,IAwDsB,IAAgB,kBAAhB,IAAgB,CAAd;AACtB,6BAAC,wBAAI,WAAW,GAAG,sDAAsD,SAAS,KAAO,MAAO;AAAA;AAElG,aAAa,cAAc;AAE3B,IAAM,eAAe,CAAC,OAA+D;AAA/D,eAAE,YA7DxB,IA6DsB,IAAgB,kBAAhB,IAAgB,CAAd;AACtB;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,iEAAiE,SAAS;AAAA,OACpF;AAAA,EACN;AAAA;AAEF,aAAa,cAAc;AAE3B,IAAM,cAAoB,iBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAxEL,IAwEG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,qDAAqD,SAAS;AAAA,OACxE;AAAA,EACN;AAAA,CACD;AACD,YAAY,cAA8B,sBAAM;AAEhD,IAAM,oBAA0B,iBAG9B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YApFL,IAoFG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,OACpD;AAAA,EACN;AAAA,CACD;AACD,kBAAkB,cAA8B,4BAAY","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = ({ className, ...props }: DialogPrimitive.DialogPortalProps) => (\n <DialogPrimitive.Portal className={cn(className)} {...props} />\n);\nDialogPortal.displayName = DialogPrimitive.Portal.displayName;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg md:w-full\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)} {...props} />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n"]}
@@ -0,0 +1,77 @@
1
+ // src/types/autosuggestions-config/insertions-api-config.tsx
2
+ var defaultInsertionsMakeSystemPrompt = (textareaPurpose, contextString) => {
3
+ return `You are a versatile writing assistant helping the user insert new text into their existing work.
4
+
5
+ The user is writing some text.
6
+ The purpose is: "${textareaPurpose}"
7
+
8
+ The following external context is also provided. Use it to inform your suggestions when relevant!!!
9
+ \`\`\`
10
+ ${contextString}
11
+ \`\`\`
12
+
13
+ The user will provide you with a prompt for an INSERTION into the text they are writing.
14
+ Your job is to come up with an INSERTION into the text that the user would like to use, AS BEST YOU CAN.
15
+ Only insert a SHORT segment. Usually 1 sentence, or at most 1 paragraph.
16
+
17
+ Adjust yourself to the user's style and implied intent.
18
+
19
+
20
+ The user will provide the text before and after the cursor, as well as the INSERTION prompt. You should use this to infer the best relevant insertion.
21
+ The conversation will be structured as follows:
22
+ <TextAfterCursor>
23
+ <TextBeforeCursor>
24
+ <InsertionPrompt>
25
+
26
+ <YourInsertionSuggestion>
27
+ `;
28
+ };
29
+ var defaultInsertionsFewShotMessages = [
30
+ {
31
+ role: "user",
32
+ name: "TextAfterCursor",
33
+ content: "While I was there I also picked up some apples, oranges, and bananas."
34
+ },
35
+ {
36
+ role: "user",
37
+ name: "TextBeforeCursor",
38
+ content: "This morning I woke up and went straight to the grocery store."
39
+ },
40
+ {
41
+ role: "user",
42
+ name: "InsertionPrompt",
43
+ content: "I bought a big watermelon"
44
+ },
45
+ {
46
+ role: "assistant",
47
+ content: " When I arrived I went straight to the produce section and picked out a big watermelon. "
48
+ },
49
+ {
50
+ role: "user",
51
+ name: "TextAfterCursor",
52
+ content: "and (iii) to the appointment of the Equityholders' Representative pursuant to Section 10.7 of the Merger Agreement and to the provisions thereof."
53
+ },
54
+ {
55
+ role: "user",
56
+ name: "TextBeforeCursor",
57
+ content: `The Optionholder, in the Optionholder's capacity as a holder of vested Options, hereby irrevocably and unconditionally agrees: (i) that the Optionholder shall be deemed an "Equityholder" under the Merger Agreement and shall be entitled to the rights and benefits, and subject to the obligations, of an "Equityholder" thereunder;`
58
+ },
59
+ {
60
+ role: "user",
61
+ name: "InsertionPrompt",
62
+ content: "add section about the optionholder's pro rata share"
63
+ },
64
+ {
65
+ role: "assistant",
66
+ content: ` (ii) that, for purposes of this Agreement and the Merger Agreement, the applicable percentage set forth opposite the name of the Optionholder in the Distribution Waterfall shall be such the Optionholder's "Pro Rata Share"; `
67
+ }
68
+ ];
69
+ var defaultInsertionsApiConfig = {
70
+ makeSystemPrompt: defaultInsertionsMakeSystemPrompt,
71
+ fewShotMessages: defaultInsertionsFewShotMessages,
72
+ forwardedParams: void 0
73
+ };
74
+
75
+ export { defaultInsertionsApiConfig, defaultInsertionsFewShotMessages, defaultInsertionsMakeSystemPrompt };
76
+ //# sourceMappingURL=out.js.map
77
+ //# sourceMappingURL=chunk-RKQ6RTZM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/autosuggestions-config/insertions-api-config.tsx"],"names":[],"mappings":";AASO,IAAM,oCAAsD,CACjE,iBACA,kBACG;AACH,SAAO;AAAA;AAAA;AAAA,mBAGW;AAAA;AAAA;AAAA;AAAA,EAIlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBF;AAEO,IAAM,mCAA4D;AAAA,EACvE;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SACE;AAAA,EACJ;AACF;AAEO,IAAM,6BAAkD;AAAA,EAC7D,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB","sourcesContent":["import { MakeSystemPrompt } from \"./subtypes/make-system-prompt\";\nimport { MinimalChatGPTMessage } from \"./subtypes/minimal-chat-gpt-message\";\n\nexport interface InsertionsApiConfig {\n makeSystemPrompt: MakeSystemPrompt;\n fewShotMessages: MinimalChatGPTMessage[];\n forwardedParams: { [key: string]: any } | undefined;\n}\n\nexport const defaultInsertionsMakeSystemPrompt: MakeSystemPrompt = (\n textareaPurpose,\n contextString,\n) => {\n return `You are a versatile writing assistant helping the user insert new text into their existing work.\n \nThe user is writing some text.\nThe purpose is: \\\"${textareaPurpose}\\\"\n\nThe following external context is also provided. Use it to inform your suggestions when relevant!!!\n\\`\\`\\`\n${contextString}\n\\`\\`\\`\n\nThe user will provide you with a prompt for an INSERTION into the text they are writing. \nYour job is to come up with an INSERTION into the text that the user would like to use, AS BEST YOU CAN.\nOnly insert a SHORT segment. Usually 1 sentence, or at most 1 paragraph.\n\nAdjust yourself to the user's style and implied intent.\n\n\nThe user will provide the text before and after the cursor, as well as the INSERTION prompt. You should use this to infer the best relevant insertion.\nThe conversation will be structured as follows:\n<TextAfterCursor>\n<TextBeforeCursor>\n<InsertionPrompt>\n\n<YourInsertionSuggestion>\n`;\n};\n\nexport const defaultInsertionsFewShotMessages: MinimalChatGPTMessage[] = [\n {\n role: \"user\",\n name: \"TextAfterCursor\",\n content: \"While I was there I also picked up some apples, oranges, and bananas.\",\n },\n {\n role: \"user\",\n name: \"TextBeforeCursor\",\n content: \"This morning I woke up and went straight to the grocery store.\",\n },\n {\n role: \"user\",\n name: \"InsertionPrompt\",\n content: \"I bought a big watermelon\",\n },\n {\n role: \"assistant\",\n content:\n \" When I arrived I went straight to the produce section and picked out a big watermelon. \",\n },\n {\n role: \"user\",\n name: \"TextAfterCursor\",\n content:\n \"and (iii) to the appointment of the Equityholders' Representative pursuant to Section 10.7 of the Merger Agreement and to the provisions thereof.\",\n },\n {\n role: \"user\",\n name: \"TextBeforeCursor\",\n content:\n 'The Optionholder, in the Optionholder\\'s capacity as a holder of vested Options, hereby irrevocably and unconditionally agrees: (i) that the Optionholder shall be deemed an \"Equityholder\" under the Merger Agreement and shall be entitled to the rights and benefits, and subject to the obligations, of an \"Equityholder\" thereunder;',\n },\n {\n role: \"user\",\n name: \"InsertionPrompt\",\n content: \"add section about the optionholder's pro rata share\",\n },\n {\n role: \"assistant\",\n content:\n ' (ii) that, for purposes of this Agreement and the Merger Agreement, the applicable percentage set forth opposite the name of the Optionholder in the Distribution Waterfall shall be such the Optionholder\\'s \"Pro Rata Share\"; ',\n },\n];\n\nexport const defaultInsertionsApiConfig: InsertionsApiConfig = {\n makeSystemPrompt: defaultInsertionsMakeSystemPrompt,\n fewShotMessages: defaultInsertionsFewShotMessages,\n forwardedParams: undefined,\n};\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=out.js.map
3
+ //# sourceMappingURL=chunk-RUV6NBIF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { Element } from 'slate';
2
+
3
+ // src/lib/editor-to-text.ts
4
+ function nodeChildrenToTextComponents(editor, nodes) {
5
+ const indeciesOfInlineElements = new Set(
6
+ nodes.map((node, index) => {
7
+ if (Element.isElement(node) && editor.isInline(node)) {
8
+ return index;
9
+ }
10
+ return -1;
11
+ }).filter((index) => index !== -1)
12
+ );
13
+ const nonIgnorableItems = nodes.filter((node, index) => {
14
+ const isInline = indeciesOfInlineElements.has(index);
15
+ if (isInline) {
16
+ return false;
17
+ }
18
+ const isNeighbourOfInline = indeciesOfInlineElements.has(index - 1) || indeciesOfInlineElements.has(index + 1);
19
+ if (isNeighbourOfInline) {
20
+ return node.text !== "";
21
+ }
22
+ return true;
23
+ });
24
+ return nonIgnorableItems.map((node) => {
25
+ if (Element.isElement(node)) {
26
+ switch (node.type) {
27
+ case "paragraph":
28
+ return nodeChildrenToTextComponents(editor, node.children);
29
+ case "suggestion":
30
+ return [];
31
+ }
32
+ } else {
33
+ return [node];
34
+ }
35
+ }).reduce((acc, val) => acc.concat(val), []);
36
+ }
37
+ var editorToText = (editor) => {
38
+ const flattened = nodeChildrenToTextComponents(editor, editor.children);
39
+ const text = flattened.map((textComponent) => textComponent.text).join("\n");
40
+ return text;
41
+ };
42
+
43
+ export { editorToText };
44
+ //# sourceMappingURL=out.js.map
45
+ //# sourceMappingURL=chunk-T6MTDQZ7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/editor-to-text.ts"],"names":[],"mappings":";AAAA,SAAiC,eAAe;AAKhD,SAAS,6BACP,QACA,OACuB;AAEvB,QAAM,2BAA2B,IAAI;AAAA,IACnC,MACG,IAAI,CAAC,MAAM,UAAU;AACpB,UAAI,QAAQ,UAAU,IAAI,KAAK,OAAO,SAAS,IAAI,GAAG;AACpD,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC,EACA,OAAO,CAAC,UAAU,UAAU,EAAE;AAAA,EACnC;AAIA,QAAM,oBAAoB,MAAM,OAAO,CAAC,MAAM,UAAU;AACtD,UAAM,WAAW,yBAAyB,IAAI,KAAK;AACnD,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AAEA,UAAM,sBACJ,yBAAyB,IAAI,QAAQ,CAAC,KAAK,yBAAyB,IAAI,QAAQ,CAAC;AACnF,QAAI,qBAAqB;AACvB,aAAQ,KAAa,SAAS;AAAA,IAChC;AAEA,WAAO;AAAA,EACT,CAAC;AAED,SAAO,kBACJ,IAAI,CAAC,SAAS;AACb,QAAI,QAAQ,UAAU,IAAI,GAAG;AAC3B,cAAQ,KAAK,MAAM;AAAA,QACjB,KAAK;AACH,iBAAO,6BAA6B,QAAQ,KAAK,QAAQ;AAAA,QAC3D,KAAK;AACH,iBAAO,CAAC;AAAA,MACZ;AAAA,IACF,OAAO;AACL,aAAO,CAAC,IAAI;AAAA,IACd;AAAA,EACF,CAAC,EACA,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC;AAC7C;AAEO,IAAM,eAAe,CAAC,WAAqD;AAChF,QAAM,YAAY,6BAA6B,QAAQ,OAAO,QAAQ;AAEtE,QAAM,OAAO,UAAU,IAAI,CAAC,kBAAkB,cAAc,IAAI,EAAE,KAAK,IAAI;AAE3E,SAAO;AACT","sourcesContent":["import { BaseEditor, Descendant, Element } from \"slate\";\nimport { HistoryEditor } from \"slate-history\";\nimport { ReactEditor } from \"slate-react\";\nimport { SuggestionAwareText } from \"../types/base/custom-editor\";\n\nfunction nodeChildrenToTextComponents(\n editor: BaseEditor & ReactEditor & HistoryEditor,\n nodes: Descendant[],\n): SuggestionAwareText[] {\n // find inlineable elements\n const indeciesOfInlineElements = new Set(\n nodes\n .map((node, index) => {\n if (Element.isElement(node) && editor.isInline(node)) {\n return index;\n }\n return -1;\n })\n .filter((index) => index !== -1),\n );\n\n // ignorable elements = inline elements,\n // or neighbors of inline elements that are {text: \"\"}\n const nonIgnorableItems = nodes.filter((node, index) => {\n const isInline = indeciesOfInlineElements.has(index);\n if (isInline) {\n return false;\n }\n\n const isNeighbourOfInline =\n indeciesOfInlineElements.has(index - 1) || indeciesOfInlineElements.has(index + 1);\n if (isNeighbourOfInline) {\n return (node as any).text !== \"\";\n }\n\n return true;\n });\n\n return nonIgnorableItems\n .map((node) => {\n if (Element.isElement(node)) {\n switch (node.type) {\n case \"paragraph\":\n return nodeChildrenToTextComponents(editor, node.children);\n case \"suggestion\":\n return [];\n }\n } else {\n return [node];\n }\n })\n .reduce((acc, val) => acc.concat(val), []);\n}\n\nexport const editorToText = (editor: BaseEditor & ReactEditor & HistoryEditor) => {\n const flattened = nodeChildrenToTextComponents(editor, editor.children);\n\n const text = flattened.map((textComponent) => textComponent.text).join(\"\\n\");\n\n return text;\n};\n"]}