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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/.turbo/turbo-build.log +153 -154
  2. package/CHANGELOG.md +35 -6
  3. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +1745 -35
  4. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map +1 -1
  5. package/dist/components/base-copilot-textarea/render-element.mjs +51 -3
  6. package/dist/components/base-copilot-textarea/render-element.mjs.map +1 -1
  7. package/dist/components/base-copilot-textarea/render-placeholder.mjs +49 -3
  8. package/dist/components/base-copilot-textarea/render-placeholder.mjs.map +1 -1
  9. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs +86 -4
  10. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs.map +1 -1
  11. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs +57 -3
  12. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs.map +1 -1
  13. package/dist/components/copilot-textarea/copilot-textarea.mjs +2192 -47
  14. package/dist/components/copilot-textarea/copilot-textarea.mjs.map +1 -1
  15. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs +17 -3
  16. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs.map +1 -1
  17. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs +137 -3
  18. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs.map +1 -1
  19. package/dist/components/hovering-toolbar/hovering-toolbar.mjs +875 -18
  20. package/dist/components/hovering-toolbar/hovering-toolbar.mjs.map +1 -1
  21. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs +558 -12
  22. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs.map +1 -1
  23. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs +581 -13
  24. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs.map +1 -1
  25. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs +102 -5
  26. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs.map +1 -1
  27. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs +581 -14
  28. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs.map +1 -1
  29. package/dist/components/index.mjs +2193 -48
  30. package/dist/components/index.mjs.map +1 -1
  31. package/dist/components/manual-ui/chip-with-icon.mjs +5 -6
  32. package/dist/components/manual-ui/chip-with-icon.mjs.map +1 -1
  33. package/dist/components/source-search-box/source-search-box.mjs +211 -6
  34. package/dist/components/source-search-box/source-search-box.mjs.map +1 -1
  35. package/dist/components/ui/button.mjs +85 -4
  36. package/dist/components/ui/button.mjs.map +1 -1
  37. package/dist/components/ui/card.mjs +53 -7
  38. package/dist/components/ui/card.mjs.map +1 -1
  39. package/dist/components/ui/command.mjs +244 -5
  40. package/dist/components/ui/command.mjs.map +1 -1
  41. package/dist/components/ui/dialog.mjs +144 -4
  42. package/dist/components/ui/dialog.mjs.map +1 -1
  43. package/dist/components/ui/label.mjs +60 -4
  44. package/dist/components/ui/label.mjs.map +1 -1
  45. package/dist/components/ui/separator.mjs +50 -8
  46. package/dist/components/ui/separator.mjs.map +1 -1
  47. package/dist/components/ui/textarea.mjs +48 -7
  48. package/dist/components/ui/textarea.mjs.map +1 -1
  49. package/dist/context/index.mjs +0 -2
  50. package/dist/context/index.mjs.map +1 -1
  51. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs +158 -6
  52. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs.map +1 -1
  53. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs +168 -4
  54. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs.map +1 -1
  55. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs +148 -5
  56. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs.map +1 -1
  57. package/dist/hooks/index.mjs +0 -2
  58. package/dist/hooks/index.mjs.map +1 -1
  59. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs +114 -14
  60. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs.map +1 -1
  61. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs +166 -14
  62. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs.map +1 -1
  63. package/dist/hooks/misc/use-autosize-textarea.mjs +15 -3
  64. package/dist/hooks/misc/use-autosize-textarea.mjs.map +1 -1
  65. package/dist/index.css +0 -3
  66. package/dist/index.css.map +1 -1
  67. package/dist/index.d.ts +0 -1
  68. package/dist/index.mjs +2195 -50
  69. package/dist/index.mjs.map +1 -1
  70. package/dist/lib/debouncer.mjs +51 -3
  71. package/dist/lib/debouncer.mjs.map +1 -1
  72. package/dist/lib/editor-to-text.mjs +43 -3
  73. package/dist/lib/editor-to-text.mjs.map +1 -1
  74. package/dist/lib/get-text-around-cursor.mjs +102 -3
  75. package/dist/lib/get-text-around-cursor.mjs.map +1 -1
  76. package/dist/lib/retry.mjs +17 -3
  77. package/dist/lib/retry.mjs.map +1 -1
  78. package/dist/lib/slatejs-edits/add-autocompletions.mjs +25 -3
  79. package/dist/lib/slatejs-edits/add-autocompletions.mjs.map +1 -1
  80. package/dist/lib/slatejs-edits/clear-autocompletions.mjs +20 -3
  81. package/dist/lib/slatejs-edits/clear-autocompletions.mjs.map +1 -1
  82. package/dist/lib/slatejs-edits/replace-text.mjs +27 -3
  83. package/dist/lib/slatejs-edits/replace-text.mjs.map +1 -1
  84. package/dist/lib/slatejs-edits/with-partial-history.mjs +106 -3
  85. package/dist/lib/slatejs-edits/with-partial-history.mjs.map +1 -1
  86. package/dist/lib/stream-promise-flatten.mjs +47 -3
  87. package/dist/lib/stream-promise-flatten.mjs.map +1 -1
  88. package/dist/lib/utils.mjs +71 -3
  89. package/dist/lib/utils.mjs.map +1 -1
  90. package/dist/lib/utils.test.mjs +0 -1
  91. package/dist/lib/utils.test.mjs.map +1 -1
  92. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs +0 -2
  93. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.mjs.map +1 -1
  94. package/dist/types/autosuggestions-config/autosuggestions-config.mjs +274 -8
  95. package/dist/types/autosuggestions-config/autosuggestions-config.mjs.map +1 -1
  96. package/dist/types/autosuggestions-config/editing-api-config.mjs +87 -3
  97. package/dist/types/autosuggestions-config/editing-api-config.mjs.map +1 -1
  98. package/dist/types/autosuggestions-config/index.d.ts +0 -1
  99. package/dist/types/autosuggestions-config/index.mjs +274 -10
  100. package/dist/types/autosuggestions-config/index.mjs.map +1 -1
  101. package/dist/types/autosuggestions-config/insertions-api-config.mjs +78 -3
  102. package/dist/types/autosuggestions-config/insertions-api-config.mjs.map +1 -1
  103. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs +0 -2
  104. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.mjs.map +1 -1
  105. package/dist/types/autosuggestions-config/subtypes/minimal-chat-gpt-message.mjs +0 -2
  106. package/dist/types/autosuggestions-config/subtypes/minimal-chat-gpt-message.mjs.map +1 -1
  107. package/dist/types/autosuggestions-config/suggestions-api-config.mjs +64 -3
  108. package/dist/types/autosuggestions-config/suggestions-api-config.mjs.map +1 -1
  109. package/dist/types/base/autosuggestion-state.mjs +0 -2
  110. package/dist/types/base/autosuggestion-state.mjs.map +1 -1
  111. package/dist/types/base/autosuggestions-bare-function.mjs +0 -2
  112. package/dist/types/base/autosuggestions-bare-function.mjs.map +1 -1
  113. package/dist/types/base/base-autosuggestions-config.mjs +26 -3
  114. package/dist/types/base/base-autosuggestions-config.mjs.map +1 -1
  115. package/dist/types/base/base-copilot-textarea-props.mjs +0 -2
  116. package/dist/types/base/base-copilot-textarea-props.mjs.map +1 -1
  117. package/dist/types/base/custom-editor.mjs +0 -2
  118. package/dist/types/base/custom-editor.mjs.map +1 -1
  119. package/dist/types/base/editor-autocomplete-state.mjs +17 -4
  120. package/dist/types/base/editor-autocomplete-state.mjs.map +1 -1
  121. package/dist/types/base/index.mjs +26 -4
  122. package/dist/types/base/index.mjs.map +1 -1
  123. package/dist/types/html-copilot-textarea-element.mjs +0 -2
  124. package/dist/types/html-copilot-textarea-element.mjs.map +1 -1
  125. package/dist/types/index.d.ts +0 -1
  126. package/dist/types/index.mjs +275 -12
  127. package/dist/types/index.mjs.map +1 -1
  128. package/package.json +3 -4
  129. package/src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx +15 -9
  130. package/src/hooks/make-autosuggestions-function/use-make-standard-insertion-function.tsx +22 -6
  131. package/src/types/autosuggestions-config/autosuggestions-config-user-specified.tsx +1 -1
  132. package/src/types/autosuggestions-config/autosuggestions-config.tsx +0 -1
  133. package/src/types/autosuggestions-config/editing-api-config.tsx +22 -17
  134. package/src/types/autosuggestions-config/index.ts +0 -2
  135. package/src/types/autosuggestions-config/insertions-api-config.tsx +11 -6
  136. package/dist/chunk-224UKA7C.mjs +0 -33
  137. package/dist/chunk-224UKA7C.mjs.map +0 -1
  138. package/dist/chunk-22SLIB4K.mjs +0 -46
  139. package/dist/chunk-22SLIB4K.mjs.map +0 -1
  140. package/dist/chunk-2C7O2EVM.mjs +0 -27
  141. package/dist/chunk-2C7O2EVM.mjs.map +0 -1
  142. package/dist/chunk-2QDCE7PD.mjs +0 -29
  143. package/dist/chunk-2QDCE7PD.mjs.map +0 -1
  144. package/dist/chunk-3PQ7GSFE.mjs +0 -17
  145. package/dist/chunk-3PQ7GSFE.mjs.map +0 -1
  146. package/dist/chunk-47L4PLG4.mjs +0 -45
  147. package/dist/chunk-47L4PLG4.mjs.map +0 -1
  148. package/dist/chunk-4NHVQZ67.mjs +0 -107
  149. package/dist/chunk-4NHVQZ67.mjs.map +0 -1
  150. package/dist/chunk-5FO6ISW4.mjs +0 -3
  151. package/dist/chunk-5FO6ISW4.mjs.map +0 -1
  152. package/dist/chunk-5UNJXFUO.mjs +0 -29
  153. package/dist/chunk-5UNJXFUO.mjs.map +0 -1
  154. package/dist/chunk-5ZCVCVRZ.mjs +0 -19
  155. package/dist/chunk-5ZCVCVRZ.mjs.map +0 -1
  156. package/dist/chunk-6TZ6V3QI.mjs +0 -217
  157. package/dist/chunk-6TZ6V3QI.mjs.map +0 -1
  158. package/dist/chunk-72P3KOHZ.mjs +0 -91
  159. package/dist/chunk-72P3KOHZ.mjs.map +0 -1
  160. package/dist/chunk-7LSRNPNI.mjs +0 -59
  161. package/dist/chunk-7LSRNPNI.mjs.map +0 -1
  162. package/dist/chunk-7SUZ6CXM.mjs +0 -47
  163. package/dist/chunk-7SUZ6CXM.mjs.map +0 -1
  164. package/dist/chunk-COUN55HQ.mjs +0 -53
  165. package/dist/chunk-COUN55HQ.mjs.map +0 -1
  166. package/dist/chunk-DE5K76I2.mjs +0 -3
  167. package/dist/chunk-DE5K76I2.mjs.map +0 -1
  168. package/dist/chunk-DRV2FOHZ.mjs +0 -65
  169. package/dist/chunk-DRV2FOHZ.mjs.map +0 -1
  170. package/dist/chunk-ECR45NSD.mjs +0 -101
  171. package/dist/chunk-ECR45NSD.mjs.map +0 -1
  172. package/dist/chunk-EPBVNDKE.mjs +0 -46
  173. package/dist/chunk-EPBVNDKE.mjs.map +0 -1
  174. package/dist/chunk-FJNUPSQK.mjs +0 -72
  175. package/dist/chunk-FJNUPSQK.mjs.map +0 -1
  176. package/dist/chunk-FP2EKU3L.mjs +0 -28
  177. package/dist/chunk-FP2EKU3L.mjs.map +0 -1
  178. package/dist/chunk-GQN2HYFJ.mjs +0 -22
  179. package/dist/chunk-GQN2HYFJ.mjs.map +0 -1
  180. package/dist/chunk-H4VKQGVU.mjs +0 -3
  181. package/dist/chunk-H4VKQGVU.mjs.map +0 -1
  182. package/dist/chunk-HSCZA5TS.mjs +0 -27
  183. package/dist/chunk-HSCZA5TS.mjs.map +0 -1
  184. package/dist/chunk-IU3WTXLQ.mjs +0 -3
  185. package/dist/chunk-IU3WTXLQ.mjs.map +0 -1
  186. package/dist/chunk-JJLQVT7S.mjs +0 -10
  187. package/dist/chunk-JJLQVT7S.mjs.map +0 -1
  188. package/dist/chunk-K5LNB36H.mjs +0 -80
  189. package/dist/chunk-K5LNB36H.mjs.map +0 -1
  190. package/dist/chunk-KDVMG3XF.mjs +0 -63
  191. package/dist/chunk-KDVMG3XF.mjs.map +0 -1
  192. package/dist/chunk-KFQZHRPJ.mjs +0 -19
  193. package/dist/chunk-KFQZHRPJ.mjs.map +0 -1
  194. package/dist/chunk-KNQIEOFP.mjs +0 -18
  195. package/dist/chunk-KNQIEOFP.mjs.map +0 -1
  196. package/dist/chunk-KTTN5H7S.mjs +0 -202
  197. package/dist/chunk-KTTN5H7S.mjs.map +0 -1
  198. package/dist/chunk-L7VVZH4Q.mjs +0 -3
  199. package/dist/chunk-L7VVZH4Q.mjs.map +0 -1
  200. package/dist/chunk-LQZBI6XD.mjs +0 -112
  201. package/dist/chunk-LQZBI6XD.mjs.map +0 -1
  202. package/dist/chunk-M2DR4KVB.mjs +0 -33
  203. package/dist/chunk-M2DR4KVB.mjs.map +0 -1
  204. package/dist/chunk-MMVDU6DF.mjs +0 -3
  205. package/dist/chunk-MMVDU6DF.mjs.map +0 -1
  206. package/dist/chunk-MRXNTQOX.mjs +0 -55
  207. package/dist/chunk-MRXNTQOX.mjs.map +0 -1
  208. package/dist/chunk-OHO4G6DR.mjs +0 -19
  209. package/dist/chunk-OHO4G6DR.mjs.map +0 -1
  210. package/dist/chunk-P4QVFRLY.mjs +0 -103
  211. package/dist/chunk-P4QVFRLY.mjs.map +0 -1
  212. package/dist/chunk-PTZVE6NC.mjs +0 -94
  213. package/dist/chunk-PTZVE6NC.mjs.map +0 -1
  214. package/dist/chunk-QDFAIRQF.mjs +0 -45
  215. package/dist/chunk-QDFAIRQF.mjs.map +0 -1
  216. package/dist/chunk-RBR32FWA.mjs +0 -74
  217. package/dist/chunk-RBR32FWA.mjs.map +0 -1
  218. package/dist/chunk-SBV2KVF5.mjs +0 -99
  219. package/dist/chunk-SBV2KVF5.mjs.map +0 -1
  220. package/dist/chunk-T6MTDQZ7.mjs +0 -45
  221. package/dist/chunk-T6MTDQZ7.mjs.map +0 -1
  222. package/dist/chunk-VPEH6V7T.mjs +0 -83
  223. package/dist/chunk-VPEH6V7T.mjs.map +0 -1
  224. package/dist/chunk-WADHCMPK.mjs +0 -3
  225. package/dist/chunk-WADHCMPK.mjs.map +0 -1
  226. package/dist/chunk-WFTAAA7R.mjs +0 -44
  227. package/dist/chunk-WFTAAA7R.mjs.map +0 -1
  228. package/dist/chunk-WJHSY5T6.mjs +0 -3
  229. package/dist/chunk-WJHSY5T6.mjs.map +0 -1
  230. package/dist/chunk-WTASPE2W.mjs +0 -105
  231. package/dist/chunk-WTASPE2W.mjs.map +0 -1
  232. package/dist/chunk-XV7MLLXQ.mjs +0 -18
  233. package/dist/chunk-XV7MLLXQ.mjs.map +0 -1
  234. package/dist/types/autosuggestions-config/subtypes/chatlike-api-endpoint.d.ts +0 -27
  235. package/dist/types/autosuggestions-config/subtypes/chatlike-api-endpoint.mjs +0 -4
  236. package/dist/types/autosuggestions-config/subtypes/chatlike-api-endpoint.mjs.map +0 -1
  237. package/src/types/autosuggestions-config/subtypes/chatlike-api-endpoint.tsx +0 -69
@@ -3,8 +3,6 @@ export type { AutosuggestionsConfig } from "./autosuggestions-config";
3
3
 
4
4
  export type { MinimalChatGPTMessage } from "./subtypes/minimal-chat-gpt-message";
5
5
  export type { MakeSystemPrompt } from "./subtypes/make-system-prompt";
6
- export { ChatlikeApiEndpoint } from "./subtypes/chatlike-api-endpoint";
7
- export type { ChatlikeApiEndpointImpl } from "./subtypes/chatlike-api-endpoint";
8
6
 
9
7
  export type { AutosuggestionsConfigUserSpecified } from "./autosuggestions-config-user-specified";
10
8
  export type { SuggestionsApiConfigUserSpecified } from "./autosuggestions-config-user-specified";
@@ -11,30 +11,35 @@ export const defaultInsertionsMakeSystemPrompt: MakeSystemPrompt = (
11
11
  textareaPurpose,
12
12
  contextString,
13
13
  ) => {
14
- return `You are a versatile writing assistant.
14
+ return `You are a versatile writing assistant helping the user insert new text into their existing work.
15
15
 
16
16
  The user is writing some text.
17
17
  The purpose is: \"${textareaPurpose}\"
18
18
 
19
- The following external context is also provided. Use it to help you make better suggestions!!!
19
+ The following external context is also provided. Use it to inform your suggestions when relevant!!!
20
20
  \`\`\`
21
21
  ${contextString}
22
22
  \`\`\`
23
23
 
24
- The user also provides you with a prompt for INSERTIONS into the text they are writing.
25
- Your job is to come up with an INSERTION into the text that the user would like AS BEST YOU CAN.
24
+ The user will provide you with a prompt for an INSERTION into the text they are writing.
25
+ Your job is to come up with an INSERTION into the text that the user would like to use, AS BEST YOU CAN.
26
26
  Only insert a SHORT segment. Usually 1 sentence, or at most 1 paragraph.
27
27
 
28
28
  Adjust yourself to the user's style and implied intent.
29
29
 
30
- 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.
30
+
31
+ 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.
32
+ The conversation will be structured as follows:
31
33
  <TextAfterCursor>
32
34
  <TextBeforeCursor>
33
35
  <InsertionPrompt>
34
- <YourSuggestion>
36
+
37
+ <YourInsertionSuggestion>
35
38
  `;
36
39
  };
37
40
 
41
+
42
+
38
43
  export const defaultInsertionsFewShotMessages: MinimalChatGPTMessage[] = [
39
44
  {
40
45
  role: "user",
@@ -1,33 +0,0 @@
1
- import { __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
2
- import { jsx, jsxs } from 'react/jsx-runtime';
3
-
4
- function makeRenderElementFunction(suggestionsStyle) {
5
- return (props) => {
6
- switch (props.element.type) {
7
- case "paragraph":
8
- return /* @__PURE__ */ jsx(DefaultElement, __spreadValues({}, props));
9
- case "suggestion":
10
- return /* @__PURE__ */ jsx(SuggestionElement, __spreadProps(__spreadValues({}, props), { suggestionsStyle }));
11
- }
12
- };
13
- }
14
- var DefaultElement = (props) => {
15
- return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({}, props.attributes), { children: props.children }));
16
- };
17
- var SuggestionElement = (props) => {
18
- return /* @__PURE__ */ jsxs(
19
- "span",
20
- __spreadProps(__spreadValues({}, props.attributes), {
21
- style: __spreadValues({}, props.suggestionsStyle),
22
- contentEditable: false,
23
- children: [
24
- props.children,
25
- props.element.type === "suggestion" && props.element.content
26
- ]
27
- })
28
- );
29
- };
30
-
31
- export { makeRenderElementFunction };
32
- //# sourceMappingURL=out.js.map
33
- //# sourceMappingURL=chunk-224UKA7C.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/base-copilot-textarea/render-element.tsx"],"names":[],"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,iBAAiB;AAAA,MAEhB;AAAA,cAAM;AAAA,QACN,MAAM,QAAQ,SAAS,gBAAgB,MAAM,QAAQ;AAAA;AAAA;AAAA,EACxD;AAEJ","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 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"]}
@@ -1,46 +0,0 @@
1
- import { useMakeStandardAutosuggestionFunction } from './chunk-COUN55HQ.mjs';
2
- import { useMakeStandardInsertionOrEditingFunction } from './chunk-SBV2KVF5.mjs';
3
- import { BaseCopilotTextarea } from './chunk-6TZ6V3QI.mjs';
4
- import { defaultAutosuggestionsConfig } from './chunk-5ZCVCVRZ.mjs';
5
- import { __objRest, __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
6
- import React from 'react';
7
- import merge from 'lodash.merge';
8
- import { jsx, Fragment } from 'react/jsx-runtime';
9
-
10
- var CopilotTextarea = React.forwardRef(
11
- (props, ref) => {
12
- const _a = props, { autosuggestionsConfig: autosuggestionsConfigUserSpecified } = _a, forwardedProps = __objRest(_a, ["autosuggestionsConfig"]);
13
- const autosuggestionsConfig = merge(
14
- defaultAutosuggestionsConfig,
15
- autosuggestionsConfigUserSpecified
16
- );
17
- const autosuggestionsFunction = useMakeStandardAutosuggestionFunction(
18
- autosuggestionsConfig.textareaPurpose,
19
- autosuggestionsConfig.contextCategories,
20
- autosuggestionsConfig.chatApiConfigs.suggestionsApiConfig
21
- );
22
- const insertionOrEditingFunction = useMakeStandardInsertionOrEditingFunction(
23
- autosuggestionsConfig.textareaPurpose,
24
- autosuggestionsConfig.contextCategories,
25
- autosuggestionsConfig.chatApiConfigs.insertionApiConfig,
26
- autosuggestionsConfig.chatApiConfigs.editingApiConfig
27
- );
28
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
29
- BaseCopilotTextarea,
30
- __spreadProps(__spreadValues({
31
- ref
32
- }, forwardedProps), {
33
- baseAutosuggestionsConfig: __spreadProps(__spreadValues({}, autosuggestionsConfig), {
34
- apiConfig: {
35
- insertionOrEditingFunction,
36
- autosuggestionsFunction
37
- }
38
- })
39
- })
40
- ) });
41
- }
42
- );
43
-
44
- export { CopilotTextarea };
45
- //# sourceMappingURL=out.js.map
46
- //# sourceMappingURL=chunk-22SLIB4K.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/copilot-textarea/copilot-textarea.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AACA,OAAO,WAAW;AAUlB,OAAO,WAAW;AAqCZ,mBACE,WADF;AAxBC,IAAM,kBAAkB,MAAM;AAAA,EACnC,CAAC,OAA6B,QAA4D;AAExF,UAAyF,YAAjF,yBAAuB,mCA3BnC,IA2B6F,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","sourcesContent":["// This example is for an Editor with `ReactEditor` and `HistoryEditor`\nimport React from \"react\";\nimport { useMakeStandardAutosuggestionFunction } from \"../../hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function\";\nimport { HTMLCopilotTextAreaElement } from \"../../types\";\nimport { BaseCopilotTextareaProps } from \"../../types/base/base-copilot-textarea-props\";\nimport {\n AutosuggestionsConfig,\n defaultAutosuggestionsConfig,\n} from \"../../types/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 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>): JSX.Element => {\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"]}
@@ -1,27 +0,0 @@
1
- import { Transforms } from 'slate';
2
-
3
- // src/lib/slatejs-edits/add-autocompletions.ts
4
- function addAutocompletionsToEditor(editor, newSuggestion, point) {
5
- const editorPosition = editor.selection;
6
- Transforms.insertNodes(
7
- editor,
8
- [
9
- {
10
- type: "suggestion",
11
- inline: true,
12
- content: newSuggestion,
13
- children: [{ text: "" }]
14
- }
15
- ],
16
- {
17
- at: point
18
- }
19
- );
20
- if (editorPosition) {
21
- editor.selection = editorPosition;
22
- }
23
- }
24
-
25
- export { addAutocompletionsToEditor };
26
- //# sourceMappingURL=out.js.map
27
- //# sourceMappingURL=chunk-2C7O2EVM.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/slatejs-edits/add-autocompletions.ts"],"names":[],"mappings":";AAAA,SAAoB,kBAAkB;AAG/B,SAAS,2BACd,QACA,eACA,OACA;AACA,QAAM,iBAAiB,OAAO;AAE9B,aAAW;AAAA,IACT;AAAA,IACA;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;AAAA,MACzB;AAAA,IACF;AAAA,IACA;AAAA,MACE,IAAI;AAAA,IACN;AAAA,EACF;AAGA,MAAI,gBAAgB;AAClB,WAAO,YAAY;AAAA,EACrB;AACF","sourcesContent":["import { BasePoint, Transforms } from \"slate\";\nimport { CustomEditor } from \"../../types/base/custom-editor\";\n\nexport function addAutocompletionsToEditor(\n editor: CustomEditor,\n newSuggestion: string,\n point: BasePoint,\n) {\n const editorPosition = editor.selection;\n\n Transforms.insertNodes(\n editor,\n [\n {\n type: \"suggestion\",\n inline: true,\n content: newSuggestion,\n children: [{ text: \"\" }],\n },\n ],\n {\n at: point,\n },\n );\n\n // restore cursor position\n if (editorPosition) {\n editor.selection = editorPosition;\n }\n}\n"]}
@@ -1,29 +0,0 @@
1
- import { __async } from './chunk-MRXNTQOX.mjs';
2
-
3
- // src/lib/stream-promise-flatten.ts
4
- function streamPromiseFlatten(promise) {
5
- return new ReadableStream({
6
- start(controller) {
7
- return __async(this, null, function* () {
8
- try {
9
- const stream = yield promise;
10
- const reader = stream.getReader();
11
- while (true) {
12
- const { done, value } = yield reader.read();
13
- if (done) {
14
- controller.close();
15
- return;
16
- }
17
- controller.enqueue(value);
18
- }
19
- } catch (error) {
20
- controller.error(error);
21
- }
22
- });
23
- }
24
- });
25
- }
26
-
27
- export { streamPromiseFlatten };
28
- //# sourceMappingURL=out.js.map
29
- //# sourceMappingURL=chunk-2QDCE7PD.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/stream-promise-flatten.ts"],"names":[],"mappings":";;;;;AAUO,SAAS,qBAAwB,SAAwD;AAC9F,SAAO,IAAI,eAAkB;AAAA,IACrB,MAAM,YAAY;AAAA;AACtB,YAAI;AACF,gBAAM,SAAS,MAAM;AACrB,gBAAM,SAAS,OAAO,UAAU;AAEhC,iBAAO,MAAM;AACX,kBAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAE1C,gBAAI,MAAM;AACR,yBAAW,MAAM;AACjB;AAAA,YACF;AAEA,uBAAW,QAAQ,KAAK;AAAA,UAC1B;AAAA,QACF,SAAS,OAAP;AACA,qBAAW,MAAM,KAAK;AAAA,QACxB;AAAA,MACF;AAAA;AAAA,EACF,CAAC;AACH","sourcesContent":["/**\n * Flatten a promise of a stream, into a stream.\n *\n * Useful because a stream already includes the notion of async value delivery,\n * so it often makes sense to simply await the values rather than the generator of the values.\n *\n * @param {Promise<ReadableStream<A>>} promise - The promise to flatten.\n * @returns {ReadableStream<A>} - The flattened stream.\n */\n\nexport function streamPromiseFlatten<A>(promise: Promise<ReadableStream<A>>): ReadableStream<A> {\n return new ReadableStream<A>({\n async start(controller) {\n try {\n const stream = await promise;\n const reader = stream.getReader();\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n controller.close();\n return;\n }\n\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n },\n });\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { useEffect } from 'react';
2
-
3
- // src/hooks/misc/use-autosize-textarea.tsx
4
- var useAutosizeTextArea = (textAreaRef, value) => {
5
- useEffect(() => {
6
- if (textAreaRef.current !== null) {
7
- textAreaRef.current.style.height = "0px";
8
- const scrollHeight = textAreaRef.current.scrollHeight;
9
- textAreaRef.current.style.height = scrollHeight + "px";
10
- }
11
- }, [textAreaRef, value]);
12
- };
13
- var use_autosize_textarea_default = useAutosizeTextArea;
14
-
15
- export { use_autosize_textarea_default };
16
- //# sourceMappingURL=out.js.map
17
- //# sourceMappingURL=chunk-3PQ7GSFE.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/misc/use-autosize-textarea.tsx"],"names":[],"mappings":";AAAA,SAAyB,iBAAiB;AAG1C,IAAM,sBAAsB,CAAC,aAA6C,UAAkB;AAC1F,YAAU,MAAM;AACd,QAAI,YAAY,YAAY,MAAM;AAEhC,kBAAY,QAAQ,MAAM,SAAS;AACnC,YAAM,eAAe,YAAY,QAAQ;AAIzC,kBAAY,QAAQ,MAAM,SAAS,eAAe;AAAA,IACpD;AAAA,EACF,GAAG,CAAC,aAAa,KAAK,CAAC;AACzB;AAEA,IAAO,gCAAQ","sourcesContent":["import { Ref, RefObject, useEffect } from \"react\";\n\n// Updates the height of a <textarea> when the value changes.\nconst useAutosizeTextArea = (textAreaRef: RefObject<HTMLTextAreaElement>, value: string) => {\n useEffect(() => {\n if (textAreaRef.current !== null) {\n // We need to reset the height momentarily to get the correct scrollHeight for the textarea\n textAreaRef.current.style.height = \"0px\";\n const scrollHeight = textAreaRef.current.scrollHeight;\n\n // We then set the height directly, outside of the render loop\n // Trying to set this with state or a ref will product an incorrect value.\n textAreaRef.current.style.height = scrollHeight + \"px\";\n }\n }, [textAreaRef, value]);\n};\n\nexport default useAutosizeTextArea;\n"]}
@@ -1,45 +0,0 @@
1
- import { editorToText } from './chunk-T6MTDQZ7.mjs';
2
- import { useEffect, useRef } from 'react';
3
- import { useSlateSelector } from 'slate-react';
4
- import { Range } from 'slate';
5
- import { jsx, Fragment } from 'react/jsx-runtime';
6
-
7
- function TrackerTextEditedSinceLastCursorMovement(props) {
8
- const cursorState = useSlateSelector((state) => ({
9
- selection: state.selection,
10
- text: editorToText(state)
11
- }));
12
- const previousState = usePrevious(cursorState);
13
- useEffect(() => {
14
- if (!previousState) {
15
- return;
16
- }
17
- if (cursorChangedWithoutTextChanged(previousState, cursorState)) {
18
- props.setCursorMovedSinceLastTextChange(true);
19
- }
20
- }, [props.setCursorMovedSinceLastTextChange, cursorState]);
21
- return /* @__PURE__ */ jsx(Fragment, {});
22
- }
23
- var cursorChangedWithoutTextChanged = (prev, next) => {
24
- const isSelectionChanged = !isSelectionEqual(prev.selection, next.selection);
25
- const isTextSame = prev.text === next.text;
26
- return isSelectionChanged && isTextSame;
27
- };
28
- var isSelectionEqual = (a, b) => {
29
- if (!a && !b)
30
- return true;
31
- if (!a || !b)
32
- return false;
33
- return Range.equals(a, b);
34
- };
35
- function usePrevious(value) {
36
- const ref = useRef();
37
- useEffect(() => {
38
- ref.current = value;
39
- });
40
- return ref.current;
41
- }
42
-
43
- export { TrackerTextEditedSinceLastCursorMovement };
44
- //# sourceMappingURL=out.js.map
45
- //# sourceMappingURL=chunk-47L4PLG4.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.tsx"],"names":[],"mappings":";;;;;AAAA,SAAgB,WAAW,cAAc;AAEzC,SAAS,wBAAwB;AACjC,SAAS,aAAa;AA0Bb;AApBF,SAAS,yCACd,OACa;AACb,QAAM,cAAmC,iBAAiB,CAAC,WAAW;AAAA,IACpE,WAAW,MAAM;AAAA,IACjB,MAAM,aAAa,KAAK;AAAA,EAC1B,EAAE;AAEF,QAAM,gBAAgB,YAAY,WAAW;AAE7C,YAAU,MAAM;AACd,QAAI,CAAC,eAAe;AAClB;AAAA,IACF;AAEA,QAAI,gCAAgC,eAAe,WAAW,GAAG;AAC/D,YAAM,kCAAkC,IAAI;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,MAAM,mCAAmC,WAAW,CAAC;AAEzD,SAAO,gCAAE;AACX;AAOA,IAAM,kCAAkC,CACtC,MACA,SACY;AAEZ,QAAM,qBAAqB,CAAC,iBAAiB,KAAK,WAAW,KAAK,SAAS;AAG3E,QAAM,aAAa,KAAK,SAAS,KAAK;AAEtC,SAAO,sBAAsB;AAC/B;AAEA,IAAM,mBAAmB,CAAC,GAAkB,MAAqB;AAC/D,MAAI,CAAC,KAAK,CAAC;AAAG,WAAO;AACrB,MAAI,CAAC,KAAK,CAAC;AAAG,WAAO;AACrB,SAAO,MAAM,OAAO,GAAG,CAAC;AAC1B;AAiBA,SAAS,YAAe,OAAyB;AAC/C,QAAM,MAAM,OAAU;AAEtB,YAAU,MAAM;AACd,QAAI,UAAU;AAAA,EAChB,CAAC;AAED,SAAO,IAAI;AACb","sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport { BaseSelection } from \"slate\";\nimport { useSlateSelector } from \"slate-react\";\nimport { Range } from \"slate\";\nimport { editorToText } from \"../../lib/editor-to-text\";\n\ninterface TrackerTextEditedSinceLastCursorMovementProps {\n setCursorMovedSinceLastTextChange: (value: boolean) => void;\n}\nexport function TrackerTextEditedSinceLastCursorMovement(\n props: TrackerTextEditedSinceLastCursorMovementProps,\n): JSX.Element {\n const cursorState: RelevantEditorState = useSlateSelector((state) => ({\n selection: state.selection,\n text: editorToText(state),\n }));\n\n const previousState = usePrevious(cursorState);\n\n useEffect(() => {\n if (!previousState) {\n return;\n }\n\n if (cursorChangedWithoutTextChanged(previousState, cursorState)) {\n props.setCursorMovedSinceLastTextChange(true);\n }\n }, [props.setCursorMovedSinceLastTextChange, cursorState]);\n\n return <></>;\n}\n\ntype RelevantEditorState = {\n selection: BaseSelection;\n text: string;\n};\n\nconst cursorChangedWithoutTextChanged = (\n prev: RelevantEditorState,\n next: RelevantEditorState,\n): boolean => {\n // Check if the selection has changed\n const isSelectionChanged = !isSelectionEqual(prev.selection, next.selection);\n\n // Check if the text content remains the same\n const isTextSame = prev.text === next.text;\n\n return isSelectionChanged && isTextSame;\n};\n\nconst isSelectionEqual = (a: BaseSelection, b: BaseSelection) => {\n if (!a && !b) return true;\n if (!a || !b) return false;\n return Range.equals(a, b);\n};\n\n/**\n * Easily keep track of the *previous* value of a variable.\n *\n * Example:\n * ```\n * const [count, setCount] = useState(0);\n * const prevCount = usePrevious(count);\n *\n * useEffect(() => {\n * if (count > prevCount) {\n * console.log('Now I know that count is bigger than before');\n * }\n * }, [count, prevCount]);\n * ```\n */\nfunction usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n });\n\n return ref.current;\n}\n"]}
@@ -1,107 +0,0 @@
1
- import { Transforms, Editor, Operation, Path } from 'slate';
2
- import { HistoryEditor } from 'slate-history';
3
-
4
- // src/lib/slatejs-edits/with-partial-history.ts
5
- var withPartialHistory = (editor, shouldSave) => {
6
- const e = editor;
7
- const { apply } = e;
8
- e.history = { undos: [], redos: [] };
9
- e.redo = () => {
10
- const { history } = e;
11
- const { redos } = history;
12
- if (redos.length > 0) {
13
- const batch = redos[redos.length - 1];
14
- if (batch.selectionBefore) {
15
- Transforms.setSelection(e, batch.selectionBefore);
16
- }
17
- HistoryEditor.withoutSaving(e, () => {
18
- Editor.withoutNormalizing(e, () => {
19
- for (const op of batch.operations) {
20
- e.apply(op);
21
- }
22
- });
23
- });
24
- history.redos.pop();
25
- e.writeHistory("undos", batch);
26
- }
27
- };
28
- e.undo = () => {
29
- const { history } = e;
30
- const { undos } = history;
31
- if (undos.length > 0) {
32
- const batch = undos[undos.length - 1];
33
- HistoryEditor.withoutSaving(e, () => {
34
- Editor.withoutNormalizing(e, () => {
35
- const inverseOps = batch.operations.map(Operation.inverse).reverse();
36
- for (const op of inverseOps) {
37
- e.apply(op);
38
- }
39
- if (batch.selectionBefore) {
40
- Transforms.setSelection(e, batch.selectionBefore);
41
- }
42
- });
43
- });
44
- e.writeHistory("redos", batch);
45
- history.undos.pop();
46
- }
47
- };
48
- e.apply = (op) => {
49
- const { operations, history } = e;
50
- const { undos } = history;
51
- const lastBatch = undos[undos.length - 1];
52
- const lastOp = lastBatch && lastBatch.operations[lastBatch.operations.length - 1];
53
- let save = HistoryEditor.isSaving(e);
54
- let merge = HistoryEditor.isMerging(e);
55
- if (save == null) {
56
- save = shouldSave(op, lastOp);
57
- }
58
- if (save) {
59
- if (merge == null) {
60
- if (lastBatch == null) {
61
- merge = false;
62
- } else if (operations.length !== 0) {
63
- merge = true;
64
- } else {
65
- merge = shouldMerge(op, lastOp);
66
- }
67
- }
68
- if (lastBatch && merge) {
69
- lastBatch.operations.push(op);
70
- } else {
71
- const batch = {
72
- operations: [op],
73
- selectionBefore: e.selection
74
- };
75
- e.writeHistory("undos", batch);
76
- }
77
- while (undos.length > 100) {
78
- undos.shift();
79
- }
80
- history.redos = [];
81
- }
82
- apply(op);
83
- };
84
- e.writeHistory = (stack, batch) => {
85
- e.history[stack].push(batch);
86
- };
87
- return e;
88
- };
89
- var shouldMerge = (op, prev) => {
90
- if (prev && op.type === "insert_text" && prev.type === "insert_text" && op.offset === prev.offset + prev.text.length && Path.equals(op.path, prev.path)) {
91
- return true;
92
- }
93
- if (prev && op.type === "remove_text" && prev.type === "remove_text" && op.offset + op.text.length === prev.offset && Path.equals(op.path, prev.path)) {
94
- return true;
95
- }
96
- return false;
97
- };
98
- var defaultShouldSave = (op, prev) => {
99
- if (op.type === "set_selection") {
100
- return false;
101
- }
102
- return true;
103
- };
104
-
105
- export { defaultShouldSave, withPartialHistory };
106
- //# sourceMappingURL=out.js.map
107
- //# sourceMappingURL=chunk-4NHVQZ67.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/slatejs-edits/with-partial-history.ts"],"names":[],"mappings":"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","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"]}
@@ -1,3 +0,0 @@
1
-
2
- //# sourceMappingURL=out.js.map
3
- //# sourceMappingURL=chunk-5FO6ISW4.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
1
- import { Transforms, Editor } from 'slate';
2
-
3
- // src/lib/slatejs-edits/replace-text.ts
4
- function replaceEditorText(editor, newText) {
5
- Transforms.delete(editor, {
6
- at: {
7
- anchor: Editor.start(editor, []),
8
- focus: Editor.end(editor, [])
9
- }
10
- });
11
- if (newText && newText !== "") {
12
- Transforms.insertNodes(
13
- editor,
14
- [
15
- {
16
- type: "paragraph",
17
- children: [{ text: newText }]
18
- }
19
- ],
20
- {
21
- at: [0]
22
- }
23
- );
24
- }
25
- }
26
-
27
- export { replaceEditorText };
28
- //# sourceMappingURL=out.js.map
29
- //# sourceMappingURL=chunk-5UNJXFUO.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/slatejs-edits/replace-text.ts"],"names":[],"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","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"]}
@@ -1,19 +0,0 @@
1
- import { defaultInsertionsApiConfig } from './chunk-RBR32FWA.mjs';
2
- import { defaultSuggestionsApiConfig } from './chunk-KDVMG3XF.mjs';
3
- import { defaultEditingApiConfig } from './chunk-K5LNB36H.mjs';
4
- import { defaultBaseAutosuggestionsConfig } from './chunk-FP2EKU3L.mjs';
5
- import { __spreadProps, __spreadValues } from './chunk-MRXNTQOX.mjs';
6
- import { defaultCopilotContextCategories } from '@copilotkit/react-core';
7
-
8
- var defaultAutosuggestionsConfig = __spreadProps(__spreadValues({}, defaultBaseAutosuggestionsConfig), {
9
- contextCategories: defaultCopilotContextCategories,
10
- chatApiConfigs: {
11
- suggestionsApiConfig: defaultSuggestionsApiConfig,
12
- insertionApiConfig: defaultInsertionsApiConfig,
13
- editingApiConfig: defaultEditingApiConfig
14
- }
15
- });
16
-
17
- export { defaultAutosuggestionsConfig };
18
- //# sourceMappingURL=out.js.map
19
- //# sourceMappingURL=chunk-5ZCVCVRZ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/types/autosuggestions-config/autosuggestions-config.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAKA,SAAS,uCAAuC;AAczC,IAAM,+BAGT,iCACC,mCADD;AAAA,EAEF,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,IACd,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,EACpB;AACF","sourcesContent":["import { BaseAutosuggestionsConfig, defaultBaseAutosuggestionsConfig } from \"../base\";\nimport { SuggestionsApiConfig, defaultSuggestionsApiConfig } from \"./suggestions-api-config\";\nimport { InsertionsApiConfig, defaultInsertionsApiConfig } from \"./insertions-api-config\";\nimport { ChatlikeApiEndpoint } from \".\";\nimport { EditingApiConfig, defaultEditingApiConfig } from \"./editing-api-config\";\nimport { defaultCopilotContextCategories } from \"@copilotkit/react-core\";\n\n// Like the base autosuggestions config, with 2 additional fields:\n// 1. contextCategories: string[] | undefined;\n// 2. instead of apiConfigs, we have chatApiConfigs: a higher-level abstraction that uses a ChatGPT-like API endpoint.\nexport interface AutosuggestionsConfig extends Omit<BaseAutosuggestionsConfig, \"apiConfig\"> {\n contextCategories: string[];\n chatApiConfigs: {\n suggestionsApiConfig: SuggestionsApiConfig;\n insertionApiConfig: InsertionsApiConfig;\n editingApiConfig: EditingApiConfig;\n };\n}\n\nexport const defaultAutosuggestionsConfig: Omit<\n AutosuggestionsConfig,\n \"textareaPurpose\" | \"apiEndpoint\"\n> = {\n ...defaultBaseAutosuggestionsConfig,\n contextCategories: defaultCopilotContextCategories,\n chatApiConfigs: {\n suggestionsApiConfig: defaultSuggestionsApiConfig,\n insertionApiConfig: defaultInsertionsApiConfig,\n editingApiConfig: defaultEditingApiConfig,\n },\n};\n"]}