@bikdotai/bik-component-library 0.0.839-beta.7 → 0.0.840-beta.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.
- package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js +1 -1
- package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
- package/dist/cjs/components/SearchFilter/index.js +1 -1
- package/dist/cjs/components/SearchFilter/index.js.map +1 -1
- package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
- package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
- package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +51 -39
- package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js +1 -1
- package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js +1 -1
- package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js +2 -2
- package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/DiscardModal.js +1 -1
- package/dist/cjs/components/agent-builder/components/DiscardModal.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/GoLiveModal.js +1 -1
- package/dist/cjs/components/agent-builder/components/GoLiveModal.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/MentionEditor.js +1 -1
- package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/MentionPicker.js +22 -22
- package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js +4 -4
- package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/SelectableListSection.js +6 -6
- package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/StepSectionHeader.js +1 -1
- package/dist/cjs/components/agent-builder/components/StepSectionHeader.js.map +1 -1
- package/dist/cjs/components/agent-builder/constants/tools.js +1 -1
- package/dist/cjs/components/agent-builder/constants/tools.js.map +1 -1
- package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
- package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +3 -1
- package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
- package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +5 -3
- package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -1
- package/dist/cjs/components/agent-listing/AgentListing.js +1 -1
- package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -1
- package/dist/cjs/components/agent-listing/AgentTable.js +1 -1
- package/dist/cjs/components/agent-listing/AgentTable.js.map +1 -1
- package/dist/cjs/components/agent-listing/AgentTableRow.js +1 -1
- package/dist/cjs/components/agent-listing/AgentTableRow.js.map +1 -1
- package/dist/cjs/components/agent-listing/AgentTableShimmer.js +2 -0
- package/dist/cjs/components/agent-listing/AgentTableShimmer.js.map +1 -0
- package/dist/cjs/components/agent-listing/DeleteAgentModal.js +1 -1
- package/dist/cjs/components/agent-listing/DeleteAgentModal.js.map +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsChip.js +1 -1
- package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsChip.js.map +1 -1
- package/dist/cjs/components/button/Button.styled.js +1 -0
- package/dist/cjs/components/button/Button.styled.js.map +1 -1
- package/dist/cjs/components/button/themes.js +11 -11
- package/dist/cjs/components/button/themes.js.map +1 -1
- package/dist/cjs/components/dashboard-review-popup/DashboardReviewPopUp.js +1 -1
- package/dist/cjs/components/dashboard-review-popup/DashboardReviewPopUp.js.map +1 -1
- package/dist/cjs/components/dropdown/Dropdown.js +1 -1
- package/dist/cjs/components/dropdown/Dropdown.js.map +1 -1
- package/dist/cjs/components/dropdown-button/DropdownButton.js +1 -1
- package/dist/cjs/components/dropdown-button/DropdownButton.js.map +1 -1
- package/dist/cjs/components/input/Input.js +1 -1
- package/dist/cjs/components/input/Input.js.map +1 -1
- package/dist/cjs/components/multi-level-dropdown/MenuItem.js +1 -1
- package/dist/cjs/components/multi-level-dropdown/MenuItem.js.map +1 -1
- package/dist/cjs/components/radioButton/RadioButton.js +1 -1
- package/dist/cjs/components/radioButton/RadioButton.js.map +1 -1
- package/dist/cjs/components/radioList/RadioList.js +1 -1
- package/dist/cjs/components/radioList/RadioList.js.map +1 -1
- package/dist/cjs/components/searchBar/searchBar.js +1 -1
- package/dist/cjs/components/searchBar/searchBar.js.map +1 -1
- package/dist/cjs/components/side-modal/SideModal.js +1 -1
- package/dist/cjs/components/side-modal/SideModal.js.map +1 -1
- package/dist/cjs/components/star-rating/Star.js +1 -1
- package/dist/cjs/components/star-rating/Star.js.map +1 -1
- package/dist/cjs/components/star-rating/StarRating.js +2 -2
- package/dist/cjs/components/star-rating/StarRating.js.map +1 -1
- package/dist/cjs/components/template-preview/TemplatePreview.js +1 -1
- package/dist/cjs/components/template-preview/TemplatePreview.js.map +1 -1
- package/dist/cjs/components/thumbnail/Thumbnail.js +1 -1
- package/dist/cjs/components/thumbnail/Thumbnail.js.map +1 -1
- package/dist/cjs/components/zeroState/ZeroState.js +3 -3
- package/dist/cjs/components/zeroState/ZeroState.js.map +1 -1
- package/dist/cjs/editor/BikEditor.js +1 -1
- package/dist/cjs/editor/BikEditor.js.map +1 -1
- package/dist/cjs/editor/BikEditor.styles.js +97 -54
- package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
- package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js +3 -3
- package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
- package/dist/cjs/icons/Media/Visual/FormkitNeutral.js +2 -0
- package/dist/cjs/icons/Media/Visual/FormkitNeutral.js.map +1 -0
- package/dist/cjs/icons/Media/Visual/FormkitSad.js +2 -0
- package/dist/cjs/icons/Media/Visual/FormkitSad.js.map +1 -0
- package/dist/cjs/icons/index.js +1 -1
- package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js +66 -61
- package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
- package/dist/esm/components/SearchFilter/index.js +11 -10
- package/dist/esm/components/SearchFilter/index.js.map +1 -1
- package/dist/esm/components/agent-builder/AgentBuilder.js +106 -102
- package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
- package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +3 -6
- package/dist/esm/components/agent-builder/AgentBuilder.styled.js +118 -106
- package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
- package/dist/esm/components/agent-builder/__fixtures__/agentValue.d.ts +11 -0
- package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js +29 -21
- package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js.map +1 -1
- package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js +27 -26
- package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.js +25 -25
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +24 -23
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/DiscardModal.d.ts +3 -1
- package/dist/esm/components/agent-builder/components/DiscardModal.js +33 -24
- package/dist/esm/components/agent-builder/components/DiscardModal.js.map +1 -1
- package/dist/esm/components/agent-builder/components/GoLiveModal.js +23 -21
- package/dist/esm/components/agent-builder/components/GoLiveModal.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionEditor.js +19 -19
- package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionPicker.js +177 -147
- package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.d.ts +2 -0
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.js +111 -105
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +13 -4
- package/dist/esm/components/agent-builder/components/SelectableListSection.js +173 -148
- package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
- package/dist/esm/components/agent-builder/components/StepSectionHeader.js +7 -7
- package/dist/esm/components/agent-builder/components/StepSectionHeader.js.map +1 -1
- package/dist/esm/components/agent-builder/constants/tools.js +1 -1
- package/dist/esm/components/agent-builder/constants/tools.js.map +1 -1
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +104 -103
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +101 -102
- package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +144 -142
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +23 -79
- package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
- package/dist/esm/components/agent-builder/utils/mentionSerialization.js +35 -23
- package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
- package/dist/esm/components/agent-listing/AgentListing.js +70 -65
- package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
- package/dist/esm/components/agent-listing/AgentTable.d.ts +2 -0
- package/dist/esm/components/agent-listing/AgentTable.js +16 -15
- package/dist/esm/components/agent-listing/AgentTable.js.map +1 -1
- package/dist/esm/components/agent-listing/AgentTableRow.js +11 -11
- package/dist/esm/components/agent-listing/AgentTableRow.js.map +1 -1
- package/dist/esm/components/agent-listing/AgentTableShimmer.d.ts +12 -0
- package/dist/esm/components/agent-listing/AgentTableShimmer.js +20 -0
- package/dist/esm/components/agent-listing/AgentTableShimmer.js.map +1 -0
- package/dist/esm/components/agent-listing/DeleteAgentModal.js +8 -8
- package/dist/esm/components/agent-listing/DeleteAgentModal.js.map +1 -1
- package/dist/esm/components/agent-listing/__fixtures__/agents.d.ts +3 -0
- package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsChip.js +11 -10
- package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsChip.js.map +1 -1
- package/dist/esm/components/button/Button.styled.js +25 -19
- package/dist/esm/components/button/Button.styled.js.map +1 -1
- package/dist/esm/components/button/themes.d.ts +1 -0
- package/dist/esm/components/button/themes.js +61 -51
- package/dist/esm/components/button/themes.js.map +1 -1
- package/dist/esm/components/dashboard-review-popup/DashboardReviewPopUp.js +28 -21
- package/dist/esm/components/dashboard-review-popup/DashboardReviewPopUp.js.map +1 -1
- package/dist/esm/components/dropdown/Dropdown.js +18 -13
- package/dist/esm/components/dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/dropdown-button/DropdownButton.js +13 -13
- package/dist/esm/components/dropdown-button/DropdownButton.js.map +1 -1
- package/dist/esm/components/input/Input.js +35 -34
- package/dist/esm/components/input/Input.js.map +1 -1
- package/dist/esm/components/input/Input.model.d.ts +1 -0
- package/dist/esm/components/multi-level-dropdown/MenuItem.js +28 -27
- package/dist/esm/components/multi-level-dropdown/MenuItem.js.map +1 -1
- package/dist/esm/components/radioButton/RadioButton.js +10 -9
- package/dist/esm/components/radioButton/RadioButton.js.map +1 -1
- package/dist/esm/components/radioList/RadioList.js +28 -19
- package/dist/esm/components/radioList/RadioList.js.map +1 -1
- package/dist/esm/components/searchBar/searchBar.js +11 -10
- package/dist/esm/components/searchBar/searchBar.js.map +1 -1
- package/dist/esm/components/side-modal/SideModal.js +13 -5
- package/dist/esm/components/side-modal/SideModal.js.map +1 -1
- package/dist/esm/components/star-rating/Star.d.ts +1 -0
- package/dist/esm/components/star-rating/Star.js +32 -27
- package/dist/esm/components/star-rating/Star.js.map +1 -1
- package/dist/esm/components/star-rating/StarRating.js +17 -16
- package/dist/esm/components/star-rating/StarRating.js.map +1 -1
- package/dist/esm/components/template-preview/TemplatePreview.js +41 -40
- package/dist/esm/components/template-preview/TemplatePreview.js.map +1 -1
- package/dist/esm/components/thumbnail/Thumbnail.js +3 -3
- package/dist/esm/components/thumbnail/Thumbnail.js.map +1 -1
- package/dist/esm/components/zeroState/ZeroState.js +20 -13
- package/dist/esm/components/zeroState/ZeroState.js.map +1 -1
- package/dist/esm/editor/BikEditor.js +173 -160
- package/dist/esm/editor/BikEditor.js.map +1 -1
- package/dist/esm/editor/BikEditor.styles.d.ts +20 -3
- package/dist/esm/editor/BikEditor.styles.js +102 -57
- package/dist/esm/editor/BikEditor.styles.js.map +1 -1
- package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.d.ts +5 -8
- package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js +87 -68
- package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
- package/dist/esm/icons/Media/Visual/FormkitNeutral.js +58 -0
- package/dist/esm/icons/Media/Visual/FormkitNeutral.js.map +1 -0
- package/dist/esm/icons/Media/Visual/FormkitSad.js +61 -0
- package/dist/esm/icons/Media/Visual/FormkitSad.js.map +1 -0
- package/dist/esm/icons/Media/Visual/index.d.ts +2 -0
- package/dist/esm/icons/index.d.ts +25 -25
- package/dist/esm/icons/index.js +420 -416
- package/dist/esm/icons/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs as i, jsx as d } from "react/jsx-runtime";
|
|
2
|
-
import { useRef as
|
|
2
|
+
import { useRef as B, useState as j, useCallback as w, useEffect as p, useMemo as F } from "react";
|
|
3
3
|
import { TitleSmall as N, BodyCaption as _ } from "../../TypographyStyle.js";
|
|
4
4
|
import { COLORS as h } from "../../../constants/Theme.js";
|
|
5
5
|
import { FieldBlock as G, FieldLabelRow as J, AiTextAreaShell as P } from "../AgentBuilder.styled.js";
|
|
@@ -13,11 +13,11 @@ const nt = ({
|
|
|
13
13
|
onChange: g,
|
|
14
14
|
maxLength: a,
|
|
15
15
|
placeholder: C,
|
|
16
|
-
minHeight:
|
|
16
|
+
minHeight: T = "200px",
|
|
17
17
|
resetKey: l,
|
|
18
18
|
mentionItems: n,
|
|
19
|
-
tools:
|
|
20
|
-
onMentionSelect:
|
|
19
|
+
tools: b,
|
|
20
|
+
onMentionSelect: x,
|
|
21
21
|
onFocus: E,
|
|
22
22
|
registerInsert: r,
|
|
23
23
|
onCreateSubAgent: k,
|
|
@@ -25,31 +25,31 @@ const nt = ({
|
|
|
25
25
|
action: O,
|
|
26
26
|
...R
|
|
27
27
|
}) => {
|
|
28
|
-
const c =
|
|
29
|
-
(t, o,
|
|
28
|
+
const c = B(null), [D, m] = j(e.length), s = w(
|
|
29
|
+
(t, o, M) => {
|
|
30
30
|
const f = c.current;
|
|
31
31
|
if (!f)
|
|
32
32
|
return;
|
|
33
|
-
const
|
|
33
|
+
const y = n.find(
|
|
34
34
|
(u) => String(u.id) === String(o) && u.meta?.kind === t
|
|
35
|
-
),
|
|
35
|
+
), A = M ?? y?.label ?? o;
|
|
36
36
|
f.insertInlineContent(
|
|
37
|
-
`${$(String(o),
|
|
37
|
+
`${$(String(o), A, t)} `
|
|
38
38
|
);
|
|
39
39
|
},
|
|
40
40
|
[n]
|
|
41
41
|
);
|
|
42
42
|
p(() => {
|
|
43
43
|
if (r)
|
|
44
|
-
return r(
|
|
45
|
-
}, [r,
|
|
46
|
-
const
|
|
44
|
+
return r(s), () => r(null);
|
|
45
|
+
}, [r, s]);
|
|
46
|
+
const L = F(
|
|
47
47
|
() => q(e, n),
|
|
48
48
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
49
49
|
[l]
|
|
50
50
|
);
|
|
51
51
|
return p(
|
|
52
|
-
() =>
|
|
52
|
+
() => m(e.length),
|
|
53
53
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
54
54
|
[l]
|
|
55
55
|
), /* @__PURE__ */ i(G, { children: [
|
|
@@ -61,14 +61,14 @@ const nt = ({
|
|
|
61
61
|
a
|
|
62
62
|
] })
|
|
63
63
|
] }),
|
|
64
|
-
/* @__PURE__ */ i(P, { minHeight:
|
|
64
|
+
/* @__PURE__ */ i(P, { minHeight: T, "data-test": R["data-test"], children: [
|
|
65
65
|
/* @__PURE__ */ d(
|
|
66
66
|
U,
|
|
67
67
|
{
|
|
68
68
|
ref: c,
|
|
69
|
-
initialContent:
|
|
69
|
+
initialContent: L,
|
|
70
70
|
placeholder: C,
|
|
71
|
-
|
|
71
|
+
characterLimit: a,
|
|
72
72
|
minHeight: "120px",
|
|
73
73
|
maxHeight: "320px",
|
|
74
74
|
style: { border: "none" },
|
|
@@ -87,13 +87,13 @@ const nt = ({
|
|
|
87
87
|
),
|
|
88
88
|
onSelect: (t) => {
|
|
89
89
|
const o = t.meta?.kind;
|
|
90
|
-
o &&
|
|
90
|
+
o && x?.(o, String(t.id));
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
93
|
onChange: (t) => {
|
|
94
|
-
|
|
94
|
+
m(t.characterCount);
|
|
95
95
|
const o = c.current?.getJSON() ?? null;
|
|
96
|
-
g(z(o,
|
|
96
|
+
g(z(o, b));
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
l
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MentionEditor.js","sources":["../../../../../src/components/agent-builder/components/MentionEditor.tsx"],"sourcesContent":["import { BikEditor, BikEditorRef, MentionItem } from '@src/editor';\nimport React, {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool } from '../AgentBuilder.model';\nimport {\n\tAiTextAreaShell,\n\tFieldBlock,\n\tFieldLabelRow,\n} from '../AgentBuilder.styled';\nimport { AGENT_EDITOR_STYLE } from '../constants/editorStyle';\nimport type { ToolAction } from '../constants/tools';\nimport {\n\tbuildMentionHtml,\n\teditorDocToInstructions,\n\tinstructionsToEditorHtml,\n\tMentionKindMeta,\n} from '../utils/mentionSerialization';\nimport { MentionPicker } from './MentionPicker';\n\ntype InsertFn = (kind: 'tool' | 'subagent', id: string, label?: string) => void;\n\ninterface MentionEditorProps {\n\tlabel: string;\n\tvalue: string;\n\tonChange: (text: string) => void;\n\tmaxLength: number;\n\tplaceholder?: string;\n\tminHeight?: string;\n\t/** Changing this remounts the editor with fresh content. */\n\tresetKey?: string | number;\n\t/** Items shown in the `@` picker (tools, and sub-agents where allowed). */\n\tmentionItems: MentionItem[];\n\t/** Tools used to serialise mention nodes back to `{{tool:KEY}}`. */\n\ttools: AgentTool[];\n\t/** Called when an item is picked from the `@` menu (to attach it upstream). */\n\tonMentionSelect?: (kind: 'tool' | 'subagent', id: string) => void;\n\tonFocus?: () => void;\n\t/** Receives an insert-at-cursor fn (and null on unmount) for side-panel adds. */\n\tregisterInsert?: (fn: InsertFn | null) => void;\n\t/**\n\t * When set, the `@` picker's Sub-agent view shows a \"Create new\" row that calls\n\t * this (opens the create-sub-agent drawer). Omit to hide it (e.g. the drawer's\n\t * own editors, which can't nest sub-agents).\n\t */\n\tonCreateSubAgent?: () => void;\n\t/**\n\t * Built-in tool actions (Rest API / Handover to email) shown in the `@` picker's\n\t * Tools view. Picking one opens its drawer instead of inserting a mention.\n\t */\n\ttoolActions?: ToolAction[];\n\t/** Optional action(s) rendered inside the shell, below the editor. */\n\taction?: React.ReactNode;\n\t'data-test'?: string;\n}\n\n/**\n * Presentational BikEditor field with `@` mentions. Stores firebase token text\n * (`{{tool:KEY}}` / `{{subagent:ID}}`). Context-free — both the builder's\n * Step-3 fields and the create-sub-agent drawer compose it.\n */\nexport const MentionEditor: React.FC<MentionEditorProps> = ({\n\tlabel,\n\tvalue,\n\tonChange,\n\tmaxLength,\n\tplaceholder,\n\tminHeight = '200px',\n\tresetKey,\n\tmentionItems,\n\ttools,\n\tonMentionSelect,\n\tonFocus,\n\tregisterInsert,\n\tonCreateSubAgent,\n\ttoolActions,\n\taction,\n\t...rest\n}) => {\n\tconst editorRef = useRef<BikEditorRef>(null);\n\tconst [count, setCount] = useState(value.length);\n\n\tconst insert = useCallback<InsertFn>(\n\t\t(kind, id, overrideLabel) => {\n\t\t\tconst editor = editorRef.current;\n\t\t\tif (!editor) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst item = mentionItems.find(\n\t\t\t\t(m) =>\n\t\t\t\t\tString(m.id) === String(id) &&\n\t\t\t\t\t(m.meta as unknown as MentionKindMeta | undefined)?.kind === kind,\n\t\t\t);\n\t\t\tconst finalLabel = overrideLabel ?? item?.label ?? id;\n\t\t\teditor.insertInlineContent(\n\t\t\t\t`${buildMentionHtml(String(id), finalLabel, kind)} `,\n\t\t\t);\n\t\t},\n\t\t[mentionItems],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!registerInsert) {\n\t\t\treturn;\n\t\t}\n\t\tregisterInsert(insert);\n\t\treturn () => registerInsert(null);\n\t}, [registerInsert, insert]);\n\n\t// Mount-only initial HTML; recomputed (editor remounted via key) on resetKey.\n\tconst initialHtml = useMemo(\n\t\t() => instructionsToEditorHtml(value, mentionItems),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\tuseEffect(\n\t\t() => setCount(value.length),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\treturn (\n\t\t<FieldBlock>\n\t\t\t<FieldLabelRow>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>{label}</TitleSmall>\n\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t{count}/{maxLength}\n\t\t\t\t</BodyCaption>\n\t\t\t</FieldLabelRow>\n\n\t\t\t<AiTextAreaShell minHeight={minHeight} data-test={rest['data-test']}>\n\t\t\t\t<BikEditor\n\t\t\t\t\tkey={resetKey}\n\t\t\t\t\tref={editorRef}\n\t\t\t\t\tinitialContent={initialHtml}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\
|
|
1
|
+
{"version":3,"file":"MentionEditor.js","sources":["../../../../../src/components/agent-builder/components/MentionEditor.tsx"],"sourcesContent":["import { BikEditor, BikEditorRef, MentionItem } from '@src/editor';\nimport React, {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool } from '../AgentBuilder.model';\nimport {\n\tAiTextAreaShell,\n\tFieldBlock,\n\tFieldLabelRow,\n} from '../AgentBuilder.styled';\nimport { AGENT_EDITOR_STYLE } from '../constants/editorStyle';\nimport type { ToolAction } from '../constants/tools';\nimport {\n\tbuildMentionHtml,\n\teditorDocToInstructions,\n\tinstructionsToEditorHtml,\n\tMentionKindMeta,\n} from '../utils/mentionSerialization';\nimport { MentionPicker } from './MentionPicker';\n\ntype InsertFn = (kind: 'tool' | 'subagent', id: string, label?: string) => void;\n\ninterface MentionEditorProps {\n\tlabel: string;\n\tvalue: string;\n\tonChange: (text: string) => void;\n\tmaxLength: number;\n\tplaceholder?: string;\n\tminHeight?: string;\n\t/** Changing this remounts the editor with fresh content. */\n\tresetKey?: string | number;\n\t/** Items shown in the `@` picker (tools, and sub-agents where allowed). */\n\tmentionItems: MentionItem[];\n\t/** Tools used to serialise mention nodes back to `{{tool:KEY}}`. */\n\ttools: AgentTool[];\n\t/** Called when an item is picked from the `@` menu (to attach it upstream). */\n\tonMentionSelect?: (kind: 'tool' | 'subagent', id: string) => void;\n\tonFocus?: () => void;\n\t/** Receives an insert-at-cursor fn (and null on unmount) for side-panel adds. */\n\tregisterInsert?: (fn: InsertFn | null) => void;\n\t/**\n\t * When set, the `@` picker's Sub-agent view shows a \"Create new\" row that calls\n\t * this (opens the create-sub-agent drawer). Omit to hide it (e.g. the drawer's\n\t * own editors, which can't nest sub-agents).\n\t */\n\tonCreateSubAgent?: () => void;\n\t/**\n\t * Built-in tool actions (Rest API / Handover to email) shown in the `@` picker's\n\t * Tools view. Picking one opens its drawer instead of inserting a mention.\n\t */\n\ttoolActions?: ToolAction[];\n\t/** Optional action(s) rendered inside the shell, below the editor. */\n\taction?: React.ReactNode;\n\t'data-test'?: string;\n}\n\n/**\n * Presentational BikEditor field with `@` mentions. Stores firebase token text\n * (`{{tool:KEY}}` / `{{subagent:ID}}`). Context-free — both the builder's\n * Step-3 fields and the create-sub-agent drawer compose it.\n */\nexport const MentionEditor: React.FC<MentionEditorProps> = ({\n\tlabel,\n\tvalue,\n\tonChange,\n\tmaxLength,\n\tplaceholder,\n\tminHeight = '200px',\n\tresetKey,\n\tmentionItems,\n\ttools,\n\tonMentionSelect,\n\tonFocus,\n\tregisterInsert,\n\tonCreateSubAgent,\n\ttoolActions,\n\taction,\n\t...rest\n}) => {\n\tconst editorRef = useRef<BikEditorRef>(null);\n\tconst [count, setCount] = useState(value.length);\n\n\tconst insert = useCallback<InsertFn>(\n\t\t(kind, id, overrideLabel) => {\n\t\t\tconst editor = editorRef.current;\n\t\t\tif (!editor) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst item = mentionItems.find(\n\t\t\t\t(m) =>\n\t\t\t\t\tString(m.id) === String(id) &&\n\t\t\t\t\t(m.meta as unknown as MentionKindMeta | undefined)?.kind === kind,\n\t\t\t);\n\t\t\tconst finalLabel = overrideLabel ?? item?.label ?? id;\n\t\t\teditor.insertInlineContent(\n\t\t\t\t`${buildMentionHtml(String(id), finalLabel, kind)} `,\n\t\t\t);\n\t\t},\n\t\t[mentionItems],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!registerInsert) {\n\t\t\treturn;\n\t\t}\n\t\tregisterInsert(insert);\n\t\treturn () => registerInsert(null);\n\t}, [registerInsert, insert]);\n\n\t// Mount-only initial HTML; recomputed (editor remounted via key) on resetKey.\n\tconst initialHtml = useMemo(\n\t\t() => instructionsToEditorHtml(value, mentionItems),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\tuseEffect(\n\t\t() => setCount(value.length),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\treturn (\n\t\t<FieldBlock>\n\t\t\t<FieldLabelRow>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>{label}</TitleSmall>\n\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t{count}/{maxLength}\n\t\t\t\t</BodyCaption>\n\t\t\t</FieldLabelRow>\n\n\t\t\t<AiTextAreaShell minHeight={minHeight} data-test={rest['data-test']}>\n\t\t\t\t<BikEditor\n\t\t\t\t\tkey={resetKey}\n\t\t\t\t\tref={editorRef}\n\t\t\t\t\tinitialContent={initialHtml}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t// Soft limit: blocks typing past the cap but lets a paste through\n\t\t\t\t\t// (overflow rendered grey) instead of rejecting the whole paste.\n\t\t\t\t\tcharacterLimit={maxLength}\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t\tmaxHeight=\"320px\"\n\t\t\t\t\tstyle={{ border: 'none' }}\n\t\t\t\t\teditorStyle={AGENT_EDITOR_STYLE}\n\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\tmentions={{\n\t\t\t\t\t\tagents: mentionItems,\n\t\t\t\t\t\tremoveTriggerOnDismiss: true,\n\t\t\t\t\t\trenderDropdown: (props) => (\n\t\t\t\t\t\t\t<MentionPicker\n\t\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\t\tonCreateSubAgent={onCreateSubAgent}\n\t\t\t\t\t\t\t\ttoolActions={toolActions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tonSelect: (item) => {\n\t\t\t\t\t\t\tconst kind = (item.meta as unknown as MentionKindMeta | undefined)\n\t\t\t\t\t\t\t\t?.kind;\n\t\t\t\t\t\t\tif (kind) {\n\t\t\t\t\t\t\t\tonMentionSelect?.(kind, String(item.id));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(snapshot) => {\n\t\t\t\t\t\tsetCount(snapshot.characterCount);\n\t\t\t\t\t\tconst doc = editorRef.current?.getJSON() ?? null;\n\t\t\t\t\t\tonChange(editorDocToInstructions(doc, tools));\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t{action}\n\t\t\t</AiTextAreaShell>\n\t\t</FieldBlock>\n\t);\n};\n"],"names":["MentionEditor","label","value","onChange","maxLength","placeholder","minHeight","resetKey","mentionItems","tools","onMentionSelect","onFocus","registerInsert","onCreateSubAgent","toolActions","action","rest","editorRef","useRef","count","setCount","useState","insert","useCallback","kind","id","overrideLabel","editor","item","m","finalLabel","buildMentionHtml","useEffect","initialHtml","useMemo","instructionsToEditorHtml","FieldBlock","jsxs","FieldLabelRow","jsx","TitleSmall","COLORS","BodyCaption","AiTextAreaShell","BikEditor","AGENT_EDITOR_STYLE","props","MentionPicker","snapshot","doc","editorDocToInstructions"],"mappings":"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"}
|
|
@@ -1,252 +1,282 @@
|
|
|
1
|
-
import { jsxs as m, jsx as u, Fragment as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { useState as
|
|
1
|
+
import { jsxs as m, jsx as u, Fragment as X } from "react/jsx-runtime";
|
|
2
|
+
import Y from "../../../assets/icons/chevronRight.svg.js";
|
|
3
|
+
import Z from "../../../assets/icons/searchIcon.svg.js";
|
|
4
|
+
import K from "../../../icons/Arrows/Normal arrows/ArrowLeft.js";
|
|
5
|
+
import { useState as B, useMemo as x, useEffect as z, useRef as H } from "react";
|
|
6
6
|
import p from "styled-components";
|
|
7
|
-
import { TitleSmall as
|
|
8
|
-
import { COLORS as
|
|
9
|
-
import { CATEGORIES as
|
|
10
|
-
import { toolSourceLabel as
|
|
11
|
-
import { sourceIcon as
|
|
12
|
-
const
|
|
13
|
-
items:
|
|
14
|
-
onSelect:
|
|
15
|
-
registerKeyHandler:
|
|
16
|
-
onClose:
|
|
17
|
-
onCreateSubAgent:
|
|
18
|
-
initialSource:
|
|
19
|
-
toolActions:
|
|
7
|
+
import { TitleSmall as ee, BodySecondary as te } from "../../TypographyStyle.js";
|
|
8
|
+
import { COLORS as i } from "../../../constants/Theme.js";
|
|
9
|
+
import { CATEGORIES as ne, toolSourceRank as q, CONFIG_TOOL_SOURCES as re } from "../constants/tools.js";
|
|
10
|
+
import { toolSourceLabel as N } from "../utils/mentionSerialization.js";
|
|
11
|
+
import { sourceIcon as E, renderSourceIcon as J } from "../utils/sourceIcons.js";
|
|
12
|
+
const k = (l) => l.meta, I = (l) => k(l)?.plainLabel ?? l.label, oe = "__bik_create_subagent__", Ce = ({
|
|
13
|
+
items: l,
|
|
14
|
+
onSelect: S,
|
|
15
|
+
registerKeyHandler: C,
|
|
16
|
+
onClose: v,
|
|
17
|
+
onCreateSubAgent: y,
|
|
18
|
+
initialSource: U,
|
|
19
|
+
toolActions: b
|
|
20
20
|
}) => {
|
|
21
|
-
const [
|
|
22
|
-
() =>
|
|
23
|
-
[
|
|
24
|
-
),
|
|
25
|
-
() =>
|
|
26
|
-
[
|
|
27
|
-
),
|
|
21
|
+
const [Q, _] = B(null), [a, O] = B(U ?? null), [A, h] = B(-1), [w, j] = B(""), g = x(
|
|
22
|
+
() => l.filter((e) => k(e)?.kind === "tool"),
|
|
23
|
+
[l]
|
|
24
|
+
), $ = x(
|
|
25
|
+
() => l.filter((e) => k(e)?.kind === "subagent"),
|
|
26
|
+
[l]
|
|
27
|
+
), T = x(() => {
|
|
28
28
|
const e = [];
|
|
29
|
-
return
|
|
30
|
-
const f =
|
|
29
|
+
return g.forEach((r) => {
|
|
30
|
+
const f = k(r)?.source ?? "other";
|
|
31
31
|
e.includes(f) || e.push(f);
|
|
32
32
|
}), e;
|
|
33
|
-
}, [
|
|
33
|
+
}, [g]), P = x(
|
|
34
34
|
() => new Map(
|
|
35
|
-
(
|
|
35
|
+
(b ?? []).map((e) => [e.source, e])
|
|
36
36
|
),
|
|
37
|
-
[
|
|
38
|
-
),
|
|
39
|
-
() =>
|
|
40
|
-
(e) => e.key === "tool" ?
|
|
37
|
+
[b]
|
|
38
|
+
), L = x(
|
|
39
|
+
() => ne.filter(
|
|
40
|
+
(e) => e.key === "tool" ? g.length > 0 || (b?.length ?? 0) > 0 : $.length > 0 || !!y
|
|
41
41
|
),
|
|
42
|
-
[
|
|
43
|
-
),
|
|
42
|
+
[g.length, $.length, y, b?.length]
|
|
43
|
+
), D = L.length === 1 ? L[0].key : null, s = Q ?? D, d = s ? s === "subagent" ? (
|
|
44
44
|
// Always titled — with a back arrow only when the category chooser is above.
|
|
45
45
|
{
|
|
46
46
|
title: "Sub-agent",
|
|
47
|
-
onBack:
|
|
47
|
+
onBack: D ? void 0 : () => _(null)
|
|
48
48
|
}
|
|
49
49
|
) : a ? {
|
|
50
|
-
title:
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
title: N(a),
|
|
51
|
+
// Deep-linked to a source (opened from a right-panel source button):
|
|
52
|
+
// that source IS the root, so no back arrow. In the @-drill flow
|
|
53
|
+
// (no initialSource) back returns to the source chooser.
|
|
54
|
+
onBack: U ? void 0 : () => O(null),
|
|
55
|
+
icon: E(a)
|
|
53
56
|
} : (
|
|
54
57
|
// Always titled — matches the Sub-agent header; back arrow only when the
|
|
55
58
|
// category chooser is above (i.e. not the sole category).
|
|
56
59
|
{
|
|
57
60
|
title: "Tools",
|
|
58
|
-
onBack:
|
|
61
|
+
onBack: D ? void 0 : () => _(null)
|
|
59
62
|
}
|
|
60
|
-
) : null,
|
|
61
|
-
if (!
|
|
62
|
-
return
|
|
63
|
-
id:
|
|
64
|
-
label:
|
|
63
|
+
) : null, c = x(() => {
|
|
64
|
+
if (!s)
|
|
65
|
+
return L.map((n) => ({
|
|
66
|
+
id: n.key,
|
|
67
|
+
label: n.label,
|
|
65
68
|
drillsIn: !0,
|
|
66
69
|
onActivate: () => {
|
|
67
|
-
|
|
70
|
+
_(n.key), O(null);
|
|
68
71
|
}
|
|
69
72
|
}));
|
|
70
|
-
if (
|
|
71
|
-
const
|
|
72
|
-
id: String(
|
|
73
|
-
label:
|
|
73
|
+
if (s === "subagent") {
|
|
74
|
+
const n = w.trim().toLowerCase(), t = $.filter((o) => !n || I(o).toLowerCase().includes(n)).map((o) => ({
|
|
75
|
+
id: String(o.id),
|
|
76
|
+
label: I(o),
|
|
74
77
|
drillsIn: !1,
|
|
75
|
-
onActivate: () =>
|
|
78
|
+
onActivate: () => S(o)
|
|
76
79
|
}));
|
|
77
|
-
return
|
|
78
|
-
id:
|
|
80
|
+
return y && t.push({
|
|
81
|
+
id: oe,
|
|
79
82
|
label: "Create new",
|
|
80
83
|
drillsIn: !1,
|
|
81
84
|
isCreate: !0,
|
|
82
85
|
onActivate: () => {
|
|
83
|
-
|
|
86
|
+
v?.(), y();
|
|
84
87
|
}
|
|
85
|
-
}),
|
|
88
|
+
}), t;
|
|
86
89
|
}
|
|
87
90
|
if (!a) {
|
|
88
|
-
const
|
|
89
|
-
return [...
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
91
|
+
const n = (b ?? []).map((t) => t.source).filter((t) => !T.includes(t));
|
|
92
|
+
return [...T, ...n].sort((t, o) => q(t) - q(o)).map((t) => {
|
|
93
|
+
const o = P.get(t);
|
|
94
|
+
if (o?.connected === !1)
|
|
95
|
+
return {
|
|
96
|
+
id: t,
|
|
97
|
+
label: N(t),
|
|
98
|
+
drillsIn: !1,
|
|
99
|
+
icon: E(t) ?? o.icon,
|
|
100
|
+
rightLabel: "Connect",
|
|
101
|
+
onActivate: () => {
|
|
102
|
+
v?.(), o.onConnect?.();
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
const G = g.filter(
|
|
106
|
+
(R) => (k(R)?.source ?? "other") === t
|
|
107
|
+
);
|
|
108
|
+
if (G.length + (o ? 1 : 0) === 1) {
|
|
109
|
+
const R = E(t) ?? o?.icon;
|
|
110
|
+
if (o)
|
|
111
|
+
return {
|
|
112
|
+
id: t,
|
|
113
|
+
label: o.label,
|
|
114
|
+
drillsIn: !1,
|
|
115
|
+
icon: R,
|
|
116
|
+
onActivate: () => {
|
|
117
|
+
v?.(), o.onSelect();
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
const M = G[0];
|
|
121
|
+
return {
|
|
122
|
+
id: String(M.id),
|
|
123
|
+
label: I(M),
|
|
124
|
+
drillsIn: !1,
|
|
125
|
+
icon: R,
|
|
126
|
+
onActivate: () => S(M)
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
id: t,
|
|
131
|
+
label: N(t),
|
|
103
132
|
drillsIn: !0,
|
|
104
|
-
icon:
|
|
105
|
-
onActivate: () =>
|
|
133
|
+
icon: E(t) ?? o?.icon,
|
|
134
|
+
onActivate: () => O(t)
|
|
106
135
|
};
|
|
107
136
|
});
|
|
108
137
|
}
|
|
109
|
-
const e =
|
|
110
|
-
id: String(
|
|
111
|
-
label:
|
|
138
|
+
const e = w.trim().toLowerCase(), r = g.filter((n) => (k(n)?.source ?? "other") === a).filter((n) => !e || I(n).toLowerCase().includes(e)).map((n) => ({
|
|
139
|
+
id: String(n.id),
|
|
140
|
+
label: I(n),
|
|
112
141
|
drillsIn: !1,
|
|
113
|
-
onActivate: () =>
|
|
114
|
-
})), f =
|
|
142
|
+
onActivate: () => S(n)
|
|
143
|
+
})), f = P.get(a);
|
|
115
144
|
if (f) {
|
|
116
|
-
const
|
|
145
|
+
const n = a in re;
|
|
117
146
|
r.push({
|
|
118
147
|
id: `create:${a}`,
|
|
119
148
|
label: f.label,
|
|
120
149
|
drillsIn: !1,
|
|
121
|
-
isCreate: !
|
|
150
|
+
isCreate: !n,
|
|
122
151
|
onActivate: () => {
|
|
123
|
-
|
|
152
|
+
v?.(), f.onSelect();
|
|
124
153
|
}
|
|
125
154
|
});
|
|
126
155
|
}
|
|
127
156
|
return r;
|
|
128
157
|
}, [
|
|
129
|
-
|
|
130
|
-
|
|
158
|
+
s,
|
|
159
|
+
L,
|
|
131
160
|
a,
|
|
161
|
+
w,
|
|
162
|
+
g,
|
|
163
|
+
$,
|
|
164
|
+
T,
|
|
165
|
+
S,
|
|
132
166
|
v,
|
|
167
|
+
y,
|
|
133
168
|
b,
|
|
134
|
-
|
|
135
|
-
_,
|
|
136
|
-
R,
|
|
137
|
-
I,
|
|
138
|
-
k,
|
|
139
|
-
h,
|
|
140
|
-
O
|
|
169
|
+
P
|
|
141
170
|
]);
|
|
142
|
-
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
if (
|
|
146
|
-
return
|
|
147
|
-
const { rows: r, activeIndex: f, header:
|
|
171
|
+
z(() => h(-1), [s, a, w, l]), z(() => j(""), [s, a]);
|
|
172
|
+
const F = H({ rows: c, activeIndex: A, header: d });
|
|
173
|
+
F.current = { rows: c, activeIndex: A, header: d }, z(() => {
|
|
174
|
+
if (C)
|
|
175
|
+
return C((e) => {
|
|
176
|
+
const { rows: r, activeIndex: f, header: n } = F.current;
|
|
148
177
|
switch (e.key) {
|
|
149
178
|
case "ArrowDown":
|
|
150
|
-
return r.length &&
|
|
179
|
+
return r.length && h((t) => (t + 1) % r.length), !0;
|
|
151
180
|
case "ArrowUp":
|
|
152
|
-
return r.length &&
|
|
181
|
+
return r.length && h((t) => (t + r.length - 1) % r.length), !0;
|
|
153
182
|
case "ArrowRight":
|
|
154
183
|
case "Enter":
|
|
155
|
-
return r[f]?.onActivate(), !0;
|
|
184
|
+
return (r[f] ?? r[0])?.onActivate(), !0;
|
|
156
185
|
case "ArrowLeft":
|
|
157
|
-
return
|
|
186
|
+
return n?.onBack ? (n.onBack(), !0) : !1;
|
|
158
187
|
default:
|
|
159
188
|
return !1;
|
|
160
189
|
}
|
|
161
|
-
}), () =>
|
|
162
|
-
}, [
|
|
163
|
-
const
|
|
164
|
-
return /* @__PURE__ */ m(
|
|
190
|
+
}), () => C(null);
|
|
191
|
+
}, [C]);
|
|
192
|
+
const V = s ? c.length && !c[0].drillsIn ? "items" : "sources" : "categories", W = s === "tool" && !!a || s === "subagent";
|
|
193
|
+
return /* @__PURE__ */ m(ie, { className: `bik-mention-picker bik-mention-picker--${V}`, children: [
|
|
165
194
|
d && /* @__PURE__ */ m(
|
|
166
|
-
|
|
195
|
+
pe,
|
|
167
196
|
{
|
|
168
197
|
type: "button",
|
|
169
198
|
onClick: d.onBack,
|
|
170
199
|
disabled: !d.onBack,
|
|
171
200
|
style: {
|
|
172
|
-
background:
|
|
201
|
+
background: i.surface.subdued,
|
|
173
202
|
cursor: d.onBack ? "pointer" : "default"
|
|
174
203
|
},
|
|
175
204
|
children: [
|
|
176
205
|
d.onBack && /* @__PURE__ */ u(
|
|
177
|
-
|
|
206
|
+
K,
|
|
178
207
|
{
|
|
179
208
|
width: 20,
|
|
180
209
|
height: 20,
|
|
181
|
-
color:
|
|
210
|
+
color: i.content.primary
|
|
182
211
|
}
|
|
183
212
|
),
|
|
184
|
-
d.icon &&
|
|
185
|
-
/* @__PURE__ */ m(
|
|
213
|
+
d.icon && J(d.icon),
|
|
214
|
+
/* @__PURE__ */ m(ee, { children: [
|
|
186
215
|
" ",
|
|
187
216
|
d.title
|
|
188
217
|
] })
|
|
189
218
|
]
|
|
190
219
|
}
|
|
191
220
|
),
|
|
192
|
-
|
|
221
|
+
W && /* @__PURE__ */ m(le, { children: [
|
|
193
222
|
/* @__PURE__ */ u(
|
|
194
|
-
|
|
223
|
+
Z,
|
|
195
224
|
{
|
|
196
225
|
width: 20,
|
|
197
226
|
height: 20,
|
|
198
|
-
color:
|
|
227
|
+
color: i.content.placeholder
|
|
199
228
|
}
|
|
200
229
|
),
|
|
201
230
|
/* @__PURE__ */ u(
|
|
202
|
-
|
|
231
|
+
ae,
|
|
203
232
|
{
|
|
204
233
|
autoFocus: !0,
|
|
205
|
-
value:
|
|
234
|
+
value: w,
|
|
206
235
|
placeholder: "Search",
|
|
207
236
|
"data-test": "mention-picker-search",
|
|
208
|
-
onChange: (e) =>
|
|
237
|
+
onChange: (e) => j(e.target.value),
|
|
209
238
|
onKeyDown: (e) => {
|
|
210
|
-
|
|
239
|
+
c.length && (e.key === "ArrowDown" ? (e.preventDefault(), h((r) => (r + 1) % c.length)) : e.key === "ArrowUp" ? (e.preventDefault(), h((r) => (r + c.length - 1) % c.length)) : e.key === "Enter" && (e.preventDefault(), (c[A] ?? c[0])?.onActivate()));
|
|
211
240
|
}
|
|
212
241
|
}
|
|
213
242
|
)
|
|
214
243
|
] }),
|
|
215
|
-
|
|
216
|
-
|
|
244
|
+
c.length === 0 ? /* @__PURE__ */ u(fe, { children: s === "subagent" ? null : "No tools available" }) : c.map((e, r) => /* @__PURE__ */ u(
|
|
245
|
+
ce,
|
|
217
246
|
{
|
|
218
247
|
type: "button",
|
|
219
|
-
$active: r ===
|
|
220
|
-
onMouseEnter: () =>
|
|
248
|
+
$active: r === A,
|
|
249
|
+
onMouseEnter: () => h(r),
|
|
250
|
+
onMouseLeave: () => h(-1),
|
|
221
251
|
onClick: e.onActivate,
|
|
222
|
-
children: e.isCreate ? /* @__PURE__ */ u(
|
|
223
|
-
/* @__PURE__ */ m(
|
|
224
|
-
|
|
225
|
-
/* @__PURE__ */ u(
|
|
252
|
+
children: e.isCreate ? /* @__PURE__ */ u(ue, { children: e.label }) : /* @__PURE__ */ m(X, { children: [
|
|
253
|
+
/* @__PURE__ */ m(se, { children: [
|
|
254
|
+
J(e.icon),
|
|
255
|
+
/* @__PURE__ */ u(te, { color: i.content.primary, children: e.label })
|
|
226
256
|
] }),
|
|
227
|
-
e.rightLabel ? /* @__PURE__ */ u(
|
|
257
|
+
e.rightLabel ? /* @__PURE__ */ u(de, { children: e.rightLabel }) : e.drillsIn && /* @__PURE__ */ u(Y, { width: 12, height: 12 })
|
|
228
258
|
] })
|
|
229
259
|
},
|
|
230
260
|
e.id
|
|
231
261
|
))
|
|
232
262
|
] });
|
|
233
|
-
},
|
|
263
|
+
}, ie = p.div`
|
|
234
264
|
display: flex;
|
|
235
265
|
flex-direction: column;
|
|
236
266
|
min-width: 240px;
|
|
237
267
|
max-height: 301px;
|
|
238
268
|
overflow-y: auto;
|
|
239
|
-
background: ${
|
|
240
|
-
border: 1px solid ${
|
|
269
|
+
background: ${i.surface.standard};
|
|
270
|
+
border: 1px solid ${i.stroke.primary};
|
|
241
271
|
border-radius: 4px;
|
|
242
272
|
box-shadow: 0px -2px 8px 0px #0000001f;
|
|
243
|
-
`,
|
|
273
|
+
`, le = p.div`
|
|
244
274
|
display: flex;
|
|
245
275
|
align-items: center;
|
|
246
276
|
gap: 8px;
|
|
247
277
|
padding: 10px 12px;
|
|
248
|
-
border-bottom: 1px solid ${
|
|
249
|
-
`,
|
|
278
|
+
border-bottom: 1px solid ${i.stroke.primary};
|
|
279
|
+
`, ae = p.input`
|
|
250
280
|
flex: 1;
|
|
251
281
|
min-width: 0;
|
|
252
282
|
border: none;
|
|
@@ -254,12 +284,12 @@ const y = (i) => i.meta, L = (i) => y(i)?.plainLabel ?? i.label, te = "__bik_cre
|
|
|
254
284
|
background: transparent;
|
|
255
285
|
font-family: Inter;
|
|
256
286
|
font-size: 14px;
|
|
257
|
-
color: ${
|
|
287
|
+
color: ${i.content.primary};
|
|
258
288
|
|
|
259
289
|
&::placeholder {
|
|
260
|
-
color: ${
|
|
290
|
+
color: ${i.content.placeholder};
|
|
261
291
|
}
|
|
262
|
-
`,
|
|
292
|
+
`, ce = p.button`
|
|
263
293
|
display: flex;
|
|
264
294
|
justify-content: space-between;
|
|
265
295
|
align-items: center;
|
|
@@ -268,39 +298,39 @@ const y = (i) => i.meta, L = (i) => y(i)?.plainLabel ?? i.label, te = "__bik_cre
|
|
|
268
298
|
padding: 8px 10px;
|
|
269
299
|
height: 48px;
|
|
270
300
|
border: none;
|
|
271
|
-
border-bottom: 1px solid ${
|
|
272
|
-
background: ${(
|
|
301
|
+
border-bottom: 1px solid ${i.stroke.primary};
|
|
302
|
+
background: ${(l) => l.$active ? i.surface.subdued : "transparent"};
|
|
273
303
|
cursor: pointer;
|
|
274
304
|
text-align: left;
|
|
275
305
|
|
|
276
306
|
&:hover {
|
|
277
|
-
background: ${
|
|
307
|
+
background: ${i.surface.hovered};
|
|
278
308
|
}
|
|
279
|
-
`,
|
|
309
|
+
`, se = p.div`
|
|
280
310
|
display: flex;
|
|
281
311
|
align-items: center;
|
|
282
312
|
gap: 12px;
|
|
283
313
|
min-width: 0;
|
|
284
|
-
`,
|
|
314
|
+
`, de = p.span`
|
|
285
315
|
flex-shrink: 0;
|
|
286
|
-
color: ${
|
|
316
|
+
color: ${i.content.brand};
|
|
287
317
|
font-family: Inter;
|
|
288
318
|
font-size: 14px;
|
|
289
319
|
font-weight: 600;
|
|
290
320
|
white-space: nowrap;
|
|
291
|
-
`,
|
|
321
|
+
`, ue = p.div`
|
|
292
322
|
width: 100%;
|
|
293
323
|
text-align: center;
|
|
294
|
-
color: ${
|
|
324
|
+
color: ${i.content.brand};
|
|
295
325
|
font-family: Inter;
|
|
296
326
|
font-size: 14px;
|
|
297
327
|
font-weight: 600;
|
|
298
|
-
`,
|
|
328
|
+
`, pe = p.button`
|
|
299
329
|
display: flex;
|
|
300
330
|
align-items: center;
|
|
301
331
|
padding: 12px 16px;
|
|
302
332
|
border: none;
|
|
303
|
-
border-bottom: 1px solid ${
|
|
333
|
+
border-bottom: 1px solid ${i.stroke.primary};
|
|
304
334
|
background: transparent;
|
|
305
335
|
cursor: pointer;
|
|
306
336
|
font-family: Inter;
|
|
@@ -308,13 +338,13 @@ const y = (i) => i.meta, L = (i) => y(i)?.plainLabel ?? i.label, te = "__bik_cre
|
|
|
308
338
|
font-weight: 600;
|
|
309
339
|
height: 48px;
|
|
310
340
|
gap: 4px;
|
|
311
|
-
`,
|
|
341
|
+
`, fe = p.div`
|
|
312
342
|
padding: 12px 10px;
|
|
313
343
|
font-family: Inter;
|
|
314
344
|
font-size: 13px;
|
|
315
|
-
color: ${
|
|
345
|
+
color: ${i.content.secondary};
|
|
316
346
|
`;
|
|
317
347
|
export {
|
|
318
|
-
|
|
348
|
+
Ce as MentionPicker
|
|
319
349
|
};
|
|
320
350
|
//# sourceMappingURL=MentionPicker.js.map
|