@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.
Files changed (136) hide show
  1. package/dist/components/ui/button.d.ts +1 -1
  2. package/dist/components/ui/button.js +1 -0
  3. package/dist/components/ui/button.js.map +1 -1
  4. package/dist/components/ui/context-menu.d.ts +2 -2
  5. package/dist/components/ui/context-menu.js +16 -16
  6. package/dist/components/ui/context-menu.js.map +1 -1
  7. package/dist/editor/Editor.js +1 -1
  8. package/dist/editor/Editor.js.map +1 -1
  9. package/dist/editor/FieldActionsOverlay.js +40 -26
  10. package/dist/editor/FieldActionsOverlay.js.map +1 -1
  11. package/dist/editor/FieldListField.js +1 -1
  12. package/dist/editor/FieldListField.js.map +1 -1
  13. package/dist/editor/LinkEditorDialog.js +1 -1
  14. package/dist/editor/ai/AgentTerminal.js +56 -5
  15. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  16. package/dist/editor/ai/Agents.js +23 -9
  17. package/dist/editor/ai/Agents.js.map +1 -1
  18. package/dist/editor/ai/ContextInfoBar.js +15 -5
  19. package/dist/editor/ai/ContextInfoBar.js.map +1 -1
  20. package/dist/editor/ai/ToolCallDisplay.js +2 -0
  21. package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
  22. package/dist/editor/client/AboutDialog.js +7 -5
  23. package/dist/editor/client/AboutDialog.js.map +1 -1
  24. package/dist/editor/client/EditorShell.js +7 -2
  25. package/dist/editor/client/EditorShell.js.map +1 -1
  26. package/dist/editor/client/editContext.d.ts +2 -2
  27. package/dist/editor/client/hooks/useSocketMessageHandler.js +5 -0
  28. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  29. package/dist/editor/client/itemsRepository.js +1 -0
  30. package/dist/editor/client/itemsRepository.js.map +1 -1
  31. package/dist/editor/control-center/Setup.js +1 -1
  32. package/dist/editor/control-center/Setup.js.map +1 -1
  33. package/dist/editor/control-center/setup-steps/AiSetupStep/EmbeddingsModelSection.d.ts +2 -0
  34. package/dist/editor/control-center/setup-steps/AiSetupStep/EmbeddingsModelSection.js +195 -0
  35. package/dist/editor/control-center/setup-steps/AiSetupStep/EmbeddingsModelSection.js.map +1 -0
  36. package/dist/editor/control-center/setup-steps/AiSetupStep/index.d.ts +0 -1
  37. package/dist/editor/control-center/setup-steps/AiSetupStep/index.js +3 -506
  38. package/dist/editor/control-center/setup-steps/AiSetupStep/index.js.map +1 -1
  39. package/dist/editor/control-center/setup-steps/AiSetupStep/provider/ProviderSection.d.ts +1 -15
  40. package/dist/editor/control-center/setup-steps/AiSetupStep/provider/ProviderSection.js +226 -3
  41. package/dist/editor/control-center/setup-steps/AiSetupStep/provider/ProviderSection.js.map +1 -1
  42. package/dist/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersList.d.ts +1 -1
  43. package/dist/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.d.ts +1 -0
  44. package/dist/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js +94 -0
  45. package/dist/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js.map +1 -0
  46. package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.d.ts +1 -7
  47. package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.js +323 -3
  48. package/dist/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.js.map +1 -1
  49. package/dist/editor/control-center/setup-steps/AiSetupStep/types.d.ts +1 -0
  50. package/dist/editor/control-center/setup-steps/AiSetupStep/types.js +2 -0
  51. package/dist/editor/control-center/setup-steps/AiSetupStep/types.js.map +1 -0
  52. package/dist/editor/control-center/setup-steps/AiSetupStep/utils.d.ts +4 -0
  53. package/dist/editor/control-center/setup-steps/AiSetupStep/utils.js +25 -0
  54. package/dist/editor/control-center/setup-steps/AiSetupStep/utils.js.map +1 -0
  55. package/dist/editor/control-center/setup-steps/IndexSetupStep.js +2 -1
  56. package/dist/editor/control-center/setup-steps/IndexSetupStep.js.map +1 -1
  57. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  58. package/dist/editor/field-types/TreeListEditor.js +102 -16
  59. package/dist/editor/field-types/TreeListEditor.js.map +1 -1
  60. package/dist/editor/field-types/richtext/components/ReactSlate.js +1 -1
  61. package/dist/editor/field-types/richtext/components/SimpleRichTextEditor.js +1 -1
  62. package/dist/editor/menubar/toolbar-sections/EditControls.js +2 -2
  63. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  64. package/dist/editor/menubar/toolbar-sections/InsertControls.js +1 -1
  65. package/dist/editor/menubar/toolbar-sections/InsertControls.js.map +1 -1
  66. package/dist/editor/page-editor-chrome/FrameMenu.js +25 -12
  67. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  68. package/dist/editor/page-editor-chrome/SuggestionHighlighting.js +2 -2
  69. package/dist/editor/page-editor-chrome/SuggestionHighlighting.js.map +1 -1
  70. package/dist/editor/page-viewer/PageViewer.js +2 -1
  71. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  72. package/dist/editor/reviews/Comments.js +4 -4
  73. package/dist/editor/reviews/Comments.js.map +1 -1
  74. package/dist/editor/services/agentService.d.ts +2 -0
  75. package/dist/editor/services/agentService.js.map +1 -1
  76. package/dist/editor/services/aiService.d.ts +1 -0
  77. package/dist/editor/services/aiService.js.map +1 -1
  78. package/dist/editor/sidebar/ComponentTree.js +18 -6
  79. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  80. package/dist/editor/sidebar/Insert.js +1 -1
  81. package/dist/editor/ui/Splitter.js +2 -1
  82. package/dist/editor/ui/Splitter.js.map +1 -1
  83. package/dist/editor/utils.js +0 -1
  84. package/dist/editor/utils.js.map +1 -1
  85. package/dist/page-wizard/steps/MetaDataStep.js +43 -41
  86. package/dist/page-wizard/steps/MetaDataStep.js.map +1 -1
  87. package/dist/page-wizard/steps/SelectStep.js +19 -4
  88. package/dist/page-wizard/steps/SelectStep.js.map +1 -1
  89. package/dist/revision.d.ts +2 -2
  90. package/dist/revision.js +2 -2
  91. package/dist/styles.css +15 -18
  92. package/package.json +1 -1
  93. package/src/components/ui/button.tsx +1 -0
  94. package/src/components/ui/context-menu.tsx +44 -20
  95. package/src/editor/Editor.tsx +1 -1
  96. package/src/editor/FieldActionsOverlay.tsx +113 -91
  97. package/src/editor/FieldListField.tsx +4 -1
  98. package/src/editor/LinkEditorDialog.tsx +1 -1
  99. package/src/editor/ai/AgentTerminal.tsx +84 -4
  100. package/src/editor/ai/Agents.tsx +18 -5
  101. package/src/editor/ai/ContextInfoBar.tsx +22 -6
  102. package/src/editor/ai/ToolCallDisplay.tsx +2 -0
  103. package/src/editor/client/AboutDialog.tsx +22 -17
  104. package/src/editor/client/EditorShell.tsx +8 -2
  105. package/src/editor/client/editContext.ts +2 -2
  106. package/src/editor/client/hooks/useSocketMessageHandler.ts +8 -0
  107. package/src/editor/client/itemsRepository.ts +1 -0
  108. package/src/editor/control-center/Setup.tsx +1 -1
  109. package/src/editor/control-center/setup-steps/AiSetupStep/EmbeddingsModelSection.tsx +296 -0
  110. package/src/editor/control-center/setup-steps/AiSetupStep/index.tsx +7 -660
  111. package/src/editor/control-center/setup-steps/AiSetupStep/provider/ProviderSection.tsx +363 -24
  112. package/src/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersList.tsx +1 -1
  113. package/src/editor/control-center/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.tsx +139 -0
  114. package/src/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.tsx +385 -8
  115. package/src/editor/control-center/setup-steps/AiSetupStep/types.ts +1 -0
  116. package/src/editor/control-center/setup-steps/AiSetupStep/utils.ts +43 -0
  117. package/src/editor/control-center/setup-steps/IndexSetupStep.tsx +2 -0
  118. package/src/editor/field-types/SingleLineText.tsx +0 -9
  119. package/src/editor/field-types/TreeListEditor.tsx +115 -16
  120. package/src/editor/field-types/richtext/components/ReactSlate.tsx +1 -1
  121. package/src/editor/field-types/richtext/components/SimpleRichTextEditor.tsx +1 -1
  122. package/src/editor/menubar/toolbar-sections/EditControls.tsx +2 -2
  123. package/src/editor/menubar/toolbar-sections/InsertControls.tsx +1 -1
  124. package/src/editor/page-editor-chrome/FrameMenu.tsx +81 -68
  125. package/src/editor/page-editor-chrome/SuggestionHighlighting.tsx +5 -5
  126. package/src/editor/page-viewer/PageViewer.tsx +3 -2
  127. package/src/editor/reviews/Comments.tsx +13 -8
  128. package/src/editor/services/agentService.ts +3 -0
  129. package/src/editor/services/aiService.ts +2 -0
  130. package/src/editor/sidebar/ComponentTree.tsx +20 -6
  131. package/src/editor/sidebar/Insert.tsx +1 -1
  132. package/src/editor/ui/Splitter.tsx +2 -2
  133. package/src/editor/utils.ts +0 -1
  134. package/src/page-wizard/steps/MetaDataStep.tsx +61 -50
  135. package/src/page-wizard/steps/SelectStep.tsx +37 -4
  136. 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
- export function GenerateToolsSection(props) {
5
- const { toolsBusy, toolsError, onGenerateTools } = props;
6
- return (_jsxs("div", { className: "mt-4 flex items-center gap-2", children: [_jsxs(Button, { size: "sm", variant: "outline", disabled: toolsBusy, onClick: onGenerateTools, 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 })] }));
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
@@ -1 +1 @@
1
- {"version":3,"file":"GenerateToolsSection.js","sourceRoot":"","sources":["../../../../../../src/editor/control-center/setup-steps/AiSetupStep/tools/GenerateToolsSection.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQtD,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAEzD,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,MAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,eAAe,aAEvB,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,SAAS,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,sBAAsB,GAAG,CAC/D,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,SAAS,GAAG,CACpD,8BAEM,EACR,UAAU,IAAI,eAAM,SAAS,EAAC,sBAAsB,YAAE,UAAU,GAAQ,IACrE,CACP,CAAC;AACJ,CAAC"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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 (_jsx(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"] })] }) }));
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;AAE1D,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,KAAC,IAAI,IACH,IAAI,EAAE,KAAC,KAAK,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,SAAS,GAAG,EACnD,KAAK,EAAC,cAAc,EACpB,WAAW,EAAC,yDAAyD,YAErE,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,GACD,CACR,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,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":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,cAAc,EACd,iBAAiB,EAEjB,uBAAuB,GAExB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAW,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,gBAAgB,GAKjB;IACC,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,gBAAgB,GAAG,uBAAuB,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,2DAA2D;IAC3D,uDAAuD;IACvD,IAAI,CAAC,cAAc,CAAC,OAAO;QAAE,OAAO;IAEpC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAElE,uEAAuE;IACvE,MAAM,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAC5C,KAAK,CAAC,EAAE,EACR,SAAS,CAAC,EAAE,EACZ,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,OAAO,CAClB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,UAAU;gBAAE,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;iBACjD,CAAC;gBACJ,QAAQ,CAAC,aAAa,EAAE,KAAK,IAAK,KAAK,CAAC,KAAgB,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1D,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,MAAM,YAAY,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC9D,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnB,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,CAAyC,EAAE,EAAE;QACjE,MAAM,MAAM,GAAG,CAAC,CAAC,MAA0B,CAAC;QAC5C,MAAM,KAAK,GAAmB;YAC5B,MAAM,EAAE,SAAS,CAAC,EAAE;YACpB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,WAAW,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;YACvC,SAAS,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC;YACnC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CACtB,MAAM,CAAC,cAAc,IAAI,CAAC,EAC1B,MAAM,CAAC,YAAY,IAAI,CAAC,CACzB;SACF,CAAC;QAEF,IACE,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,aAAa,EAAE,IAAI;YAC/C,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC;YACrE,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,aAAa,EAAE,MAAM,EACnD,CAAC;YACD,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;QAC5D,IACE,YAAY,EAAE,OAAO,KAAK,KAAK,CAAC,EAAE;YAClC,YAAY,EAAE,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE;YACtC,YAAY,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;YAClD,YAAY,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,EAChD,CAAC;YACD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC;YACpD,IAAI,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC9B,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBACvE,wCAAwC;gBACxC,oCAAoC;YACtC,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAEjC,6CAA6C;IAC7C,oCAAoC;IACpC,yEAAyE;IAEzE,8BAA8B;IAC9B,2DAA2D;IAC3D,gEAAgE;IAEhE,kDAAkD;IAClD,iDAAiD;IACjD,sEAAsE;IACtE,sCAAsC;IACtC,sCAAsC;IACtC,qCAAqC;IAErC,wCAAwC;IACxC,wEAAwE;IAExE,kCAAkC;IAClC,sDAAsD;IAEtD,qCAAqC;IAErC,aAAa;IACb,6BAA6B;IAC7B,2BAA2B;IAC3B,OAAO;IACP,KAAK;IAEL,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;YAC5D,IACE,CAAC,gBAAgB,CAAC,OAAO,EAAE,yBAAyB;gBACpD,YAAY,EAAE,OAAO,KAAK,KAAK,CAAC,EAAE;gBAClC,YAAY,EAAE,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE;gBACtC,YAAY,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;gBAClD,YAAY,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,EAChD,CAAC;gBACD,6EAA6E;gBAC7E,IACE,QAAQ,CAAC,OAAO;oBAChB,CAAC,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,CAAC,EACrE,CAAC;oBACD,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAI,KAAa,EAAE,gBAAgB,EAAE,MAE1C,CAAC;IACd,MAAM,sBAAsB,GAC1B,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAE9E,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aAUvB,KAAC,SAAS,IACR,GAAG,EAAE,QAAQ,EAEb,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EACxB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,IANjB,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAOrE,EACD,sBAAsB,IAAI,CACzB,iBACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,WAAW,EACjB,SAAS,EAAC,yFAAyF,EACnG,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,YAEvD,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,GAC1C,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
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
- // if (
52
- // editContext.lockedField?.fieldId === field.descriptor.fieldId &&
53
- // editContext.lockedField.item.id == field.descriptor.item.id &&
54
- // editContext.lockedField.item.language == field.descriptor.item.language &&
55
- // editContext.lockedField.item.version == field.descriptor.item.version
56
- // )
57
- // return;
58
- setValues(field.value || []);
59
- }, [field.value]);
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 newValues = values.filter((x) => !items.find((i) => x.id == i.id));
80
- setValues(newValues);
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
- if (!newValues.find((x) => x.id == node.id)) {
93
- newValues.push({
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,