@copilotkit/react-textarea 1.8.13 → 1.8.14-next.1
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.
- package/CHANGELOG.md +19 -0
- package/dist/{chunk-MGYT7RNL.mjs → chunk-4ECCCOFV.mjs} +2 -2
- package/dist/{chunk-4XXU5BSA.mjs → chunk-B7WYSFPJ.mjs} +18 -23
- package/dist/chunk-B7WYSFPJ.mjs.map +1 -0
- package/dist/{chunk-4CVSOOJY.mjs → chunk-F6RLSVG3.mjs} +5 -5
- package/dist/chunk-F6RLSVG3.mjs.map +1 -0
- package/dist/{chunk-PZYM7K4Y.mjs → chunk-FQHMDD6N.mjs} +15 -11
- package/dist/chunk-FQHMDD6N.mjs.map +1 -0
- package/dist/{chunk-BNBGJBBM.mjs → chunk-KNH7OQAM.mjs} +5 -5
- package/dist/{chunk-2VMZ5ZWT.mjs → chunk-YHMWPA3C.mjs} +1 -4
- package/dist/chunk-YHMWPA3C.mjs.map +1 -0
- package/dist/{chunk-ABYCGF77.mjs → chunk-YNYXWS2H.mjs} +2 -2
- package/dist/chunk-YNYXWS2H.mjs.map +1 -0
- package/dist/components/base-copilot-textarea/base-copilot-textarea.js +219 -223
- package/dist/components/base-copilot-textarea/base-copilot-textarea.js.map +1 -1
- package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +8 -8
- package/dist/components/copilot-textarea/copilot-textarea.js +221 -225
- package/dist/components/copilot-textarea/copilot-textarea.js.map +1 -1
- package/dist/components/copilot-textarea/copilot-textarea.mjs +15 -15
- package/dist/components/hovering-toolbar/hovering-toolbar.js +281 -289
- package/dist/components/hovering-toolbar/hovering-toolbar.js.map +1 -1
- package/dist/components/hovering-toolbar/hovering-toolbar.mjs +4 -4
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js +0 -3
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js.map +1 -1
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs +1 -1
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.d.ts +0 -1
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js +0 -3
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js.map +1 -1
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs +2 -2
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js +0 -3
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js.map +1 -1
- package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs +2 -2
- package/dist/components/index.js +223 -227
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +15 -15
- package/dist/index.js +223 -227
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -21
- package/dist/types/autosuggestions-config/autosuggestions-config.js +4 -4
- package/dist/types/autosuggestions-config/autosuggestions-config.js.map +1 -1
- package/dist/types/autosuggestions-config/autosuggestions-config.mjs +2 -2
- package/dist/types/autosuggestions-config/index.js +4 -4
- package/dist/types/autosuggestions-config/index.js.map +1 -1
- package/dist/types/autosuggestions-config/index.mjs +2 -2
- package/dist/types/base/base-autosuggestions-config.d.ts +4 -0
- package/dist/types/base/base-autosuggestions-config.js +4 -4
- package/dist/types/base/base-autosuggestions-config.js.map +1 -1
- package/dist/types/base/base-autosuggestions-config.mjs +1 -1
- package/dist/types/base/index.js +4 -4
- package/dist/types/base/index.js.map +1 -1
- package/dist/types/base/index.mjs +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/index.js.map +1 -1
- package/dist/types/index.mjs +3 -3
- package/package.json +4 -4
- package/src/components/base-copilot-textarea/base-copilot-textarea.tsx +7 -1
- package/src/components/hovering-toolbar/hovering-toolbar.tsx +43 -40
- package/src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx +0 -3
- package/src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx +0 -1
- package/src/types/base/base-autosuggestions-config.tsx +9 -4
- package/dist/chunk-2VMZ5ZWT.mjs.map +0 -1
- package/dist/chunk-4CVSOOJY.mjs.map +0 -1
- package/dist/chunk-4XXU5BSA.mjs.map +0 -1
- package/dist/chunk-ABYCGF77.mjs.map +0 -1
- package/dist/chunk-PZYM7K4Y.mjs.map +0 -1
- /package/dist/{chunk-MGYT7RNL.mjs.map → chunk-4ECCCOFV.mjs.map} +0 -0
- /package/dist/{chunk-BNBGJBBM.mjs.map → chunk-KNH7OQAM.mjs.map} +0 -0
|
@@ -629,11 +629,10 @@ function clearAutocompletionsFromEditor(editor) {
|
|
|
629
629
|
|
|
630
630
|
// src/types/base/base-autosuggestions-config.tsx
|
|
631
631
|
var import_react_core = require("@copilotkit/react-core");
|
|
632
|
+
var import_shared = require("@copilotkit/shared");
|
|
632
633
|
var defaultShouldToggleHoveringEditorOnKeyPress = (event, shortcut) => {
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
}
|
|
636
|
-
return false;
|
|
634
|
+
const isMetaKey = (0, import_shared.isMacOS)() ? event.metaKey : event.ctrlKey;
|
|
635
|
+
return event.key === shortcut && isMetaKey;
|
|
637
636
|
};
|
|
638
637
|
var defaultShouldAcceptAutosuggestionOnKeyPress = (event) => {
|
|
639
638
|
if (event.key === "Tab") {
|
|
@@ -648,6 +647,7 @@ var defaultBaseAutosuggestionsConfig = {
|
|
|
648
647
|
disableWhenEmpty: true,
|
|
649
648
|
disabled: false,
|
|
650
649
|
temporarilyDisableWhenMovingCursorWithoutChangingText: true,
|
|
650
|
+
temporarilyDisableNotTrustedEvents: true,
|
|
651
651
|
shouldToggleHoveringEditorOnKeyPress: defaultShouldToggleHoveringEditorOnKeyPress,
|
|
652
652
|
shouldAcceptAutosuggestionOnKeyPress: defaultShouldAcceptAutosuggestionOnKeyPress,
|
|
653
653
|
shouldAcceptAutosuggestionOnTouch: defaultShouldAcceptAutosuggestionOnTouch
|
|
@@ -658,10 +658,123 @@ var import_react9 = require("react");
|
|
|
658
658
|
var import_slate7 = require("slate");
|
|
659
659
|
var import_slate_react3 = require("slate-react");
|
|
660
660
|
|
|
661
|
-
// src/
|
|
661
|
+
// src/components/hovering-toolbar/hovering-editor-provider.tsx
|
|
662
662
|
var import_react4 = require("react");
|
|
663
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
664
|
+
var HoveringEditorContext = (0, import_react4.createContext)({
|
|
665
|
+
isDisplayed: false,
|
|
666
|
+
setIsDisplayed: () => {
|
|
667
|
+
}
|
|
668
|
+
});
|
|
669
|
+
var HoveringEditorProvider = ({ children }) => {
|
|
670
|
+
const [isDisplayed, setIsDisplayed] = (0, import_react4.useState)(false);
|
|
671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HoveringEditorContext.Provider, { value: { isDisplayed, setIsDisplayed }, children });
|
|
672
|
+
};
|
|
673
|
+
var useHoveringEditorContext = () => (0, import_react4.useContext)(HoveringEditorContext);
|
|
674
|
+
|
|
675
|
+
// src/components/hovering-toolbar/hovering-toolbar-components.tsx
|
|
676
|
+
var import_css = require("@emotion/css");
|
|
677
|
+
var import_react5 = __toESM(require("react"));
|
|
678
|
+
var import_react_dom = __toESM(require("react-dom"));
|
|
679
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
680
|
+
var Button = import_react5.default.forwardRef(
|
|
681
|
+
(_a, ref) => {
|
|
682
|
+
var _b = _a, {
|
|
683
|
+
className,
|
|
684
|
+
active,
|
|
685
|
+
reversed
|
|
686
|
+
} = _b, props = __objRest(_b, [
|
|
687
|
+
"className",
|
|
688
|
+
"active",
|
|
689
|
+
"reversed"
|
|
690
|
+
]);
|
|
691
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
692
|
+
"span",
|
|
693
|
+
__spreadProps(__spreadValues({}, props), {
|
|
694
|
+
ref,
|
|
695
|
+
className: (0, import_css.cx)(
|
|
696
|
+
className,
|
|
697
|
+
import_css.css`
|
|
698
|
+
cursor: pointer;
|
|
699
|
+
color: ${reversed ? active ? "white" : "#aaa" : active ? "black" : "#ccc"};
|
|
700
|
+
`
|
|
701
|
+
)
|
|
702
|
+
})
|
|
703
|
+
);
|
|
704
|
+
}
|
|
705
|
+
);
|
|
706
|
+
var Icon = import_react5.default.forwardRef(
|
|
707
|
+
(_a, ref) => {
|
|
708
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
709
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
710
|
+
"span",
|
|
711
|
+
__spreadProps(__spreadValues({}, props), {
|
|
712
|
+
ref,
|
|
713
|
+
className: (0, import_css.cx)(
|
|
714
|
+
"material-icons",
|
|
715
|
+
className,
|
|
716
|
+
import_css.css`
|
|
717
|
+
font-size: 18px;
|
|
718
|
+
vertical-align: text-bottom;
|
|
719
|
+
`
|
|
720
|
+
)
|
|
721
|
+
})
|
|
722
|
+
);
|
|
723
|
+
}
|
|
724
|
+
);
|
|
725
|
+
var Menu = import_react5.default.forwardRef(
|
|
726
|
+
(_a, ref) => {
|
|
727
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
729
|
+
"div",
|
|
730
|
+
__spreadProps(__spreadValues({}, props), {
|
|
731
|
+
"data-testid": "menu",
|
|
732
|
+
ref,
|
|
733
|
+
className: (0, import_css.cx)(
|
|
734
|
+
className,
|
|
735
|
+
import_css.css`
|
|
736
|
+
& > * {
|
|
737
|
+
display: inline-block;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
& > * + * {
|
|
741
|
+
margin-left: 15px;
|
|
742
|
+
}
|
|
743
|
+
`
|
|
744
|
+
)
|
|
745
|
+
})
|
|
746
|
+
);
|
|
747
|
+
}
|
|
748
|
+
);
|
|
749
|
+
var Portal = ({ children }) => {
|
|
750
|
+
return typeof document === "object" ? import_react_dom.default.createPortal(children, document.body) : null;
|
|
751
|
+
};
|
|
752
|
+
var Toolbar = import_react5.default.forwardRef(
|
|
753
|
+
(_a, ref) => {
|
|
754
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
755
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
756
|
+
Menu,
|
|
757
|
+
__spreadProps(__spreadValues({}, props), {
|
|
758
|
+
ref,
|
|
759
|
+
className: (0, import_css.cx)(
|
|
760
|
+
className,
|
|
761
|
+
import_css.css`
|
|
762
|
+
position: relative;
|
|
763
|
+
padding: 1px 18px 17px;
|
|
764
|
+
margin: 0 -20px;
|
|
765
|
+
border-bottom: 2px solid #eee;
|
|
766
|
+
margin-bottom: 20px;
|
|
767
|
+
`
|
|
768
|
+
)
|
|
769
|
+
})
|
|
770
|
+
);
|
|
771
|
+
}
|
|
772
|
+
);
|
|
773
|
+
|
|
774
|
+
// src/hooks/misc/use-autosize-textarea.tsx
|
|
775
|
+
var import_react6 = require("react");
|
|
663
776
|
var useAutosizeTextArea = (textAreaRef, value) => {
|
|
664
|
-
(0,
|
|
777
|
+
(0, import_react6.useEffect)(() => {
|
|
665
778
|
if (textAreaRef.current !== null) {
|
|
666
779
|
textAreaRef.current.style.height = "0px";
|
|
667
780
|
const scrollHeight = textAreaRef.current.scrollHeight;
|
|
@@ -672,15 +785,15 @@ var useAutosizeTextArea = (textAreaRef, value) => {
|
|
|
672
785
|
var use_autosize_textarea_default = useAutosizeTextArea;
|
|
673
786
|
|
|
674
787
|
// src/components/source-search-box/source-search-box.tsx
|
|
675
|
-
var
|
|
788
|
+
var import_react7 = require("react");
|
|
676
789
|
|
|
677
790
|
// src/components/ui/command.tsx
|
|
678
|
-
var
|
|
791
|
+
var React3 = __toESM(require("react"));
|
|
679
792
|
var import_cmdk = require("cmdk");
|
|
680
|
-
var
|
|
681
|
-
var Command =
|
|
793
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
794
|
+
var Command = React3.forwardRef((_a, ref) => {
|
|
682
795
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
683
|
-
return /* @__PURE__ */ (0,
|
|
796
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
684
797
|
import_cmdk.Command,
|
|
685
798
|
__spreadValues({
|
|
686
799
|
ref,
|
|
@@ -692,9 +805,9 @@ var Command = React2.forwardRef((_a, ref) => {
|
|
|
692
805
|
);
|
|
693
806
|
});
|
|
694
807
|
Command.displayName = import_cmdk.Command.displayName;
|
|
695
|
-
var CommandInput =
|
|
808
|
+
var CommandInput = React3.forwardRef((_a, ref) => {
|
|
696
809
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
697
|
-
return /* @__PURE__ */ (0,
|
|
810
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
698
811
|
import_cmdk.Command.Input,
|
|
699
812
|
__spreadValues({
|
|
700
813
|
ref,
|
|
@@ -706,9 +819,9 @@ var CommandInput = React2.forwardRef((_a, ref) => {
|
|
|
706
819
|
) });
|
|
707
820
|
});
|
|
708
821
|
CommandInput.displayName = import_cmdk.Command.Input.displayName;
|
|
709
|
-
var CommandList =
|
|
822
|
+
var CommandList = React3.forwardRef((_a, ref) => {
|
|
710
823
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
711
|
-
return /* @__PURE__ */ (0,
|
|
824
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
712
825
|
import_cmdk.Command.List,
|
|
713
826
|
__spreadValues({
|
|
714
827
|
ref,
|
|
@@ -717,11 +830,11 @@ var CommandList = React2.forwardRef((_a, ref) => {
|
|
|
717
830
|
);
|
|
718
831
|
});
|
|
719
832
|
CommandList.displayName = import_cmdk.Command.List.displayName;
|
|
720
|
-
var CommandEmpty =
|
|
833
|
+
var CommandEmpty = React3.forwardRef((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_cmdk.Command.Empty, __spreadValues({ ref, className: "py-6 text-center text-sm" }, props)));
|
|
721
834
|
CommandEmpty.displayName = import_cmdk.Command.Empty.displayName;
|
|
722
|
-
var CommandGroup =
|
|
835
|
+
var CommandGroup = React3.forwardRef((_a, ref) => {
|
|
723
836
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
724
|
-
return /* @__PURE__ */ (0,
|
|
837
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
725
838
|
import_cmdk.Command.Group,
|
|
726
839
|
__spreadValues({
|
|
727
840
|
ref,
|
|
@@ -733,9 +846,9 @@ var CommandGroup = React2.forwardRef((_a, ref) => {
|
|
|
733
846
|
);
|
|
734
847
|
});
|
|
735
848
|
CommandGroup.displayName = import_cmdk.Command.Group.displayName;
|
|
736
|
-
var CommandSeparator =
|
|
849
|
+
var CommandSeparator = React3.forwardRef((_a, ref) => {
|
|
737
850
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
738
|
-
return /* @__PURE__ */ (0,
|
|
851
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
739
852
|
import_cmdk.Command.Separator,
|
|
740
853
|
__spreadValues({
|
|
741
854
|
ref,
|
|
@@ -744,9 +857,9 @@ var CommandSeparator = React2.forwardRef((_a, ref) => {
|
|
|
744
857
|
);
|
|
745
858
|
});
|
|
746
859
|
CommandSeparator.displayName = import_cmdk.Command.Separator.displayName;
|
|
747
|
-
var CommandItem =
|
|
860
|
+
var CommandItem = React3.forwardRef((_a, ref) => {
|
|
748
861
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
749
|
-
return /* @__PURE__ */ (0,
|
|
862
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
750
863
|
import_cmdk.Command.Item,
|
|
751
864
|
__spreadValues({
|
|
752
865
|
ref,
|
|
@@ -760,7 +873,7 @@ var CommandItem = React2.forwardRef((_a, ref) => {
|
|
|
760
873
|
CommandItem.displayName = import_cmdk.Command.Item.displayName;
|
|
761
874
|
var CommandShortcut = (_a) => {
|
|
762
875
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
763
|
-
return /* @__PURE__ */ (0,
|
|
876
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
764
877
|
"span",
|
|
765
878
|
__spreadValues({
|
|
766
879
|
className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className)
|
|
@@ -770,10 +883,10 @@ var CommandShortcut = (_a) => {
|
|
|
770
883
|
CommandShortcut.displayName = "CommandShortcut";
|
|
771
884
|
|
|
772
885
|
// src/components/source-search-box/source-search-box.tsx
|
|
773
|
-
var
|
|
886
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
774
887
|
function SourceSearchBox(props) {
|
|
775
|
-
const [selectedValue, setSelectedValue] = (0,
|
|
776
|
-
return /* @__PURE__ */ (0,
|
|
888
|
+
const [selectedValue, setSelectedValue] = (0, import_react7.useState)("");
|
|
889
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
777
890
|
Command,
|
|
778
891
|
{
|
|
779
892
|
className: "rounded-lg border shadow-md",
|
|
@@ -789,7 +902,7 @@ function SourceSearchBox(props) {
|
|
|
789
902
|
return 0;
|
|
790
903
|
},
|
|
791
904
|
children: [
|
|
792
|
-
/* @__PURE__ */ (0,
|
|
905
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
793
906
|
CommandInput,
|
|
794
907
|
{
|
|
795
908
|
value: props.searchTerm,
|
|
@@ -797,18 +910,18 @@ function SourceSearchBox(props) {
|
|
|
797
910
|
placeholder: "Search for a command..."
|
|
798
911
|
}
|
|
799
912
|
),
|
|
800
|
-
/* @__PURE__ */ (0,
|
|
801
|
-
/* @__PURE__ */ (0,
|
|
802
|
-
/* @__PURE__ */ (0,
|
|
803
|
-
return /* @__PURE__ */ (0,
|
|
913
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(CommandList, { children: [
|
|
914
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CommandEmpty, { children: "No results found." }),
|
|
915
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CommandGroup, { heading: "Available resources", children: props.suggestedFiles.map((filePointer) => {
|
|
916
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
804
917
|
CommandItem,
|
|
805
918
|
{
|
|
806
919
|
value: filePointer.name,
|
|
807
920
|
onSelect: (value) => {
|
|
808
921
|
props.onSelectedFile(filePointer);
|
|
809
922
|
},
|
|
810
|
-
children: /* @__PURE__ */ (0,
|
|
811
|
-
/* @__PURE__ */ (0,
|
|
923
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: " px-3 flex flex-row gap-1 items-center", children: [
|
|
924
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Logo, { width: "20px", height: "20px", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
812
925
|
"img",
|
|
813
926
|
{
|
|
814
927
|
src: filePointer.iconImageUri,
|
|
@@ -822,7 +935,7 @@ function SourceSearchBox(props) {
|
|
|
822
935
|
`word-${filePointer.sourceApplication}.${filePointer.name}`
|
|
823
936
|
);
|
|
824
937
|
}) }),
|
|
825
|
-
/* @__PURE__ */ (0,
|
|
938
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CommandSeparator, {})
|
|
826
939
|
] })
|
|
827
940
|
]
|
|
828
941
|
}
|
|
@@ -833,17 +946,17 @@ function Logo({
|
|
|
833
946
|
width,
|
|
834
947
|
height
|
|
835
948
|
}) {
|
|
836
|
-
return /* @__PURE__ */ (0,
|
|
949
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "flex items-center justify-center", style: { width, height }, children });
|
|
837
950
|
}
|
|
838
951
|
|
|
839
952
|
// src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx
|
|
840
953
|
var import_react_core2 = require("@copilotkit/react-core");
|
|
841
954
|
|
|
842
955
|
// src/components/ui/button.tsx
|
|
843
|
-
var
|
|
956
|
+
var React4 = __toESM(require("react"));
|
|
844
957
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
845
958
|
var import_class_variance_authority = require("class-variance-authority");
|
|
846
|
-
var
|
|
959
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
847
960
|
var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
848
961
|
"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
849
962
|
{
|
|
@@ -869,31 +982,31 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
|
869
982
|
}
|
|
870
983
|
}
|
|
871
984
|
);
|
|
872
|
-
var
|
|
985
|
+
var Button2 = React4.forwardRef(
|
|
873
986
|
(_a, ref) => {
|
|
874
987
|
var _b = _a, { className, variant, size, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "size", "asChild"]);
|
|
875
988
|
const Comp = asChild ? import_react_slot.Slot : "button";
|
|
876
|
-
return /* @__PURE__ */ (0,
|
|
989
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Comp, __spreadValues({ className: cn(buttonVariants({ variant, size, className })), ref }, props));
|
|
877
990
|
}
|
|
878
991
|
);
|
|
879
|
-
|
|
992
|
+
Button2.displayName = "Button";
|
|
880
993
|
|
|
881
994
|
// src/components/ui/label.tsx
|
|
882
|
-
var
|
|
995
|
+
var React5 = __toESM(require("react"));
|
|
883
996
|
var LabelPrimitive = __toESM(require("@radix-ui/react-label"));
|
|
884
997
|
var import_class_variance_authority2 = require("class-variance-authority");
|
|
885
|
-
var
|
|
998
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
886
999
|
var labelVariants = (0, import_class_variance_authority2.cva)(
|
|
887
1000
|
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
888
1001
|
);
|
|
889
|
-
var Label =
|
|
1002
|
+
var Label = React5.forwardRef((_a, ref) => {
|
|
890
1003
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
891
|
-
return /* @__PURE__ */ (0,
|
|
1004
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(LabelPrimitive.Root, __spreadValues({ ref, className: cn(labelVariants(), className) }, props));
|
|
892
1005
|
});
|
|
893
1006
|
Label.displayName = LabelPrimitive.Root.displayName;
|
|
894
1007
|
|
|
895
1008
|
// src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx
|
|
896
|
-
var
|
|
1009
|
+
var import_react8 = require("react");
|
|
897
1010
|
|
|
898
1011
|
// src/lib/stream-promise-flatten.ts
|
|
899
1012
|
function streamPromiseFlatten(promise) {
|
|
@@ -922,15 +1035,15 @@ function streamPromiseFlatten(promise) {
|
|
|
922
1035
|
// src/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.tsx
|
|
923
1036
|
var import_Chip = __toESM(require("@mui/material/Chip/Chip.js"));
|
|
924
1037
|
var import_Avatar = __toESM(require("@mui/material/Avatar/Avatar.js"));
|
|
925
|
-
var
|
|
1038
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
926
1039
|
var IncludedFilesPreview = ({
|
|
927
1040
|
includedFiles,
|
|
928
1041
|
setIncludedFiles
|
|
929
1042
|
}) => {
|
|
930
|
-
return /* @__PURE__ */ (0,
|
|
931
|
-
/* @__PURE__ */ (0,
|
|
932
|
-
/* @__PURE__ */ (0,
|
|
933
|
-
return /* @__PURE__ */ (0,
|
|
1043
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-2 mt-2", children: [
|
|
1044
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Label, { className: "", children: "Included context:" }),
|
|
1045
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap gap-2", children: includedFiles.map((filePointer, index) => {
|
|
1046
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
934
1047
|
FileChipPreview,
|
|
935
1048
|
{
|
|
936
1049
|
filePointer,
|
|
@@ -944,12 +1057,12 @@ var IncludedFilesPreview = ({
|
|
|
944
1057
|
] });
|
|
945
1058
|
};
|
|
946
1059
|
var FileChipPreview = ({ filePointer, onDelete }) => {
|
|
947
|
-
return /* @__PURE__ */ (0,
|
|
1060
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
948
1061
|
import_Chip.default,
|
|
949
1062
|
{
|
|
950
1063
|
label: filePointer.name,
|
|
951
1064
|
onDelete,
|
|
952
|
-
avatar: /* @__PURE__ */ (0,
|
|
1065
|
+
avatar: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
953
1066
|
import_Avatar.default,
|
|
954
1067
|
{
|
|
955
1068
|
src: filePointer.iconImageUri,
|
|
@@ -961,22 +1074,8 @@ var FileChipPreview = ({ filePointer, onDelete }) => {
|
|
|
961
1074
|
);
|
|
962
1075
|
};
|
|
963
1076
|
|
|
964
|
-
// src/components/hovering-toolbar/hovering-editor-provider.tsx
|
|
965
|
-
var import_react6 = require("react");
|
|
966
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
967
|
-
var HoveringEditorContext = (0, import_react6.createContext)({
|
|
968
|
-
isDisplayed: false,
|
|
969
|
-
setIsDisplayed: () => {
|
|
970
|
-
}
|
|
971
|
-
});
|
|
972
|
-
var HoveringEditorProvider = ({ children }) => {
|
|
973
|
-
const [isDisplayed, setIsDisplayed] = (0, import_react6.useState)(false);
|
|
974
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(HoveringEditorContext.Provider, { value: { isDisplayed, setIsDisplayed }, children });
|
|
975
|
-
};
|
|
976
|
-
var useHoveringEditorContext = () => (0, import_react6.useContext)(HoveringEditorContext);
|
|
977
|
-
|
|
978
1077
|
// src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx
|
|
979
|
-
var
|
|
1078
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
980
1079
|
var HoveringInsertionPromptBoxCore = ({
|
|
981
1080
|
performInsertion,
|
|
982
1081
|
state,
|
|
@@ -984,26 +1083,26 @@ var HoveringInsertionPromptBoxCore = ({
|
|
|
984
1083
|
contextCategories
|
|
985
1084
|
}) => {
|
|
986
1085
|
const { getDocumentsContext } = (0, import_react_core2.useCopilotContext)();
|
|
987
|
-
const [editSuggestion, setEditSuggestion] = (0,
|
|
988
|
-
const [suggestionIsLoading, setSuggestionIsLoading] = (0,
|
|
989
|
-
const [adjustmentPrompt, setAdjustmentPrompt] = (0,
|
|
990
|
-
const [generatingSuggestion, setGeneratingSuggestion] = (0,
|
|
1086
|
+
const [editSuggestion, setEditSuggestion] = (0, import_react8.useState)("");
|
|
1087
|
+
const [suggestionIsLoading, setSuggestionIsLoading] = (0, import_react8.useState)(false);
|
|
1088
|
+
const [adjustmentPrompt, setAdjustmentPrompt] = (0, import_react8.useState)("");
|
|
1089
|
+
const [generatingSuggestion, setGeneratingSuggestion] = (0, import_react8.useState)(
|
|
991
1090
|
null
|
|
992
1091
|
);
|
|
993
|
-
const adjustmentTextAreaRef = (0,
|
|
994
|
-
const suggestionTextAreaRef = (0,
|
|
995
|
-
const [filePointers, setFilePointers] = (0,
|
|
996
|
-
const [suggestedFiles, setSuggestedFiles] = (0,
|
|
997
|
-
(0,
|
|
1092
|
+
const adjustmentTextAreaRef = (0, import_react8.useRef)(null);
|
|
1093
|
+
const suggestionTextAreaRef = (0, import_react8.useRef)(null);
|
|
1094
|
+
const [filePointers, setFilePointers] = (0, import_react8.useState)([]);
|
|
1095
|
+
const [suggestedFiles, setSuggestedFiles] = (0, import_react8.useState)([]);
|
|
1096
|
+
(0, import_react8.useEffect)(() => {
|
|
998
1097
|
setSuggestedFiles(getDocumentsContext(contextCategories));
|
|
999
1098
|
}, [contextCategories, getDocumentsContext]);
|
|
1000
1099
|
use_autosize_textarea_default(suggestionTextAreaRef, editSuggestion || "");
|
|
1001
1100
|
use_autosize_textarea_default(adjustmentTextAreaRef, adjustmentPrompt || "");
|
|
1002
|
-
(0,
|
|
1101
|
+
(0, import_react8.useEffect)(() => {
|
|
1003
1102
|
var _a;
|
|
1004
1103
|
(_a = adjustmentTextAreaRef.current) == null ? void 0 : _a.focus();
|
|
1005
1104
|
}, []);
|
|
1006
|
-
(0,
|
|
1105
|
+
(0, import_react8.useEffect)(() => {
|
|
1007
1106
|
if (!generatingSuggestion) {
|
|
1008
1107
|
return;
|
|
1009
1108
|
}
|
|
@@ -1041,7 +1140,7 @@ var HoveringInsertionPromptBoxCore = ({
|
|
|
1041
1140
|
releaseLockIfNotClosed();
|
|
1042
1141
|
};
|
|
1043
1142
|
}, [generatingSuggestion]);
|
|
1044
|
-
const beginGeneratingAdjustment = (0,
|
|
1143
|
+
const beginGeneratingAdjustment = (0, import_react8.useCallback)(() => __async(void 0, null, function* () {
|
|
1045
1144
|
if (!adjustmentPrompt.trim()) {
|
|
1046
1145
|
return;
|
|
1047
1146
|
}
|
|
@@ -1071,10 +1170,10 @@ var HoveringInsertionPromptBoxCore = ({
|
|
|
1071
1170
|
const adjustmentLabel = textToEdit === "" ? "Describe the text you want to insert" : "Describe adjustments to the suggested text";
|
|
1072
1171
|
const placeholder = textToEdit === "" ? "e.g. 'summarize the client's top 3 pain-points from @CallTranscript'" : "e.g. 'make it more formal', 'be more specific', ...";
|
|
1073
1172
|
const { setIsDisplayed } = useHoveringEditorContext();
|
|
1074
|
-
const AdjustmentPromptComponent = /* @__PURE__ */ (0,
|
|
1075
|
-
/* @__PURE__ */ (0,
|
|
1076
|
-
/* @__PURE__ */ (0,
|
|
1077
|
-
/* @__PURE__ */ (0,
|
|
1173
|
+
const AdjustmentPromptComponent = /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
|
|
1174
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Label, { className: "", children: adjustmentLabel }),
|
|
1175
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "relative w-full flex items-center", children: [
|
|
1176
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1078
1177
|
"textarea",
|
|
1079
1178
|
{
|
|
1080
1179
|
"data-testid": "adjustment-prompt",
|
|
@@ -1089,9 +1188,6 @@ var HoveringInsertionPromptBoxCore = ({
|
|
|
1089
1188
|
} else if (e.key === "Enter") {
|
|
1090
1189
|
e.preventDefault();
|
|
1091
1190
|
beginGeneratingAdjustment();
|
|
1092
|
-
} else if (e.key == "Escape") {
|
|
1093
|
-
e.preventDefault();
|
|
1094
|
-
setIsDisplayed(false);
|
|
1095
1191
|
}
|
|
1096
1192
|
},
|
|
1097
1193
|
placeholder,
|
|
@@ -1100,30 +1196,30 @@ var HoveringInsertionPromptBoxCore = ({
|
|
|
1100
1196
|
rows: 1
|
|
1101
1197
|
}
|
|
1102
1198
|
),
|
|
1103
|
-
/* @__PURE__ */ (0,
|
|
1199
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1104
1200
|
"button",
|
|
1105
1201
|
{
|
|
1106
1202
|
onClick: beginGeneratingAdjustment,
|
|
1107
1203
|
className: "absolute right-2 bg-blue-500 text-white w-8 h-8 rounded-full flex items-center justify-center",
|
|
1108
1204
|
"data-testid": "generate-button",
|
|
1109
|
-
children: /* @__PURE__ */ (0,
|
|
1205
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("i", { className: "material-icons", children: "arrow_forward" })
|
|
1110
1206
|
}
|
|
1111
1207
|
)
|
|
1112
1208
|
] })
|
|
1113
1209
|
] });
|
|
1114
|
-
const SuggestionComponent = /* @__PURE__ */ (0,
|
|
1115
|
-
/* @__PURE__ */ (0,
|
|
1116
|
-
/* @__PURE__ */ (0,
|
|
1117
|
-
/* @__PURE__ */ (0,
|
|
1210
|
+
const SuggestionComponent = /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
|
|
1211
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex justify-between items-end w-full", children: [
|
|
1212
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Label, { className: "mt-4", children: "Suggested:" }),
|
|
1213
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "ml-auto", children: isLoading && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex justify-center items-center", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1118
1214
|
"div",
|
|
1119
1215
|
{
|
|
1120
1216
|
className: "inline-block h-4 w-4 animate-spin rounded-full border-4 border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite]",
|
|
1121
1217
|
role: "status",
|
|
1122
|
-
children: /* @__PURE__ */ (0,
|
|
1218
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]", children: "Loading..." })
|
|
1123
1219
|
}
|
|
1124
1220
|
) }) })
|
|
1125
1221
|
] }),
|
|
1126
|
-
/* @__PURE__ */ (0,
|
|
1222
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1127
1223
|
"textarea",
|
|
1128
1224
|
{
|
|
1129
1225
|
"data-testid": "suggestion-result",
|
|
@@ -1136,8 +1232,8 @@ var HoveringInsertionPromptBoxCore = ({
|
|
|
1136
1232
|
}
|
|
1137
1233
|
)
|
|
1138
1234
|
] });
|
|
1139
|
-
const SubmitComponent = /* @__PURE__ */ (0,
|
|
1140
|
-
|
|
1235
|
+
const SubmitComponent = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex w-full gap-4 justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1236
|
+
Button2,
|
|
1141
1237
|
{
|
|
1142
1238
|
"data-testid": "insert-button",
|
|
1143
1239
|
className: " bg-green-700 text-white",
|
|
@@ -1146,16 +1242,16 @@ var HoveringInsertionPromptBoxCore = ({
|
|
|
1146
1242
|
},
|
|
1147
1243
|
children: [
|
|
1148
1244
|
"Insert ",
|
|
1149
|
-
/* @__PURE__ */ (0,
|
|
1245
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("i", { className: "material-icons", children: "check" })
|
|
1150
1246
|
]
|
|
1151
1247
|
}
|
|
1152
1248
|
) });
|
|
1153
1249
|
const sourceSearchCandidate = adjustmentPrompt.split(" ").pop();
|
|
1154
1250
|
const sourceSearchWord = (sourceSearchCandidate == null ? void 0 : sourceSearchCandidate.startsWith("@")) ? sourceSearchCandidate.slice(1) : void 0;
|
|
1155
|
-
return /* @__PURE__ */ (0,
|
|
1251
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "w-full flex flex-col items-start relative gap-2", children: [
|
|
1156
1252
|
AdjustmentPromptComponent,
|
|
1157
|
-
filePointers.length > 0 && /* @__PURE__ */ (0,
|
|
1158
|
-
sourceSearchWord !== void 0 && /* @__PURE__ */ (0,
|
|
1253
|
+
filePointers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IncludedFilesPreview, { includedFiles: filePointers, setIncludedFiles: setFilePointers }),
|
|
1254
|
+
sourceSearchWord !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1159
1255
|
SourceSearchBox,
|
|
1160
1256
|
{
|
|
1161
1257
|
searchTerm: sourceSearchWord,
|
|
@@ -1174,14 +1270,14 @@ var HoveringInsertionPromptBoxCore = ({
|
|
|
1174
1270
|
};
|
|
1175
1271
|
|
|
1176
1272
|
// src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.tsx
|
|
1177
|
-
var
|
|
1273
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1178
1274
|
var HoveringInsertionPromptBox = (props) => {
|
|
1179
|
-
return /* @__PURE__ */ (0,
|
|
1275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1180
1276
|
"div",
|
|
1181
1277
|
{
|
|
1182
1278
|
className: "flex flex-col justify-center items-center space-y-4 rounded-md border shadow-lg p-4 border-gray- bg-white",
|
|
1183
1279
|
style: { width: "35rem" },
|
|
1184
|
-
children: /* @__PURE__ */ (0,
|
|
1280
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1185
1281
|
HoveringInsertionPromptBoxCore,
|
|
1186
1282
|
{
|
|
1187
1283
|
state: {
|
|
@@ -1196,105 +1292,6 @@ var HoveringInsertionPromptBox = (props) => {
|
|
|
1196
1292
|
);
|
|
1197
1293
|
};
|
|
1198
1294
|
|
|
1199
|
-
// src/components/hovering-toolbar/hovering-toolbar-components.tsx
|
|
1200
|
-
var import_css = require("@emotion/css");
|
|
1201
|
-
var import_react8 = __toESM(require("react"));
|
|
1202
|
-
var import_react_dom = __toESM(require("react-dom"));
|
|
1203
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1204
|
-
var Button2 = import_react8.default.forwardRef(
|
|
1205
|
-
(_a, ref) => {
|
|
1206
|
-
var _b = _a, {
|
|
1207
|
-
className,
|
|
1208
|
-
active,
|
|
1209
|
-
reversed
|
|
1210
|
-
} = _b, props = __objRest(_b, [
|
|
1211
|
-
"className",
|
|
1212
|
-
"active",
|
|
1213
|
-
"reversed"
|
|
1214
|
-
]);
|
|
1215
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1216
|
-
"span",
|
|
1217
|
-
__spreadProps(__spreadValues({}, props), {
|
|
1218
|
-
ref,
|
|
1219
|
-
className: (0, import_css.cx)(
|
|
1220
|
-
className,
|
|
1221
|
-
import_css.css`
|
|
1222
|
-
cursor: pointer;
|
|
1223
|
-
color: ${reversed ? active ? "white" : "#aaa" : active ? "black" : "#ccc"};
|
|
1224
|
-
`
|
|
1225
|
-
)
|
|
1226
|
-
})
|
|
1227
|
-
);
|
|
1228
|
-
}
|
|
1229
|
-
);
|
|
1230
|
-
var Icon = import_react8.default.forwardRef(
|
|
1231
|
-
(_a, ref) => {
|
|
1232
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1233
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1234
|
-
"span",
|
|
1235
|
-
__spreadProps(__spreadValues({}, props), {
|
|
1236
|
-
ref,
|
|
1237
|
-
className: (0, import_css.cx)(
|
|
1238
|
-
"material-icons",
|
|
1239
|
-
className,
|
|
1240
|
-
import_css.css`
|
|
1241
|
-
font-size: 18px;
|
|
1242
|
-
vertical-align: text-bottom;
|
|
1243
|
-
`
|
|
1244
|
-
)
|
|
1245
|
-
})
|
|
1246
|
-
);
|
|
1247
|
-
}
|
|
1248
|
-
);
|
|
1249
|
-
var Menu = import_react8.default.forwardRef(
|
|
1250
|
-
(_a, ref) => {
|
|
1251
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1252
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1253
|
-
"div",
|
|
1254
|
-
__spreadProps(__spreadValues({}, props), {
|
|
1255
|
-
"data-testid": "menu",
|
|
1256
|
-
ref,
|
|
1257
|
-
className: (0, import_css.cx)(
|
|
1258
|
-
className,
|
|
1259
|
-
import_css.css`
|
|
1260
|
-
& > * {
|
|
1261
|
-
display: inline-block;
|
|
1262
|
-
}
|
|
1263
|
-
|
|
1264
|
-
& > * + * {
|
|
1265
|
-
margin-left: 15px;
|
|
1266
|
-
}
|
|
1267
|
-
`
|
|
1268
|
-
)
|
|
1269
|
-
})
|
|
1270
|
-
);
|
|
1271
|
-
}
|
|
1272
|
-
);
|
|
1273
|
-
var Portal = ({ children }) => {
|
|
1274
|
-
return typeof document === "object" ? import_react_dom.default.createPortal(children, document.body) : null;
|
|
1275
|
-
};
|
|
1276
|
-
var Toolbar = import_react8.default.forwardRef(
|
|
1277
|
-
(_a, ref) => {
|
|
1278
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1279
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1280
|
-
Menu,
|
|
1281
|
-
__spreadProps(__spreadValues({}, props), {
|
|
1282
|
-
ref,
|
|
1283
|
-
className: (0, import_css.cx)(
|
|
1284
|
-
className,
|
|
1285
|
-
import_css.css`
|
|
1286
|
-
position: relative;
|
|
1287
|
-
padding: 1px 18px 17px;
|
|
1288
|
-
margin: 0 -20px;
|
|
1289
|
-
border-bottom: 2px solid #eee;
|
|
1290
|
-
margin-bottom: 20px;
|
|
1291
|
-
`
|
|
1292
|
-
)
|
|
1293
|
-
})
|
|
1294
|
-
);
|
|
1295
|
-
}
|
|
1296
|
-
);
|
|
1297
|
-
|
|
1298
1295
|
// src/components/hovering-toolbar/hovering-toolbar.tsx
|
|
1299
1296
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1300
1297
|
var HoveringToolbar = (props) => {
|
|
@@ -1306,10 +1303,11 @@ var HoveringToolbar = (props) => {
|
|
|
1306
1303
|
(0, import_react9.useEffect)(() => {
|
|
1307
1304
|
setIsClient(true);
|
|
1308
1305
|
}, []);
|
|
1309
|
-
|
|
1306
|
+
const isShown = isClient && isDisplayed && selection;
|
|
1307
|
+
(0, import_react9.useLayoutEffect)(() => {
|
|
1310
1308
|
const el = ref.current;
|
|
1311
1309
|
const { selection: selection2 } = editor;
|
|
1312
|
-
if (!el) {
|
|
1310
|
+
if (!el || !isShown) {
|
|
1313
1311
|
return;
|
|
1314
1312
|
}
|
|
1315
1313
|
if (!selection2) {
|
|
@@ -1325,26 +1323,23 @@ var HoveringToolbar = (props) => {
|
|
|
1325
1323
|
if (rect.top === 0 && rect.left === 0 && rect.width === 0 && rect.height === 0) {
|
|
1326
1324
|
return;
|
|
1327
1325
|
}
|
|
1328
|
-
const
|
|
1329
|
-
const
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
top = rect.bottom + window.scrollY + minGapFromEdge;
|
|
1334
|
-
} else if (top + el.offsetHeight > window.innerHeight - minGapFromEdge) {
|
|
1335
|
-
top = rect.top + window.scrollY - el.offsetHeight - minGapFromEdge;
|
|
1326
|
+
const verticalOffsetFromCorner = 0;
|
|
1327
|
+
const horizontalOffsetFromCorner = 0;
|
|
1328
|
+
let top = rect.bottom + window.scrollY + verticalOffsetFromCorner;
|
|
1329
|
+
if (rect.bottom + el.offsetHeight > window.innerHeight - verticalOffsetFromCorner) {
|
|
1330
|
+
top = rect.top + window.scrollY - el.offsetHeight - verticalOffsetFromCorner;
|
|
1336
1331
|
}
|
|
1337
1332
|
let left = rect.left + window.scrollX - el.offsetWidth / 2 + rect.width / 2 + horizontalOffsetFromCorner;
|
|
1338
|
-
if (left <
|
|
1339
|
-
left =
|
|
1340
|
-
} else if (left + el.offsetWidth > window.innerWidth -
|
|
1341
|
-
left = window.innerWidth - el.offsetWidth -
|
|
1333
|
+
if (left < horizontalOffsetFromCorner) {
|
|
1334
|
+
left = horizontalOffsetFromCorner;
|
|
1335
|
+
} else if (left + el.offsetWidth > window.innerWidth - horizontalOffsetFromCorner) {
|
|
1336
|
+
left = window.innerWidth - el.offsetWidth - horizontalOffsetFromCorner;
|
|
1342
1337
|
}
|
|
1343
1338
|
el.style.opacity = "1";
|
|
1344
1339
|
el.style.position = "absolute";
|
|
1345
1340
|
el.style.top = `${top}px`;
|
|
1346
1341
|
el.style.left = `${left}px`;
|
|
1347
|
-
});
|
|
1342
|
+
}, [isShown]);
|
|
1348
1343
|
(0, import_react9.useEffect)(() => {
|
|
1349
1344
|
const handleClickOutside = (event) => {
|
|
1350
1345
|
if (ref.current && !ref.current.contains(event.target)) {
|
|
@@ -1356,7 +1351,7 @@ var HoveringToolbar = (props) => {
|
|
|
1356
1351
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
1357
1352
|
};
|
|
1358
1353
|
}, [ref, setIsDisplayed]);
|
|
1359
|
-
if (!
|
|
1354
|
+
if (!isShown) {
|
|
1360
1355
|
return null;
|
|
1361
1356
|
}
|
|
1362
1357
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
@@ -1365,14 +1360,11 @@ var HoveringToolbar = (props) => {
|
|
|
1365
1360
|
ref,
|
|
1366
1361
|
className: "copilot-kit-textarea-css-scope " + (props.hoverMenuClassname || "p-2 absolute z-10 top-[-10000px] left-[-10000px] mt-[-6px] opacity-0 transition-opacity duration-700"),
|
|
1367
1362
|
"data-testid": "hovering-toolbar",
|
|
1368
|
-
children:
|
|
1363
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1369
1364
|
HoveringInsertionPromptBox,
|
|
1370
1365
|
{
|
|
1371
1366
|
editorState: editorState(editor, selection),
|
|
1372
1367
|
apiConfig: props.apiConfig,
|
|
1373
|
-
closeWindow: () => {
|
|
1374
|
-
setIsDisplayed(false);
|
|
1375
|
-
},
|
|
1376
1368
|
performInsertion: (insertedText) => {
|
|
1377
1369
|
import_slate7.Transforms.delete(editor, { at: selection });
|
|
1378
1370
|
import_slate7.Transforms.insertText(editor, insertedText, {
|
|
@@ -1598,6 +1590,7 @@ var BaseCopilotTextareaWithHoveringContext = import_react12.default.forwardRef(
|
|
|
1598
1590
|
}, []);
|
|
1599
1591
|
const [lastKnownFullEditorText, setLastKnownFullEditorText] = (0, import_react12.useState)(valueOnInitialRender);
|
|
1600
1592
|
const [cursorMovedSinceLastTextChange, setCursorMovedSinceLastTextChange] = (0, import_react12.useState)(false);
|
|
1593
|
+
const [isUserInputActive, setIsUserInputActive] = (0, import_react12.useState)(false);
|
|
1601
1594
|
const initialValue = (0, import_react12.useMemo)(() => {
|
|
1602
1595
|
return [
|
|
1603
1596
|
{
|
|
@@ -1620,7 +1613,8 @@ var BaseCopilotTextareaWithHoveringContext = import_react12.default.forwardRef(
|
|
|
1620
1613
|
// textarea is manually disabled:
|
|
1621
1614
|
autosuggestionsConfig.disabled || // hovering editor is displayed:
|
|
1622
1615
|
hoveringEditorIsDisplayed || // the cursor has moved since the last text change AND we are configured to disable autosuggestions in this case:
|
|
1623
|
-
cursorMovedSinceLastTextChange && autosuggestionsConfig.temporarilyDisableWhenMovingCursorWithoutChangingText
|
|
1616
|
+
cursorMovedSinceLastTextChange && autosuggestionsConfig.temporarilyDisableWhenMovingCursorWithoutChangingText || // not user input and we want to disable non-trusted events (like text insertion from autocomplete plugins):
|
|
1617
|
+
!isUserInputActive && autosuggestionsConfig.temporarilyDisableNotTrustedEvents
|
|
1624
1618
|
);
|
|
1625
1619
|
const {
|
|
1626
1620
|
currentAutocompleteSuggestion,
|
|
@@ -1755,6 +1749,7 @@ var BaseCopilotTextareaWithHoveringContext = import_react12.default.forwardRef(
|
|
|
1755
1749
|
renderPlaceholder: renderPlaceholderMemoized,
|
|
1756
1750
|
onKeyDown: (event) => {
|
|
1757
1751
|
var _a2;
|
|
1752
|
+
setIsUserInputActive(true);
|
|
1758
1753
|
onKeyDownHandlerForHoveringEditor(event);
|
|
1759
1754
|
onKeyDownHandlerForAutocomplete(event);
|
|
1760
1755
|
(_a2 = props.onKeyDown) == null ? void 0 : _a2.call(props, event);
|
|
@@ -1768,6 +1763,7 @@ var BaseCopilotTextareaWithHoveringContext = import_react12.default.forwardRef(
|
|
|
1768
1763
|
var _a2;
|
|
1769
1764
|
(_a2 = props.onBlur) == null ? void 0 : _a2.call(props, ev);
|
|
1770
1765
|
clearAutocompletionsFromEditor(editor);
|
|
1766
|
+
setIsUserInputActive(false);
|
|
1771
1767
|
}
|
|
1772
1768
|
}, propsToForward)
|
|
1773
1769
|
)
|