@alpaca-editor/core 1.0.4096 → 1.0.4098
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/components/ui/button.d.ts +1 -1
- package/dist/components/ui/button.js +1 -0
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/context-menu.d.ts +2 -2
- package/dist/components/ui/context-menu.js +16 -16
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/editor/Editor.js +1 -1
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/FieldActionsOverlay.js +40 -26
- package/dist/editor/FieldActionsOverlay.js.map +1 -1
- package/dist/editor/FieldListField.js +1 -1
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/LinkEditorDialog.js +1 -1
- package/dist/editor/ai/AgentTerminal.js +56 -5
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/Agents.js +23 -9
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/ContextInfoBar.js +15 -5
- package/dist/editor/ai/ContextInfoBar.js.map +1 -1
- package/dist/editor/ai/ToolCallDisplay.js +2 -0
- package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
- package/dist/editor/client/AboutDialog.js +7 -5
- package/dist/editor/client/AboutDialog.js.map +1 -1
- package/dist/editor/client/EditorShell.js +7 -2
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +2 -2
- package/dist/editor/client/hooks/useSocketMessageHandler.js +5 -0
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/client/itemsRepository.js +1 -0
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/control-center/Setup.js +1 -1
- package/dist/editor/control-center/Setup.js.map +1 -1
- package/dist/editor/control-center/setup-steps/AiSetupStep/EmbeddingsModelSection.d.ts +2 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/EmbeddingsModelSection.js +195 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/EmbeddingsModelSection.js.map +1 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/index.d.ts +0 -1
- package/dist/editor/control-center/setup-steps/AiSetupStep/index.js +3 -506
- package/dist/editor/control-center/setup-steps/AiSetupStep/index.js.map +1 -1
- package/dist/editor/control-center/setup-steps/AiSetupStep/provider/ProviderSection.d.ts +1 -15
- package/dist/editor/control-center/setup-steps/AiSetupStep/provider/ProviderSection.js +226 -3
- package/dist/editor/control-center/setup-steps/AiSetupStep/provider/ProviderSection.js.map +1 -1
- package/dist/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersList.d.ts +1 -1
- package/dist/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.d.ts +1 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js +94 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js.map +1 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.d.ts +1 -7
- package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.js +323 -3
- package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.js.map +1 -1
- package/dist/editor/control-center/setup-steps/AiSetupStep/types.d.ts +1 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/types.js +2 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/types.js.map +1 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/utils.d.ts +4 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/utils.js +25 -0
- package/dist/editor/control-center/setup-steps/AiSetupStep/utils.js.map +1 -0
- package/dist/editor/control-center/setup-steps/IndexSetupStep.js +2 -1
- package/dist/editor/control-center/setup-steps/IndexSetupStep.js.map +1 -1
- package/dist/editor/field-types/SingleLineText.js.map +1 -1
- package/dist/editor/field-types/TreeListEditor.js +102 -16
- package/dist/editor/field-types/TreeListEditor.js.map +1 -1
- package/dist/editor/field-types/richtext/components/ReactSlate.js +1 -1
- package/dist/editor/field-types/richtext/components/SimpleRichTextEditor.js +1 -1
- package/dist/editor/menubar/toolbar-sections/EditControls.js +2 -2
- package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/InsertControls.js +1 -1
- package/dist/editor/menubar/toolbar-sections/InsertControls.js.map +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js +25 -12
- package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
- package/dist/editor/page-editor-chrome/SuggestionHighlighting.js +2 -2
- package/dist/editor/page-editor-chrome/SuggestionHighlighting.js.map +1 -1
- package/dist/editor/page-viewer/PageViewer.js +2 -1
- package/dist/editor/page-viewer/PageViewer.js.map +1 -1
- package/dist/editor/reviews/Comments.js +4 -4
- package/dist/editor/reviews/Comments.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +2 -0
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +1 -0
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +18 -6
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/sidebar/Insert.js +1 -1
- package/dist/editor/ui/Splitter.js +2 -1
- package/dist/editor/ui/Splitter.js.map +1 -1
- package/dist/editor/utils.js +0 -1
- package/dist/editor/utils.js.map +1 -1
- package/dist/page-wizard/steps/MetaDataStep.js +43 -41
- package/dist/page-wizard/steps/MetaDataStep.js.map +1 -1
- package/dist/page-wizard/steps/SelectStep.js +19 -4
- package/dist/page-wizard/steps/SelectStep.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/styles.css +15 -18
- package/package.json +1 -1
- package/src/components/ui/button.tsx +1 -0
- package/src/components/ui/context-menu.tsx +44 -20
- package/src/editor/Editor.tsx +1 -1
- package/src/editor/FieldActionsOverlay.tsx +113 -91
- package/src/editor/FieldListField.tsx +4 -1
- package/src/editor/LinkEditorDialog.tsx +1 -1
- package/src/editor/ai/AgentTerminal.tsx +84 -4
- package/src/editor/ai/Agents.tsx +18 -5
- package/src/editor/ai/ContextInfoBar.tsx +22 -6
- package/src/editor/ai/ToolCallDisplay.tsx +2 -0
- package/src/editor/client/AboutDialog.tsx +22 -17
- package/src/editor/client/EditorShell.tsx +8 -2
- package/src/editor/client/editContext.ts +2 -2
- package/src/editor/client/hooks/useSocketMessageHandler.ts +8 -0
- package/src/editor/client/itemsRepository.ts +1 -0
- package/src/editor/control-center/Setup.tsx +1 -1
- package/src/editor/control-center/setup-steps/AiSetupStep/EmbeddingsModelSection.tsx +296 -0
- package/src/editor/control-center/setup-steps/AiSetupStep/index.tsx +7 -660
- package/src/editor/control-center/setup-steps/AiSetupStep/provider/ProviderSection.tsx +363 -24
- package/src/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersList.tsx +1 -1
- package/src/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.tsx +139 -0
- package/src/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.tsx +385 -8
- package/src/editor/control-center/setup-steps/AiSetupStep/types.ts +1 -0
- package/src/editor/control-center/setup-steps/AiSetupStep/utils.ts +43 -0
- package/src/editor/control-center/setup-steps/IndexSetupStep.tsx +2 -0
- package/src/editor/field-types/SingleLineText.tsx +0 -9
- package/src/editor/field-types/TreeListEditor.tsx +115 -16
- package/src/editor/field-types/richtext/components/ReactSlate.tsx +1 -1
- package/src/editor/field-types/richtext/components/SimpleRichTextEditor.tsx +1 -1
- package/src/editor/menubar/toolbar-sections/EditControls.tsx +2 -2
- package/src/editor/menubar/toolbar-sections/InsertControls.tsx +1 -1
- package/src/editor/page-editor-chrome/FrameMenu.tsx +81 -68
- package/src/editor/page-editor-chrome/SuggestionHighlighting.tsx +5 -5
- package/src/editor/page-viewer/PageViewer.tsx +3 -2
- package/src/editor/reviews/Comments.tsx +13 -8
- package/src/editor/services/agentService.ts +3 -0
- package/src/editor/services/aiService.ts +2 -0
- package/src/editor/sidebar/ComponentTree.tsx +20 -6
- package/src/editor/sidebar/Insert.tsx +1 -1
- package/src/editor/ui/Splitter.tsx +2 -2
- package/src/editor/utils.ts +0 -1
- package/src/page-wizard/steps/MetaDataStep.tsx +61 -50
- package/src/page-wizard/steps/SelectStep.tsx +37 -4
- package/src/revision.ts +2 -2
|
@@ -1,8 +1,328 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
2
3
|
import { Button } from "../../../../../components/ui/button";
|
|
3
4
|
import { CheckCircle, RefreshCw } from "lucide-react";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { useEditContext } from "../../../../client/editContext";
|
|
6
|
+
import { getChildren } from "../../../../services/contentService";
|
|
7
|
+
import { findByName, resolvePathUnderContent } from "../utils";
|
|
8
|
+
// IDs for tool templates/fields
|
|
9
|
+
const AI_TOOLS_TEMPLATE_ID = "7e3f9d9d-8e84-4e57-b12e-6e9c99d4fd11"; // container
|
|
10
|
+
const AI_TOOL_TEMPLATE_ID = "a2e8a0d9-7b1f-4d1a-a2d8-8f3ea6d6f0b1"; // item template
|
|
11
|
+
const FIELD_FUNCTION_NAME_ID = "3d9f2b1a-9d44-4d26-8a1b-92f0fb4d3a2c";
|
|
12
|
+
const FIELD_LABEL_ID = "5a19f5a5-1d21-4b6a-9f83-6f3fc0b34b2e";
|
|
13
|
+
const FIELD_DESCRIPTION_ID = "6b2e4b8e-8a9f-4d8f-9f6e-1a2b3c4d5e6f";
|
|
14
|
+
export function GenerateToolsSection() {
|
|
15
|
+
const editContext = useEditContext();
|
|
16
|
+
const [toolsBusy, setToolsBusy] = React.useState(false);
|
|
17
|
+
const [toolsError, setToolsError] = React.useState(null);
|
|
18
|
+
const userLang = editContext?.contentEditorItem?.language || "en";
|
|
19
|
+
const ensureAiToolsAndGenerate = React.useCallback(async () => {
|
|
20
|
+
if (!editContext)
|
|
21
|
+
return;
|
|
22
|
+
try {
|
|
23
|
+
setToolsBusy(true);
|
|
24
|
+
setToolsError(null);
|
|
25
|
+
// Resolve /Settings/Editor
|
|
26
|
+
const settingsItem = await resolvePathUnderContent(editContext.sessionId, userLang, ["Settings", "Editor"]);
|
|
27
|
+
if (!settingsItem)
|
|
28
|
+
throw new Error("Editor settings item not found. Create it first.");
|
|
29
|
+
// Ensure AI Tools container exists
|
|
30
|
+
const editorChildren = (await getChildren(settingsItem.id, editContext.sessionId, [], false, userLang, "path"));
|
|
31
|
+
let aiToolsParent = findByName(editorChildren, "AI Tools");
|
|
32
|
+
if (!aiToolsParent) {
|
|
33
|
+
const created = await editContext.operations.createItem(settingsItem, AI_TOOLS_TEMPLATE_ID, "AI Tools");
|
|
34
|
+
if (!created)
|
|
35
|
+
throw new Error("Failed to create 'AI Tools' container");
|
|
36
|
+
aiToolsParent = {
|
|
37
|
+
id: created.id,
|
|
38
|
+
name: "AI Tools",
|
|
39
|
+
displayName: "AI Tools",
|
|
40
|
+
thumbUrl: "",
|
|
41
|
+
previewUrl: "",
|
|
42
|
+
templateId: "",
|
|
43
|
+
icon: "",
|
|
44
|
+
hasChildren: false,
|
|
45
|
+
isComponent: false,
|
|
46
|
+
language: userLang,
|
|
47
|
+
version: 0,
|
|
48
|
+
hasLayout: false,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// Get existing items directly under AI Tools (root-level children)
|
|
52
|
+
const rootChildren = (await getChildren(aiToolsParent.id, editContext.sessionId, [], false, userLang, "path"));
|
|
53
|
+
const findChildByName = (children, name) => findByName(children, name);
|
|
54
|
+
// Define groups and their tools
|
|
55
|
+
const toolsByGroup = [
|
|
56
|
+
{
|
|
57
|
+
group: "Content",
|
|
58
|
+
tools: [
|
|
59
|
+
{
|
|
60
|
+
functionName: "get-content",
|
|
61
|
+
label: "Get Content",
|
|
62
|
+
description: "Returns page content or selected components",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
functionName: "edit-field",
|
|
66
|
+
label: "Edit Field",
|
|
67
|
+
description: "Edits a field on the page or datasource",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
functionName: "suggest-field-edit",
|
|
71
|
+
label: "Suggest Field Edit",
|
|
72
|
+
description: "Suggests changes to a field's content",
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
group: "Items",
|
|
78
|
+
tools: [
|
|
79
|
+
{
|
|
80
|
+
functionName: "create-item",
|
|
81
|
+
label: "Create Item",
|
|
82
|
+
description: "Creates a new item using a template",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
functionName: "load-item",
|
|
86
|
+
label: "Load Item",
|
|
87
|
+
description: "Loads an item for context",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
functionName: "get-items",
|
|
91
|
+
label: "Get Items",
|
|
92
|
+
description: "Finds items by criteria",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
functionName: "get-children",
|
|
96
|
+
label: "Get Children",
|
|
97
|
+
description: "Lists child items under a parent",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
functionName: "get-insertoptions",
|
|
101
|
+
label: "Get Insert Options",
|
|
102
|
+
description: "Lists available insert templates for an item",
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
group: "Components",
|
|
108
|
+
tools: [
|
|
109
|
+
{
|
|
110
|
+
functionName: "add-component",
|
|
111
|
+
label: "Add Component",
|
|
112
|
+
description: "Adds a component to a placeholder",
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
functionName: "remove-component",
|
|
116
|
+
label: "Remove Component",
|
|
117
|
+
description: "Removes a component from the page",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
functionName: "move-components",
|
|
121
|
+
label: "Move Components",
|
|
122
|
+
description: "Moves components between placeholders",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
functionName: "get-placeholders",
|
|
126
|
+
label: "Get Placeholders",
|
|
127
|
+
description: "Lists placeholders for a component",
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
functionName: "get-component-props-and-placeholders",
|
|
131
|
+
label: "Get Component Props and Placeholders",
|
|
132
|
+
description: "Returns component prop schema and placeholders",
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
group: "Search",
|
|
138
|
+
tools: [
|
|
139
|
+
{
|
|
140
|
+
functionName: "search-content",
|
|
141
|
+
label: "Search Content",
|
|
142
|
+
description: "Searches content across the index",
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
functionName: "google-search",
|
|
146
|
+
label: "Google Search",
|
|
147
|
+
description: "Performs a web search",
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
functionName: "scrape-webpage",
|
|
151
|
+
label: "Scrape Webpage",
|
|
152
|
+
description: "Fetches a webpage and extracts content",
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
group: "Media",
|
|
158
|
+
tools: [
|
|
159
|
+
{
|
|
160
|
+
functionName: "search-images",
|
|
161
|
+
label: "Search Images",
|
|
162
|
+
description: "Searches images for use in content",
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
functionName: "edit-image",
|
|
166
|
+
label: "Edit Image",
|
|
167
|
+
description: "Uses AI to modify an image",
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
functionName: "get-picture-description",
|
|
171
|
+
label: "Get Picture Description",
|
|
172
|
+
description: "Describes an image",
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
group: "Collaboration",
|
|
178
|
+
tools: [
|
|
179
|
+
{
|
|
180
|
+
functionName: "add-comment",
|
|
181
|
+
label: "Add Comment",
|
|
182
|
+
description: "Adds a comment to the page",
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
functionName: "get-comments",
|
|
186
|
+
label: "Get Comments",
|
|
187
|
+
description: "Lists comments on the page",
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
functionName: "get-reviews",
|
|
191
|
+
label: "Get Reviews",
|
|
192
|
+
description: "Lists reviews on the page",
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
functionName: "invite-reviewer",
|
|
196
|
+
label: "Invite Reviewer",
|
|
197
|
+
description: "Adds a reviewer and sends an invitation email",
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
functionName: "get-suggestions",
|
|
201
|
+
label: "Get Suggestions",
|
|
202
|
+
description: "Provides AI suggestions",
|
|
203
|
+
},
|
|
204
|
+
],
|
|
205
|
+
},
|
|
206
|
+
];
|
|
207
|
+
// Ensure groups exist, then create or move tools under them
|
|
208
|
+
for (const groupDef of toolsByGroup) {
|
|
209
|
+
// Find or create group container under AI Tools
|
|
210
|
+
let groupNode = findChildByName(rootChildren, groupDef.group);
|
|
211
|
+
if (!groupNode) {
|
|
212
|
+
const createdGroup = await editContext.operations.createItem({
|
|
213
|
+
id: aiToolsParent.id,
|
|
214
|
+
language: userLang,
|
|
215
|
+
version: 0,
|
|
216
|
+
}, AI_TOOLS_TEMPLATE_ID, groupDef.group);
|
|
217
|
+
if (!createdGroup)
|
|
218
|
+
throw new Error(`Failed to create group '${groupDef.group}'`);
|
|
219
|
+
groupNode = {
|
|
220
|
+
id: createdGroup.id,
|
|
221
|
+
name: groupDef.group,
|
|
222
|
+
displayName: groupDef.group,
|
|
223
|
+
thumbUrl: "",
|
|
224
|
+
previewUrl: "",
|
|
225
|
+
templateId: "",
|
|
226
|
+
icon: "",
|
|
227
|
+
hasChildren: true,
|
|
228
|
+
isComponent: false,
|
|
229
|
+
language: userLang,
|
|
230
|
+
version: 0,
|
|
231
|
+
hasLayout: false,
|
|
232
|
+
};
|
|
233
|
+
// Update our in-memory root children list so subsequent groups can be found
|
|
234
|
+
rootChildren.push(groupNode);
|
|
235
|
+
}
|
|
236
|
+
// Load current group children (tools already inside this group)
|
|
237
|
+
const groupChildren = (await getChildren(groupNode.id, editContext.sessionId, [], false, userLang, "path"));
|
|
238
|
+
for (const t of groupDef.tools) {
|
|
239
|
+
// Try to find tool inside the group first
|
|
240
|
+
let toolNode = findChildByName(groupChildren, t.label);
|
|
241
|
+
if (!toolNode) {
|
|
242
|
+
// See if tool exists at root and move it into the group
|
|
243
|
+
const existingAtRoot = findChildByName(rootChildren, t.label);
|
|
244
|
+
if (existingAtRoot) {
|
|
245
|
+
await editContext.operations.moveItems([
|
|
246
|
+
{
|
|
247
|
+
id: existingAtRoot.id,
|
|
248
|
+
language: userLang,
|
|
249
|
+
version: 0,
|
|
250
|
+
},
|
|
251
|
+
], {
|
|
252
|
+
id: groupNode.id,
|
|
253
|
+
language: userLang,
|
|
254
|
+
version: 0,
|
|
255
|
+
}, groupChildren.length);
|
|
256
|
+
toolNode = existingAtRoot;
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
// Create new tool item under the group
|
|
260
|
+
const createdTool = await editContext.operations.createItem({
|
|
261
|
+
id: groupNode.id,
|
|
262
|
+
language: userLang,
|
|
263
|
+
version: 0,
|
|
264
|
+
}, AI_TOOL_TEMPLATE_ID, t.label);
|
|
265
|
+
if (!createdTool)
|
|
266
|
+
throw new Error(`Failed to create tool '${t.label}'`);
|
|
267
|
+
toolNode = {
|
|
268
|
+
id: createdTool.id,
|
|
269
|
+
name: t.label,
|
|
270
|
+
displayName: t.label,
|
|
271
|
+
thumbUrl: "",
|
|
272
|
+
previewUrl: "",
|
|
273
|
+
templateId: "",
|
|
274
|
+
icon: "",
|
|
275
|
+
hasChildren: false,
|
|
276
|
+
isComponent: false,
|
|
277
|
+
language: userLang,
|
|
278
|
+
version: 0,
|
|
279
|
+
hasLayout: false,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// Set Function Name
|
|
284
|
+
await editContext.operations.editField({
|
|
285
|
+
field: {
|
|
286
|
+
fieldId: FIELD_FUNCTION_NAME_ID,
|
|
287
|
+
item: { id: toolNode.id, language: userLang, version: 0 },
|
|
288
|
+
},
|
|
289
|
+
value: t.functionName,
|
|
290
|
+
rawValue: t.functionName,
|
|
291
|
+
refresh: "delayed",
|
|
292
|
+
});
|
|
293
|
+
// Set Label
|
|
294
|
+
await editContext.operations.editField({
|
|
295
|
+
field: {
|
|
296
|
+
fieldId: FIELD_LABEL_ID,
|
|
297
|
+
item: { id: toolNode.id, language: userLang, version: 0 },
|
|
298
|
+
},
|
|
299
|
+
value: t.label,
|
|
300
|
+
rawValue: t.label,
|
|
301
|
+
refresh: "delayed",
|
|
302
|
+
});
|
|
303
|
+
// Set Description
|
|
304
|
+
if (t.description) {
|
|
305
|
+
await editContext.operations.editField({
|
|
306
|
+
field: {
|
|
307
|
+
fieldId: FIELD_DESCRIPTION_ID,
|
|
308
|
+
item: { id: toolNode.id, language: userLang, version: 0 },
|
|
309
|
+
},
|
|
310
|
+
value: t.description,
|
|
311
|
+
rawValue: t.description,
|
|
312
|
+
refresh: "delayed",
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
editContext.requestRefresh?.("immediate");
|
|
318
|
+
}
|
|
319
|
+
catch (e) {
|
|
320
|
+
setToolsError(e?.message || "Failed to generate AI tools");
|
|
321
|
+
}
|
|
322
|
+
finally {
|
|
323
|
+
setToolsBusy(false);
|
|
324
|
+
}
|
|
325
|
+
}, [editContext, userLang]);
|
|
326
|
+
return (_jsxs("div", { className: "mt-4 flex items-center gap-2", children: [_jsxs(Button, { size: "sm", variant: "outline", disabled: toolsBusy, onClick: ensureAiToolsAndGenerate, children: [toolsBusy ? (_jsx(RefreshCw, { strokeWidth: 1, className: "h-4 w-4 animate-spin" })) : (_jsx(CheckCircle, { strokeWidth: 1, className: "h-4 w-4" })), "Generate AI tool items"] }), toolsError && _jsx("span", { className: "text-xs text-red-600", children: toolsError })] }));
|
|
7
327
|
}
|
|
8
328
|
//# sourceMappingURL=GenerateToolsSection.js.map
|
package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateToolsSection.js","sourceRoot":"","sources":["../../../../../../src/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"GenerateToolsSection.js","sourceRoot":"","sources":["../../../../../../src/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type StepState = "idle" | "checking" | "success" | "error";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/editor/control-center/setup-steps/AiSetupStep/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ItemTreeNodeData } from "../../../services/contentService";
|
|
2
|
+
import type { ItemDescriptor } from "../../../pageModel";
|
|
3
|
+
export declare function findByName(items: ItemTreeNodeData[], name: string): ItemTreeNodeData | undefined;
|
|
4
|
+
export declare function resolvePathUnderContent(sessionId: string | undefined, userLang: string, names: string[]): Promise<ItemDescriptor | null>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getChildren } from "../../../services/contentService";
|
|
2
|
+
import { contentItemId } from "../../../../config/config";
|
|
3
|
+
export function findByName(items, name) {
|
|
4
|
+
const target = name.toLowerCase();
|
|
5
|
+
return items.find((x) => (x.displayName || x.name || "").toLowerCase() ===
|
|
6
|
+
target);
|
|
7
|
+
}
|
|
8
|
+
export async function resolvePathUnderContent(sessionId, userLang, names) {
|
|
9
|
+
if (!sessionId)
|
|
10
|
+
return null;
|
|
11
|
+
let currentId = contentItemId;
|
|
12
|
+
for (const segment of names) {
|
|
13
|
+
const children = (await getChildren(currentId, sessionId, [], false, userLang, "path"));
|
|
14
|
+
const next = findByName(children, segment);
|
|
15
|
+
if (!next)
|
|
16
|
+
return null;
|
|
17
|
+
currentId = next.id;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
id: currentId,
|
|
21
|
+
language: userLang,
|
|
22
|
+
version: 0,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/editor/control-center/setup-steps/AiSetupStep/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,UAAU,UAAU,CACxB,KAAyB,EACzB,IAAY;IAEZ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,KAAK,CAAC,IAAI,CACf,CAAC,CAAC,EAAE,EAAE,CACH,CAAE,CAAC,CAAC,WAAsB,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAY,CAAC,WAAW,EAAE;QACrE,MAAM,CACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAA6B,EAC7B,QAAgB,EAChB,KAAe;IAEf,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,SAAS,GAAG,aAAa,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,CAAC,MAAM,WAAW,CACjC,SAAS,EACT,SAAS,EACT,EAAE,EACF,KAAK,EACL,QAAQ,EACR,MAAM,CACP,CAAkC,CAAC;QACpC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;IACtB,CAAC;IACD,OAAO;QACL,EAAE,EAAE,SAAS;QACb,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,CAAC;KACO,CAAC;AACtB,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { Badge } from "../../../components/ui/badge";
|
|
|
6
6
|
import { ExternalLink, Link2 } from "lucide-react";
|
|
7
7
|
import { getCombinedIndexStatus } from "../../services/indexService";
|
|
8
8
|
import { useEditContext } from "../../client/editContext";
|
|
9
|
+
import { EmbeddingsModelSection } from "./AiSetupStep/EmbeddingsModelSection";
|
|
9
10
|
export function IndexSetupStep() {
|
|
10
11
|
const [indexCount, setIndexCount] = useState(null);
|
|
11
12
|
const [indexLoading, setIndexLoading] = useState(false);
|
|
@@ -29,7 +30,7 @@ export function IndexSetupStep() {
|
|
|
29
30
|
useEffect(() => {
|
|
30
31
|
loadIndex();
|
|
31
32
|
}, [loadIndex]);
|
|
32
|
-
return (
|
|
33
|
+
return (_jsxs(Card, { icon: _jsx(Link2, { strokeWidth: 1, className: "h-5 w-5" }), title: "Search index", description: "Shows number of indexed items and links to Index panel.", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("div", { className: "flex items-center gap-2", children: _jsxs(Badge, { variant: "outline", children: ["Indexed Items:", " ", indexLoading ? "..." : (indexCount ?? 0).toLocaleString()] }) }), _jsxs(Button, { size: "sm", variant: "outline", onClick: goToIndexPanel, children: [_jsx(ExternalLink, { strokeWidth: 1, className: "h-4 w-4" }), "Open Index"] })] }), _jsx(EmbeddingsModelSection, {})] }));
|
|
33
34
|
}
|
|
34
35
|
export default IndexSetupStep;
|
|
35
36
|
//# sourceMappingURL=IndexSetupStep.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexSetupStep.js","sourceRoot":"","sources":["../../../../src/editor/control-center/setup-steps/IndexSetupStep.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"IndexSetupStep.js","sourceRoot":"","sources":["../../../../src/editor/control-center/setup-steps/IndexSetupStep.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAClE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,uEAAuE;QACvE,WAAW,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,WAAW,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,CAAC;YACH,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,sBAAsB,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,EAAE,WAAW,EAAE,oBAAoB,IAAI,IAAI,CAAC;YAC9D,aAAa,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC;gBAAS,CAAC;YACT,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,MAAC,IAAI,IACH,IAAI,EAAE,KAAC,KAAK,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,SAAS,GAAG,EACnD,KAAK,EAAC,cAAc,EACpB,WAAW,EAAC,yDAAyD,aAErE,eAAK,SAAS,EAAC,yCAAyC,aACtD,cAAK,SAAS,EAAC,yBAAyB,YACtC,MAAC,KAAK,IAAC,OAAO,EAAC,SAAS,+BACP,GAAG,EACjB,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,IACpD,GACJ,EACN,MAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAc,aACzD,KAAC,YAAY,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,SAAS,GAAG,kBAE7C,IACL,EACN,KAAC,sBAAsB,KAAG,IACrB,CACR,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleLineText.js","sourceRoot":"","sources":["../../../src/editor/field-types/SingleLineText.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SingleLineText.js","sourceRoot":"","sources":["../../../src/editor/field-types/SingleLineText.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Splitter, } from "../ui/Splitter";
|
|
3
3
|
import { useEditContext } from "../client/editContext";
|
|
4
|
+
import { useFieldModification } from "../client/fieldModificationStore";
|
|
4
5
|
import { useEffect, useState } from "react";
|
|
5
6
|
import { getLookupSources } from "../services/editService";
|
|
6
7
|
import { SimpleIconButton } from "../ui/SimpleIconButton";
|
|
@@ -17,12 +18,29 @@ export default function TreeListEditor({ field, readOnly, }) {
|
|
|
17
18
|
const [activeOpenButtonId, setActiveOpenButtonId] = useState("");
|
|
18
19
|
const [rootItemIds, setRootItemIds] = useState([]);
|
|
19
20
|
const [values, setValues] = useState([]);
|
|
21
|
+
const [pendingAddedItems, setPendingAddedItems] = useState({});
|
|
22
|
+
const [pendingRemovedIds, setPendingRemovedIds] = useState({});
|
|
20
23
|
const [hoveredItemId, setHoveredItemId] = useState();
|
|
21
24
|
const [hoveredItem, setHoveredItem] = useState();
|
|
22
25
|
const [draggedIndex, setDraggedIndex] = useState(null);
|
|
23
26
|
const [lastClickedIndex, setLastClickedIndex] = useState(null);
|
|
27
|
+
// Track if the field is currently dirty (has local unsaved edits)
|
|
28
|
+
const { isModified, isSaved } = useFieldModification(field.id, field.descriptor.item.id, field.descriptor.item.language, field.descriptor.item.version);
|
|
24
29
|
if (!editContext)
|
|
25
30
|
return;
|
|
31
|
+
// Helper: ensure unique items by normalized id while preserving order (first wins)
|
|
32
|
+
const dedupeById = (items) => {
|
|
33
|
+
const seen = new Set();
|
|
34
|
+
const result = [];
|
|
35
|
+
for (const it of items) {
|
|
36
|
+
const key = normalizeGuid(it.id);
|
|
37
|
+
if (!seen.has(key)) {
|
|
38
|
+
seen.add(key);
|
|
39
|
+
result.push(it);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
26
44
|
// Click outside handler to reset active button
|
|
27
45
|
useEffect(() => {
|
|
28
46
|
const handleClickOutside = () => {
|
|
@@ -48,15 +66,42 @@ export default function TreeListEditor({ field, readOnly, }) {
|
|
|
48
66
|
loadItem();
|
|
49
67
|
}, [hoveredItemId]);
|
|
50
68
|
useEffect(() => {
|
|
51
|
-
//
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
69
|
+
// Ignore server payloads while the field is dirty to avoid race-condition duplicates
|
|
70
|
+
if (isModified && !isSaved)
|
|
71
|
+
return;
|
|
72
|
+
// Reconcile server updates with any local optimistic additions still in-flight
|
|
73
|
+
const serverValues = field.value || [];
|
|
74
|
+
const serverIdsNormalized = new Set(serverValues.map((x) => normalizeGuid(x.id)));
|
|
75
|
+
// Clear pending items that are now present on the server (compare by normalized id)
|
|
76
|
+
let pendingChanged = false;
|
|
77
|
+
const nextPending = { ...pendingAddedItems };
|
|
78
|
+
for (const key of Object.keys(nextPending)) {
|
|
79
|
+
if (serverIdsNormalized.has(key)) {
|
|
80
|
+
delete nextPending[key];
|
|
81
|
+
pendingChanged = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Clear pending-removed ids that the server no longer includes
|
|
85
|
+
let removedChanged = false;
|
|
86
|
+
const nextRemoved = { ...pendingRemovedIds };
|
|
87
|
+
for (const key of Object.keys(nextRemoved)) {
|
|
88
|
+
if (!serverIdsNormalized.has(key)) {
|
|
89
|
+
delete nextRemoved[key];
|
|
90
|
+
removedChanged = true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Build merged list, deduping by normalized id while preserving order (server wins)
|
|
94
|
+
const mergedList = dedupeById([
|
|
95
|
+
...serverValues,
|
|
96
|
+
...Object.values(pendingAddedItems),
|
|
97
|
+
]);
|
|
98
|
+
const filtered = mergedList.filter((x) => !nextRemoved[normalizeGuid(x.id)]);
|
|
99
|
+
setValues(filtered);
|
|
100
|
+
if (pendingChanged)
|
|
101
|
+
setPendingAddedItems(nextPending);
|
|
102
|
+
if (removedChanged)
|
|
103
|
+
setPendingRemovedIds(nextRemoved);
|
|
104
|
+
}, [field.value, pendingAddedItems, pendingRemovedIds, isModified, isSaved]);
|
|
60
105
|
useEffect(() => {
|
|
61
106
|
const loadLookupSources = async () => {
|
|
62
107
|
const datasources = await getLookupSources(field, editContext.sessionId);
|
|
@@ -76,8 +121,27 @@ export default function TreeListEditor({ field, readOnly, }) {
|
|
|
76
121
|
return path;
|
|
77
122
|
};
|
|
78
123
|
async function removeFromList(items) {
|
|
79
|
-
const
|
|
80
|
-
|
|
124
|
+
const idsToRemove = new Set(items.map((i) => normalizeGuid(i.id)));
|
|
125
|
+
const newValues = values.filter((x) => !idsToRemove.has(normalizeGuid(x.id)));
|
|
126
|
+
setValues(dedupeById(newValues));
|
|
127
|
+
// Mask removed items locally until server acknowledges
|
|
128
|
+
if (items.length) {
|
|
129
|
+
setPendingRemovedIds((prev) => {
|
|
130
|
+
const next = { ...prev };
|
|
131
|
+
for (const item of items)
|
|
132
|
+
next[normalizeGuid(item.id)] = true;
|
|
133
|
+
return next;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// Cancel any optimistic additions for items being removed
|
|
137
|
+
if (items.length) {
|
|
138
|
+
setPendingAddedItems((prev) => {
|
|
139
|
+
const next = { ...prev };
|
|
140
|
+
for (const item of items)
|
|
141
|
+
delete next[normalizeGuid(item.id)];
|
|
142
|
+
return next;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
81
145
|
await editContext?.operations.editField({
|
|
82
146
|
field: field.descriptor,
|
|
83
147
|
value: newValues,
|
|
@@ -88,18 +152,40 @@ export default function TreeListEditor({ field, readOnly, }) {
|
|
|
88
152
|
async function addToList(itemNodes) {
|
|
89
153
|
setSelectedItemNodesInTree([]);
|
|
90
154
|
const newValues = [...values];
|
|
155
|
+
const addedNow = [];
|
|
91
156
|
itemNodes.forEach((node) => {
|
|
92
|
-
|
|
93
|
-
|
|
157
|
+
const nodeKey = normalizeGuid(node.id);
|
|
158
|
+
const exists = newValues.some((x) => normalizeGuid(x.id) === nodeKey);
|
|
159
|
+
if (!exists) {
|
|
160
|
+
const item = {
|
|
94
161
|
id: node.id,
|
|
95
162
|
path: node.path || node.name,
|
|
96
163
|
name: node.name,
|
|
97
164
|
icon: node.icon,
|
|
98
165
|
idPath: node.idPath,
|
|
99
|
-
}
|
|
166
|
+
};
|
|
167
|
+
newValues.push(item);
|
|
168
|
+
addedNow.push(item);
|
|
100
169
|
}
|
|
101
170
|
});
|
|
102
|
-
setValues(newValues);
|
|
171
|
+
setValues(dedupeById(newValues));
|
|
172
|
+
if (addedNow.length) {
|
|
173
|
+
setPendingAddedItems((prev) => {
|
|
174
|
+
const next = { ...prev };
|
|
175
|
+
for (const item of addedNow)
|
|
176
|
+
next[normalizeGuid(item.id)] = item;
|
|
177
|
+
return next;
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
// If we are re-adding any id that was pending-removed, clear it from mask
|
|
181
|
+
if (addedNow.length) {
|
|
182
|
+
setPendingRemovedIds((prev) => {
|
|
183
|
+
const next = { ...prev };
|
|
184
|
+
for (const item of addedNow)
|
|
185
|
+
delete next[normalizeGuid(item.id)];
|
|
186
|
+
return next;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
103
189
|
await editContext?.operations.editField({
|
|
104
190
|
field: field.descriptor,
|
|
105
191
|
value: newValues,
|
|
@@ -128,7 +214,7 @@ export default function TreeListEditor({ field, readOnly, }) {
|
|
|
128
214
|
if (!draggedItem)
|
|
129
215
|
return;
|
|
130
216
|
newValues.splice(dropIndex, 0, draggedItem);
|
|
131
|
-
setValues(newValues);
|
|
217
|
+
setValues(dedupeById(newValues));
|
|
132
218
|
setDraggedIndex(null);
|
|
133
219
|
await editContext?.operations.editField({
|
|
134
220
|
field: field.descriptor,
|