@parhelia/core 0.3.12827 → 0.3.12832

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 (171) hide show
  1. package/dist/editor/agent-changes/agentChangeTargets.d.ts +58 -0
  2. package/dist/editor/agent-changes/agentChangeTargets.js +174 -0
  3. package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
  4. package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +57 -0
  5. package/dist/editor/agent-changes/agentChangeTextHighlight.js +109 -0
  6. package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
  7. package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
  8. package/dist/editor/ai/activityRowNavigation.js +53 -0
  9. package/dist/editor/ai/activityRowNavigation.js.map +1 -0
  10. package/dist/editor/ai/terminal/activeReasoningModel.d.ts +9 -0
  11. package/dist/editor/ai/terminal/activeReasoningModel.js +20 -0
  12. package/dist/editor/ai/terminal/activeReasoningModel.js.map +1 -0
  13. package/dist/editor/ai/terminal/agentDurations.d.ts +27 -0
  14. package/dist/editor/ai/terminal/agentDurations.js +89 -0
  15. package/dist/editor/ai/terminal/agentDurations.js.map +1 -0
  16. package/dist/editor/ai/terminal/agentTurnTiming.d.ts +35 -0
  17. package/dist/editor/ai/terminal/agentTurnTiming.js +128 -0
  18. package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -0
  19. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
  20. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
  21. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
  22. package/dist/editor/ai/terminal/components/AgentProfileRecovery.d.ts +10 -0
  23. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js +12 -0
  24. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js.map +1 -0
  25. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
  26. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
  27. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
  28. package/dist/editor/ai/terminal/components/ResponseTurnDuration.d.ts +15 -0
  29. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +63 -0
  30. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -0
  31. package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
  32. package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
  33. package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
  34. package/dist/editor/ai/terminal/reasoningEffortLevels.d.ts +8 -0
  35. package/dist/editor/ai/terminal/reasoningEffortLevels.js +54 -0
  36. package/dist/editor/ai/terminal/reasoningEffortLevels.js.map +1 -0
  37. package/dist/editor/ai/terminal/requestUsage.d.ts +3 -0
  38. package/dist/editor/ai/terminal/requestUsage.js +22 -0
  39. package/dist/editor/ai/terminal/requestUsage.js.map +1 -0
  40. package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
  41. package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
  42. package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
  43. package/dist/editor/ai/terminal/useAgentReasoningEffortState.d.ts +5 -0
  44. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js +10 -0
  45. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js.map +1 -0
  46. package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
  47. package/dist/editor/bridge/bridgeKeys.js +8 -0
  48. package/dist/editor/bridge/bridgeKeys.js.map +1 -0
  49. package/dist/editor/client/SessionsDialog.d.ts +2 -0
  50. package/dist/editor/client/SessionsDialog.js +27 -0
  51. package/dist/editor/client/SessionsDialog.js.map +1 -0
  52. package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
  53. package/dist/editor/client/agentLoadItemPolicy.js +60 -0
  54. package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
  55. package/dist/editor/client/localUserEditActivity.d.ts +3 -0
  56. package/dist/editor/client/localUserEditActivity.js +12 -0
  57. package/dist/editor/client/localUserEditActivity.js.map +1 -0
  58. package/dist/editor/commands/mediaCommands.d.ts +5 -0
  59. package/dist/editor/commands/mediaCommands.js +59 -0
  60. package/dist/editor/commands/mediaCommands.js.map +1 -0
  61. package/dist/editor/componentVisualMode.d.ts +14 -0
  62. package/dist/editor/componentVisualMode.js +43 -0
  63. package/dist/editor/componentVisualMode.js.map +1 -0
  64. package/dist/editor/field-types/FieldHistoryBoundary.d.ts +7 -0
  65. package/dist/editor/field-types/FieldHistoryBoundary.js +19 -0
  66. package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -0
  67. package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +18 -0
  68. package/dist/editor/field-types/richtext/utils/changeHighlight.js +57 -0
  69. package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
  70. package/dist/editor/itemContextMenuGroups.d.ts +16 -0
  71. package/dist/editor/itemContextMenuGroups.js +48 -0
  72. package/dist/editor/itemContextMenuGroups.js.map +1 -0
  73. package/dist/editor/media-selector/UploadMediaFileDialog.d.ts +5 -0
  74. package/dist/editor/media-selector/UploadMediaFileDialog.js +14 -0
  75. package/dist/editor/media-selector/UploadMediaFileDialog.js.map +1 -0
  76. package/dist/editor/menubar/OpenPublishedPageButton.d.ts +1 -0
  77. package/dist/editor/menubar/OpenPublishedPageButton.js +22 -0
  78. package/dist/editor/menubar/OpenPublishedPageButton.js.map +1 -0
  79. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +20 -0
  80. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +31 -0
  81. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
  82. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +33 -0
  83. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +290 -0
  84. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
  85. package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
  86. package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
  87. package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
  88. package/dist/editor/page-viewer/PreviewModeNotice.d.ts +7 -0
  89. package/dist/editor/page-viewer/PreviewModeNotice.js +19 -0
  90. package/dist/editor/page-viewer/PreviewModeNotice.js.map +1 -0
  91. package/dist/editor/page-viewer/previewEditAttempt.d.ts +31 -0
  92. package/dist/editor/page-viewer/previewEditAttempt.js +68 -0
  93. package/dist/editor/page-viewer/previewEditAttempt.js.map +1 -0
  94. package/dist/editor/services/migrationService.d.ts +31 -0
  95. package/dist/editor/services/migrationService.js +22 -0
  96. package/dist/editor/services/migrationService.js.map +1 -0
  97. package/dist/editor/services/publicSiteService.d.ts +40 -0
  98. package/dist/editor/services/publicSiteService.js +5 -0
  99. package/dist/editor/services/publicSiteService.js.map +1 -0
  100. package/dist/editor/settings/MigrationJournalCard.d.ts +12 -0
  101. package/dist/editor/settings/MigrationJournalCard.js +114 -0
  102. package/dist/editor/settings/MigrationJournalCard.js.map +1 -0
  103. package/dist/editor/settings/panels/PublicSiteEntryDialog.d.ts +8 -0
  104. package/dist/editor/settings/panels/PublicSiteEntryDialog.js +113 -0
  105. package/dist/editor/settings/panels/PublicSiteEntryDialog.js.map +1 -0
  106. package/dist/editor/settings/panels/PublicSitesPanel.d.ts +1 -0
  107. package/dist/editor/settings/panels/PublicSitesPanel.js +153 -0
  108. package/dist/editor/settings/panels/PublicSitesPanel.js.map +1 -0
  109. package/dist/editor/settings/panels/publicSiteHelpers.d.ts +6 -0
  110. package/dist/editor/settings/panels/publicSiteHelpers.js +30 -0
  111. package/dist/editor/settings/panels/publicSiteHelpers.js.map +1 -0
  112. package/dist/editor/sidebar/OperationDetailsContent.d.ts +14 -0
  113. package/dist/editor/sidebar/OperationDetailsContent.js +521 -0
  114. package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -0
  115. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +53 -0
  116. package/dist/editor/sidebar/liveComponentThumbnails.js +204 -0
  117. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
  118. package/dist/editor/ui/PublishReadinessSummary.d.ts +12 -0
  119. package/dist/editor/ui/PublishReadinessSummary.js +34 -0
  120. package/dist/editor/ui/PublishReadinessSummary.js.map +1 -0
  121. package/dist/editor/ui/publishReadiness.d.ts +98 -0
  122. package/dist/editor/ui/publishReadiness.js +307 -0
  123. package/dist/editor/ui/publishReadiness.js.map +1 -0
  124. package/dist/editor/ui/usePublishingItem.d.ts +8 -0
  125. package/dist/editor/ui/usePublishingItem.js +47 -0
  126. package/dist/editor/ui/usePublishingItem.js.map +1 -0
  127. package/dist/editor/utils/linkDisplay.d.ts +12 -0
  128. package/dist/editor/utils/linkDisplay.js +23 -0
  129. package/dist/editor/utils/linkDisplay.js.map +1 -0
  130. package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
  131. package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
  132. package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
  133. package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
  134. package/dist/editor/validation/navigateToValidationIssue.js +43 -0
  135. package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
  136. package/dist/editor/validation/validationFixAgent.d.ts +26 -0
  137. package/dist/editor/validation/validationFixAgent.js +124 -0
  138. package/dist/editor/validation/validationFixAgent.js.map +1 -0
  139. package/dist/editor/validation/validationSeverity.d.ts +15 -0
  140. package/dist/editor/validation/validationSeverity.js +47 -0
  141. package/dist/editor/validation/validationSeverity.js.map +1 -0
  142. package/dist/lib/viewportClip.d.ts +18 -0
  143. package/dist/lib/viewportClip.js +22 -0
  144. package/dist/lib/viewportClip.js.map +1 -0
  145. package/dist/revision.d.ts +2 -2
  146. package/dist/revision.js +2 -2
  147. package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
  148. package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
  149. package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
  150. package/dist/task-board/components/commentAuthor.d.ts +14 -0
  151. package/dist/task-board/components/commentAuthor.js +25 -0
  152. package/dist/task-board/components/commentAuthor.js.map +1 -0
  153. package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
  154. package/dist/task-board/utils/projectDashboardModel.js +355 -0
  155. package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
  156. package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
  157. package/dist/task-board/views/ProjectDashboardView.js +316 -0
  158. package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
  159. package/dist/tour/TourInputBoundary.d.ts +6 -0
  160. package/dist/tour/TourInputBoundary.js +82 -0
  161. package/dist/tour/TourInputBoundary.js.map +1 -0
  162. package/dist/tour/sandbox-tour-copy.d.ts +48 -0
  163. package/dist/tour/sandbox-tour-copy.js +48 -0
  164. package/dist/tour/sandbox-tour-copy.js.map +1 -0
  165. package/dist/tour/sandbox-tour.d.ts +3 -0
  166. package/dist/tour/sandbox-tour.js +212 -0
  167. package/dist/tour/sandbox-tour.js.map +1 -0
  168. package/dist/tour/tour-utils.d.ts +32 -0
  169. package/dist/tour/tour-utils.js +148 -0
  170. package/dist/tour/tour-utils.js.map +1 -0
  171. package/package.json +1 -1
@@ -0,0 +1,521 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Fragment } from "react";
3
+ import { Loader2 } from "lucide-react";
4
+ import { formatDate } from "../utils";
5
+ import { ValueDiff } from "../ai/terminal/components/ValueDiff";
6
+ import { toDisplayString } from "../ai/terminal/components/EditFieldToolCallContent";
7
+ /** Keys shared by every operation; rendered in the header block, never as raw details. */
8
+ const COMMON_DETAIL_KEYS = new Set([
9
+ "type",
10
+ "date",
11
+ "id",
12
+ "user",
13
+ "undone",
14
+ "sessionId",
15
+ "title",
16
+ "description",
17
+ "canUndo",
18
+ "canRedo",
19
+ "undoSupported",
20
+ "undoNotSupportedReason",
21
+ "focus",
22
+ "mainItem",
23
+ "mainItemPath",
24
+ "agentId",
25
+ "toolCallId",
26
+ "executionStatus",
27
+ "statusMessage",
28
+ "progress",
29
+ "executionStarted",
30
+ "executionCompleted",
31
+ "errorMessage",
32
+ ]);
33
+ const MAX_DETAIL_VALUE_LENGTH = 1600;
34
+ export function formatDetailLabel(key) {
35
+ return key
36
+ .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
37
+ .replace(/[-_]+/g, " ")
38
+ .replace(/\b\w/g, (letter) => letter.toUpperCase());
39
+ }
40
+ function isEmptyDetailValue(value) {
41
+ return (value === undefined ||
42
+ value === null ||
43
+ value === "" ||
44
+ (Array.isArray(value) && value.length === 0));
45
+ }
46
+ function formatDetailValue(value) {
47
+ let text = typeof value === "string" ? value : JSON.stringify(value, null, 2) || "";
48
+ if (text.length > MAX_DETAIL_VALUE_LENGTH) {
49
+ text = `${text.slice(0, MAX_DETAIL_VALUE_LENGTH)}...`;
50
+ }
51
+ return text;
52
+ }
53
+ export function getOperationDate(o) {
54
+ if (!o.date) {
55
+ return "";
56
+ }
57
+ const date = new Date(o.date);
58
+ if (isNaN(date.getTime())) {
59
+ return "";
60
+ }
61
+ return formatDate(date);
62
+ }
63
+ function describeItem(item) {
64
+ if (!item)
65
+ return "";
66
+ const label = item.displayName || item.name || item.path || item.id;
67
+ const suffix = [item.language, item.version > 0 ? `v${item.version}` : ""]
68
+ .filter(Boolean)
69
+ .join(", ");
70
+ return suffix ? `${label} (${suffix})` : label;
71
+ }
72
+ function yesNo(value) {
73
+ return value ? "Yes" : "No";
74
+ }
75
+ function tryPrettyJson(value) {
76
+ try {
77
+ return JSON.stringify(JSON.parse(value), null, 2);
78
+ }
79
+ catch {
80
+ return value;
81
+ }
82
+ }
83
+ function containsMarkup(value) {
84
+ return /<[a-z][\s\S]*>/i.test(value);
85
+ }
86
+ function Mono({ children }) {
87
+ return _jsx("span", { className: "font-mono break-all", children: children });
88
+ }
89
+ function IdList({ ids }) {
90
+ if (!ids?.length)
91
+ return null;
92
+ return (_jsx("ul", { className: "space-y-0.5", children: ids.map((id) => (_jsx("li", { children: _jsx(Mono, { children: id }) }, id))) }));
93
+ }
94
+ function ItemList({ items }) {
95
+ const entries = (items ?? []).filter((item) => !!item);
96
+ if (!entries.length)
97
+ return null;
98
+ return (_jsx("ul", { className: "space-y-0.5", children: entries.map((item, index) => (_jsx("li", { children: describeItem(item) }, `${item.id}-${item.language}-${item.version}-${index}`))) }));
99
+ }
100
+ function CodeBlock({ children, testId, }) {
101
+ return (_jsx("pre", { className: "border-border-default bg-background text-neutral-grey-100 max-h-48 overflow-auto rounded border p-1.5 font-mono text-[10px] leading-snug whitespace-pre-wrap", "data-testid": testId, children: children }));
102
+ }
103
+ function ParameterDiffTable({ parameters, previousParameters, }) {
104
+ const keys = Array.from(new Set([
105
+ ...Object.keys(previousParameters ?? {}),
106
+ ...Object.keys(parameters ?? {}),
107
+ ])).sort();
108
+ if (keys.length === 0)
109
+ return null;
110
+ return (_jsx("div", { className: "border-border-default overflow-hidden rounded border", "data-testid": "operation-details-parameters", children: _jsxs("table", { className: "w-full table-fixed border-collapse text-[10px]", children: [_jsx("thead", { className: "bg-neutral-grey-5 text-neutral-grey-50", children: _jsxs("tr", { children: [_jsx("th", { className: "w-1/3 px-1.5 py-1 text-left font-normal", children: "Parameter" }), previousParameters && (_jsx("th", { className: "px-1.5 py-1 text-left font-normal", children: "Before" })), _jsx("th", { className: "px-1.5 py-1 text-left font-normal", children: previousParameters ? "After" : "Value" })] }) }), _jsx("tbody", { children: keys.map((key) => {
111
+ const before = previousParameters?.[key];
112
+ const after = parameters?.[key];
113
+ const changed = previousParameters !== undefined && before !== after;
114
+ return (_jsxs("tr", { className: "border-border-default border-t align-top", "data-changed": changed || undefined, children: [_jsx("td", { className: "text-neutral-grey-100 px-1.5 py-1 break-all", children: key }), previousParameters && (_jsx("td", { className: "text-neutral-grey-50 px-1.5 py-1 break-all", children: before === null || before === undefined ? (_jsx("span", { className: "italic", children: "empty" })) : (before) })), _jsx("td", { className: changed
115
+ ? "text-neutral-grey-100 bg-feedback-green-light/40 px-1.5 py-1 break-all"
116
+ : "text-neutral-grey-100 px-1.5 py-1 break-all", children: after === null || after === undefined ? (_jsx("span", { className: "italic", children: "removed" })) : (after) })] }, key));
117
+ }) })] }) }));
118
+ }
119
+ function getOperationSpecifics(operation) {
120
+ switch (operation.type) {
121
+ case "edit-field": {
122
+ const o = operation;
123
+ // Populated by the server for live operations but not part of the client type.
124
+ const itemNameValue = o.itemName;
125
+ const itemName = typeof itemNameValue === "string" && itemNameValue.trim()
126
+ ? itemNameValue
127
+ : undefined;
128
+ const oldValue = toDisplayString(o.oldValue);
129
+ const newValue = toDisplayString(o.value);
130
+ const hasMarkup = /rich/i.test(o.fieldType ?? "") ||
131
+ containsMarkup(oldValue) ||
132
+ containsMarkup(newValue);
133
+ return {
134
+ facts: [
135
+ { label: "Field", value: o.fieldName || o.fieldId },
136
+ ...(o.fieldType ? [{ label: "Field type", value: o.fieldType }] : []),
137
+ ...(itemName ? [{ label: "On item", value: itemName }] : []),
138
+ ],
139
+ body: (_jsx(ValueDiff, { oldValue: oldValue, newValue: newValue, defaultMode: hasMarkup ? "rendered" : "raw", clipUnchanged: true, clipThreshold: 80, clipContext: 20 })),
140
+ consumed: [
141
+ "fieldName",
142
+ "fieldId",
143
+ "fieldType",
144
+ "itemId",
145
+ "itemName",
146
+ "value",
147
+ "oldValue",
148
+ ],
149
+ };
150
+ }
151
+ case "rename-item": {
152
+ const o = operation;
153
+ return {
154
+ facts: [
155
+ ...(o.oldName ? [{ label: "Old name", value: o.oldName }] : []),
156
+ { label: "New name", value: o.newName },
157
+ ],
158
+ consumed: ["oldName", "newName", "item", "itemId"],
159
+ };
160
+ }
161
+ case "change-template": {
162
+ const o = operation;
163
+ return {
164
+ facts: [
165
+ ...(o.oldTemplateId
166
+ ? [{ label: "Old template", value: _jsx(Mono, { children: o.oldTemplateId }) }]
167
+ : []),
168
+ { label: "New template", value: _jsx(Mono, { children: o.newTemplateId }) },
169
+ ],
170
+ consumed: ["oldTemplateId", "newTemplateId", "itemId"],
171
+ };
172
+ }
173
+ case "create-item": {
174
+ const o = operation;
175
+ return {
176
+ facts: [
177
+ { label: "Name", value: o.name },
178
+ { label: "Template", value: _jsx(Mono, { children: o.templateId }) },
179
+ ...(o.branchId
180
+ ? [{ label: "Branch", value: _jsx(Mono, { children: o.branchId }) }]
181
+ : []),
182
+ { label: "Parent", value: _jsx(Mono, { children: o.parentId }) },
183
+ ...(o.createdItemId
184
+ ? [{ label: "Created item", value: _jsx(Mono, { children: o.createdItemId }) }]
185
+ : []),
186
+ ],
187
+ consumed: [
188
+ "name",
189
+ "templateId",
190
+ "branchId",
191
+ "parentId",
192
+ "createdItemId",
193
+ "createdItemIds",
194
+ ],
195
+ };
196
+ }
197
+ case "delete-items": {
198
+ const o = operation;
199
+ return {
200
+ facts: [
201
+ { label: "Items", value: _jsx(ItemList, { items: o.items }) },
202
+ { label: "Hard delete", value: yesNo(o.hardDelete) },
203
+ ],
204
+ consumed: ["items", "hardDelete"],
205
+ };
206
+ }
207
+ case "move-items": {
208
+ const o = operation;
209
+ return {
210
+ facts: [
211
+ { label: "Items", value: _jsx(IdList, { ids: o.itemIds }) },
212
+ { label: "Target parent", value: _jsx(Mono, { children: o.targetParentId }) },
213
+ ...(o.targetIndex !== undefined
214
+ ? [{ label: "Position", value: String(o.targetIndex) }]
215
+ : []),
216
+ ],
217
+ consumed: [
218
+ "itemIds",
219
+ "targetParentId",
220
+ "targetIndex",
221
+ "originalParentIds",
222
+ "sourceItemIds",
223
+ ],
224
+ };
225
+ }
226
+ case "copy-items":
227
+ case "clone-items": {
228
+ const o = operation;
229
+ return {
230
+ facts: [
231
+ { label: "Sources", value: _jsx(IdList, { ids: o.sourceItemIds }) },
232
+ { label: "Target parent", value: _jsx(Mono, { children: o.targetParentId }) },
233
+ ...(o.name ? [{ label: "Name", value: o.name }] : []),
234
+ ...("copyChildren" in o && o.copyChildren !== undefined
235
+ ? [{ label: "Include children", value: yesNo(o.copyChildren) }]
236
+ : []),
237
+ ...(o.createdItemIds?.length
238
+ ? [{ label: "Created", value: _jsx(IdList, { ids: o.createdItemIds }) }]
239
+ : []),
240
+ ],
241
+ consumed: [
242
+ "sourceItemIds",
243
+ "targetParentId",
244
+ "targetIndex",
245
+ "name",
246
+ "copyChildren",
247
+ "createdItemIds",
248
+ ],
249
+ };
250
+ }
251
+ case "add-component": {
252
+ const o = operation;
253
+ return {
254
+ facts: [
255
+ { label: "Component type", value: _jsx(Mono, { children: o.componentTypeId }) },
256
+ { label: "Placeholder", value: o.placeholderKey },
257
+ { label: "Position", value: String(o.placeholderIndex) },
258
+ ...(o.componentId
259
+ ? [{ label: "Component", value: _jsx(Mono, { children: o.componentId }) }]
260
+ : []),
261
+ ...(o.addToSharedLayout
262
+ ? [{ label: "Shared layout", value: "Yes" }]
263
+ : []),
264
+ ],
265
+ consumed: [
266
+ "componentTypeId",
267
+ "placeholderKey",
268
+ "placeholderIndex",
269
+ "componentId",
270
+ "addToSharedLayout",
271
+ ],
272
+ };
273
+ }
274
+ case "remove-component": {
275
+ const o = operation;
276
+ return {
277
+ facts: [
278
+ { label: "Components", value: _jsx(IdList, { ids: o.componentIds }) },
279
+ ...(o.deleteSharedDatasources
280
+ ? [{ label: "Shared content", value: "Deleted" }]
281
+ : []),
282
+ ],
283
+ consumed: ["componentIds", "deleteSharedDatasources"],
284
+ };
285
+ }
286
+ case "move-component": {
287
+ const o = operation;
288
+ return {
289
+ facts: [
290
+ { label: "Components", value: _jsx(IdList, { ids: o.componentIds }) },
291
+ { label: "Placeholder", value: o.placeholderKey },
292
+ { label: "Position", value: String(o.placeholderIndex) },
293
+ ],
294
+ consumed: ["componentIds", "placeholderKey", "placeholderIndex"],
295
+ };
296
+ }
297
+ case "duplicate-components": {
298
+ const o = operation;
299
+ return {
300
+ facts: [
301
+ { label: "Sources", value: _jsx(IdList, { ids: o.sourceComponentIds }) },
302
+ { label: "Duplicates", value: _jsx(IdList, { ids: o.componentIds }) },
303
+ ],
304
+ consumed: ["sourceComponentIds", "componentIds"],
305
+ };
306
+ }
307
+ case "link-component": {
308
+ const o = operation;
309
+ return {
310
+ facts: [
311
+ ...(o.itemName ? [{ label: "Name", value: o.itemName }] : []),
312
+ {
313
+ label: "Linked item",
314
+ value: describeItem(o.linkedComponentItem),
315
+ },
316
+ ],
317
+ consumed: ["itemName", "linkedComponentItem"],
318
+ };
319
+ }
320
+ case "synchronize-components": {
321
+ const o = operation;
322
+ return {
323
+ facts: [
324
+ {
325
+ label: "Placeholders",
326
+ value: (_jsx("ul", { className: "space-y-0.5", children: (o.placeholders ?? []).map((placeholder, index) => (_jsxs("li", { children: [placeholder.name || "(unnamed)", placeholder.item
327
+ ? ` – ${describeItem(placeholder.item)}`
328
+ : ""] }, `${placeholder.name}-${index}`))) })),
329
+ },
330
+ { label: "Delete extra", value: yesNo(o.delete) },
331
+ ...(o.itemsCreated?.length
332
+ ? [{ label: "Created", value: _jsx(ItemList, { items: o.itemsCreated }) }]
333
+ : []),
334
+ ],
335
+ consumed: ["placeholders", "delete", "itemsCreated"],
336
+ };
337
+ }
338
+ case "add-version": {
339
+ const o = operation;
340
+ return {
341
+ facts: [
342
+ { label: "Item", value: describeItem(o.item) },
343
+ ...(o.newVersion
344
+ ? [{ label: "New version", value: `v${o.newVersion}` }]
345
+ : []),
346
+ ],
347
+ consumed: ["item", "newVersion"],
348
+ };
349
+ }
350
+ case "remove-version": {
351
+ const o = operation;
352
+ return {
353
+ facts: [
354
+ { label: "Item", value: describeItem(o.item) },
355
+ { label: "Removed version", value: `v${o.version}` },
356
+ ],
357
+ consumed: ["item", "version"],
358
+ };
359
+ }
360
+ case "convert-to-shared": {
361
+ const o = operation;
362
+ return {
363
+ facts: [
364
+ { label: "Component", value: _jsx(Mono, { children: o.componentId }) },
365
+ ...(o.targetFolderId
366
+ ? [
367
+ {
368
+ label: "Target folder",
369
+ value: _jsx(Mono, { children: o.targetFolderId }),
370
+ },
371
+ ]
372
+ : []),
373
+ ],
374
+ consumed: ["componentId", "targetFolderId"],
375
+ };
376
+ }
377
+ case "publish-item": {
378
+ const o = operation;
379
+ return {
380
+ facts: [
381
+ { label: "Item", value: describeItem(o.item) },
382
+ ...(o.items?.length && o.items.length > 1
383
+ ? [{ label: "Batch", value: `${o.items.length} items` }]
384
+ : []),
385
+ {
386
+ label: "Targets",
387
+ value: (o.publishedTargets ?? o.targetDatabases ?? []).join(", "),
388
+ },
389
+ {
390
+ label: "Languages",
391
+ value: (o.publishedLanguages ?? o.languages ?? []).join(", "),
392
+ },
393
+ { label: "Mode", value: o.publishMode },
394
+ { label: "Subitems", value: yesNo(o.includeSubitems) },
395
+ { label: "Related items", value: yesNo(o.publishRelatedItems) },
396
+ ],
397
+ consumed: [
398
+ "item",
399
+ "items",
400
+ "targetDatabases",
401
+ "languages",
402
+ "publishMode",
403
+ "includeSubitems",
404
+ "publishRelatedItems",
405
+ "publishedTargets",
406
+ "publishedLanguages",
407
+ ],
408
+ };
409
+ }
410
+ case "import-items": {
411
+ const o = operation;
412
+ const results = o.results ?? [];
413
+ return {
414
+ facts: [
415
+ { label: "Target", value: describeItem(o.targetItem) },
416
+ ...(o.summary ? [{ label: "Summary", value: o.summary }] : []),
417
+ ...(o.successCount !== undefined || o.failureCount !== undefined
418
+ ? [
419
+ {
420
+ label: "Result",
421
+ value: `${o.successCount ?? 0} imported, ${o.failureCount ?? 0} failed`,
422
+ },
423
+ ]
424
+ : []),
425
+ ...(o.restoreToOriginalParents
426
+ ? [{ label: "Restore parents", value: "Yes" }]
427
+ : []),
428
+ ],
429
+ body: results.length ? (_jsx("ul", { className: "space-y-0.5 text-[10px]", "data-testid": "operation-details-import-results", children: results.map((result) => (_jsxs("li", { className: result.success ? "text-neutral-grey-100" : "text-feedback-red", children: [result.success ? "✓" : "✕", " ", result.itemName || result.itemPath, result.errorMessage ? ` – ${result.errorMessage}` : ""] }, `${result.itemId}-${result.itemPath}`))) })) : undefined,
430
+ consumed: [
431
+ "targetItem",
432
+ "yaml",
433
+ "restoreToOriginalParents",
434
+ "createdItemIds",
435
+ "successCount",
436
+ "failureCount",
437
+ "results",
438
+ "summary",
439
+ ],
440
+ };
441
+ }
442
+ case "update-rendering-parameters": {
443
+ const o = operation;
444
+ return {
445
+ facts: [{ label: "Component", value: _jsx(Mono, { children: o.componentId }) }],
446
+ body: (_jsx(ParameterDiffTable, { parameters: o.parameters ?? {}, previousParameters: o.previousParameters })),
447
+ consumed: ["componentId", "parameters", "previousParameters"],
448
+ };
449
+ }
450
+ case "update-rendering-rules": {
451
+ const o = operation;
452
+ return {
453
+ facts: [{ label: "Component", value: _jsx(Mono, { children: o.componentId }) }],
454
+ body: (_jsxs("div", { className: "space-y-1.5", children: [o.previousRulesXml && (_jsxs("div", { children: [_jsx("div", { className: "text-neutral-grey-50 mb-0.5 text-[10px]", children: "Previous rules" }), _jsx(CodeBlock, { testId: "operation-details-previous-rules", children: formatDetailValue(o.previousRulesXml) })] })), _jsxs("div", { children: [_jsx("div", { className: "text-neutral-grey-50 mb-0.5 text-[10px]", children: "New rules" }), _jsx(CodeBlock, { testId: "operation-details-new-rules", children: formatDetailValue(tryPrettyJson(o.rulesJson ?? "")) })] })] })),
455
+ consumed: ["componentId", "rulesJson", "previousRulesXml"],
456
+ };
457
+ }
458
+ default:
459
+ return { facts: [], consumed: [] };
460
+ }
461
+ }
462
+ function FactRows({ facts }) {
463
+ const visible = facts.filter((fact) => fact.value !== null && fact.value !== undefined && fact.value !== "");
464
+ if (visible.length === 0)
465
+ return null;
466
+ return (_jsx("div", { className: "grid grid-cols-[88px_minmax(0,1fr)] gap-x-2 gap-y-1 text-[10px]", children: visible.map((fact) => (_jsxs(Fragment, { children: [_jsx("div", { className: "text-neutral-grey-50", children: fact.label }), _jsx("div", { className: "text-neutral-grey-100 min-w-0 break-words", children: fact.value })] }, fact.label))) }));
467
+ }
468
+ /**
469
+ * Structured details for one edit operation: common metadata, a per-type
470
+ * summary (field diff, parameter table, item lists, ...) and a raw fallback
471
+ * for any properties the per-type summary does not cover.
472
+ */
473
+ export function OperationDetailsContent({ operation, loading, error, }) {
474
+ if (loading) {
475
+ return (_jsxs("div", { className: "text-neutral-grey-50 flex items-center gap-2 text-[10px]", "data-testid": "operation-details-loading", children: [_jsx(Loader2, { strokeWidth: 1, className: "h-3 w-3 animate-spin" }), "Loading details..."] }));
476
+ }
477
+ if (!operation) {
478
+ return error ? (_jsx("div", { className: "text-feedback-red text-[10px]", "data-testid": "operation-details-error", children: error })) : null;
479
+ }
480
+ const specifics = getOperationSpecifics(operation);
481
+ const consumed = new Set(specifics.consumed);
482
+ const rawDetails = Object.entries(operation).filter(([key, value]) => !COMMON_DETAIL_KEYS.has(key) &&
483
+ !consumed.has(key) &&
484
+ !isEmptyDetailValue(value));
485
+ const commonFacts = [
486
+ { label: "Type", value: operation.type },
487
+ { label: "Date", value: getOperationDate(operation) },
488
+ {
489
+ label: "Item",
490
+ value: operation.mainItemPath ? (_jsx("span", { className: "break-all", title: operation.mainItemPath, children: operation.mainItemPath })) : (operation.mainItem?.id && _jsx(Mono, { children: operation.mainItem.id })),
491
+ },
492
+ {
493
+ label: "Version",
494
+ value: operation.mainItem
495
+ ? `${operation.mainItem.language}, v${operation.mainItem.version}`
496
+ : "",
497
+ },
498
+ { label: "User", value: operation.user?.name ?? "" },
499
+ {
500
+ label: "Undo",
501
+ value: operation.undoSupported === false
502
+ ? operation.undoNotSupportedReason || "Not undoable"
503
+ : operation.undone
504
+ ? "Undone"
505
+ : "",
506
+ },
507
+ {
508
+ label: "Status",
509
+ value: operation.executionStatus && operation.executionStatus !== "completed"
510
+ ? `${operation.executionStatus}${operation.statusMessage ? ` - ${operation.statusMessage}` : ""}`
511
+ : "",
512
+ },
513
+ {
514
+ label: "Error",
515
+ value: operation.errorMessage ? (_jsx("span", { className: "text-feedback-red", children: operation.errorMessage })) : (""),
516
+ },
517
+ { label: "ID", value: _jsx(Mono, { children: operation.id }) },
518
+ ];
519
+ return (_jsxs("div", { className: "space-y-2", "data-testid": "operation-details-content", children: [error && (_jsx("div", { className: "text-feedback-red text-[10px]", "data-testid": "operation-details-error", children: error })), _jsx("div", { className: "text-neutral-grey-100 text-xs font-medium", children: operation.title }), operation.description && (_jsx("div", { className: "text-neutral-grey-50 text-[10px]", children: operation.description })), _jsx(FactRows, { facts: commonFacts }), (specifics.facts.length > 0 || specifics.body) && (_jsxs("div", { className: "border-border-default space-y-2 border-t pt-2", children: [_jsx(FactRows, { facts: specifics.facts }), specifics.body] })), rawDetails.length > 0 && (_jsx("div", { className: "border-border-default space-y-1 border-t pt-2", "data-testid": "operation-details-raw", children: rawDetails.map(([key, value]) => (_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-neutral-grey-50 mb-0.5 text-[10px]", children: formatDetailLabel(key) }), _jsx(CodeBlock, { children: formatDetailValue(value) })] }, key))) }))] }));
520
+ }
521
+ //# sourceMappingURL=OperationDetailsContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationDetailsContent.js","sourceRoot":"","sources":["../../../src/editor/sidebar/OperationDetailsContent.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { type CSSProperties } from "react";
2
+ import type { PageSnapshotResultEventPayload } from "../bridge/protocol";
3
+ import type { PageViewContext } from "../page-viewer/pageViewContext";
4
+ export type ThumbnailRect = {
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ };
10
+ /**
11
+ * One raster of the whole page plus the component boxes inside it. Rows crop
12
+ * their own thumbnail out of the shared image with CSS background positioning,
13
+ * so a page with thirty components costs one capture and zero canvases here.
14
+ */
15
+ export type LiveComponentThumbnailSheet = {
16
+ imageUrl: string;
17
+ /** CSS pixel size of the captured page; rects share this space. */
18
+ width: number;
19
+ height: number;
20
+ rects: Map<string, ThumbnailRect>;
21
+ };
22
+ /** Quiet time after the last host DOM mutation before the page is recaptured. */
23
+ export declare const LIVE_THUMBNAIL_DEBOUNCE_MS = 1200;
24
+ /** Delay for the first capture after thumbnails are switched on. */
25
+ export declare const LIVE_THUMBNAIL_INITIAL_DELAY_MS = 300;
26
+ /** Longest canvas side the host renders; thumbnails never need more. */
27
+ export declare const LIVE_THUMBNAIL_MAX_DIMENSION = 3000;
28
+ export declare function buildThumbnailSheet(payload: PageSnapshotResultEventPayload, imageUrl: string): LiveComponentThumbnailSheet;
29
+ export declare function findThumbnailRect(sheet: LiveComponentThumbnailSheet, componentId: string | null | undefined): ThumbnailRect | null;
30
+ /**
31
+ * CSS that shows exactly one component's crop of the sheet inside a box of the
32
+ * given size. Always fits the entire component, including tall modules in a
33
+ * narrow viewport. Clip the shared page image to the component's bounds so
34
+ * neighboring components cannot show through the unused space.
35
+ */
36
+ export declare function getThumbnailBackgroundStyle(sheet: LiveComponentThumbnailSheet, rect: ThumbnailRect, box: {
37
+ width: number;
38
+ height: number;
39
+ }): CSSProperties;
40
+ /**
41
+ * Turns the host's data URL into an object URL so thirty rows reference one
42
+ * short blob URL instead of each inlining a megabyte of base64 into their
43
+ * style attribute. Falls back to the data URL where object URLs are missing.
44
+ */
45
+ export declare function toThumbnailImageUrl(dataUrl: string): string;
46
+ /**
47
+ * Keeps a fresh page sheet while `enabled`: captures shortly after switching
48
+ * on, then again a little after every burst of host DOM mutations (typing,
49
+ * inserts, reorders, refreshes). Only one capture runs at a time; changes that
50
+ * arrive mid-capture queue exactly one follow-up. Returns null until the first
51
+ * capture lands, or when the bridge is unavailable.
52
+ */
53
+ export declare function useLiveComponentThumbnails(pageViewContext: PageViewContext | undefined, enabled: boolean): LiveComponentThumbnailSheet | null;