@parhelia/core 0.3.12771 → 0.3.12788
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/agents-view/AgentCard.js +1 -5
- package/dist/agents-view/AgentCard.js.map +1 -1
- package/dist/agents-view/AgentsView.js +1 -1
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/components/ActionButton.d.ts +7 -0
- package/dist/components/ActionButton.js +2 -2
- package/dist/components/ActionButton.js.map +1 -1
- package/dist/components/MarkdownDisplay.js +1 -1
- package/dist/components/ui/CardConnector.js +1 -1
- package/dist/components/ui/LanguageSelectionGrid.js +1 -1
- package/dist/components/ui/LanguageSelector.js +3 -3
- package/dist/components/ui/LanguageSelector.js.map +1 -1
- package/dist/components/ui/PlaceholderItemSelector.js +1 -1
- package/dist/components/ui/alert.d.ts +1 -1
- package/dist/components/ui/button.d.ts +2 -2
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/close-button.d.ts +1 -1
- package/dist/components/ui/context-menu.js +1 -1
- package/dist/components/ui/copy-button.js +1 -1
- package/dist/components/ui/delete-button.d.ts +1 -1
- package/dist/components/ui/paste-button.js +1 -1
- package/dist/components/ui/popover.d.ts +1 -0
- package/dist/components/ui/popover.js +16 -7
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/sonner.js +1 -1
- package/dist/components/ui/upload-button.js +1 -1
- package/dist/config/config.js +18 -4
- package/dist/config/config.js.map +1 -1
- package/dist/editor/ConcurrentUserLimitDialog.js +1 -1
- package/dist/editor/ContentTree.d.ts +12 -1
- package/dist/editor/ContentTree.js +20 -3
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/FieldActionsOverlay.js.map +1 -1
- package/dist/editor/FieldHistory.d.ts +15 -1
- package/dist/editor/FieldHistory.js +85 -52
- package/dist/editor/FieldHistory.js.map +1 -1
- package/dist/editor/FieldList.js +5 -2
- package/dist/editor/FieldList.js.map +1 -1
- package/dist/editor/FieldListField.js +7 -2
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/FieldListFieldWithFallbacks.js +1 -1
- package/dist/editor/GlobalMenuBar.js +1 -1
- package/dist/editor/ItemInfo.js +2 -2
- package/dist/editor/ItemInfo.js.map +1 -1
- package/dist/editor/LinkEditorDialog.js +1 -1
- package/dist/editor/MigrationsView.js +1 -1
- package/dist/editor/PictureCropper.js +1 -1
- package/dist/editor/PictureCropper.js.map +1 -1
- package/dist/editor/SetupWizard.js.map +1 -1
- package/dist/editor/WorkspaceTitleSwitcher.js +1 -1
- package/dist/editor/ai/AgentImageCopyButton.d.ts +6 -0
- package/dist/editor/ai/AgentImageCopyButton.js +93 -0
- package/dist/editor/ai/AgentImageCopyButton.js.map +1 -0
- package/dist/editor/ai/AgentSharingSection.js +1 -1
- package/dist/editor/ai/Agents.d.ts +2 -2
- package/dist/editor/ai/Agents.js +2 -10
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/GuidanceOverlay.js +1 -1
- package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
- package/dist/editor/ai/InlineAiDialog.js +1 -1
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai/InlineAiTrigger.js +1 -1
- package/dist/editor/ai/MediaImage.js +2 -1
- package/dist/editor/ai/MediaImage.js.map +1 -1
- package/dist/editor/ai/agentActivitySummary.js.map +1 -1
- package/dist/editor/ai/agentMessageHelpers.js.map +1 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.js +103 -6
- package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
- package/dist/editor/ai/dialogs/QuestionnaireInline.js +1 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +21 -0
- package/dist/editor/ai/dialogs/agentDialogTypes.js +3 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
- package/dist/editor/ai/dialogs/offscreenPageCapture.d.ts +14 -1
- package/dist/editor/ai/dialogs/offscreenPageCapture.js +95 -27
- package/dist/editor/ai/dialogs/offscreenPageCapture.js.map +1 -1
- package/dist/editor/ai/terminal/agentCost.d.ts +1 -0
- package/dist/editor/ai/terminal/agentCost.js +10 -3
- package/dist/editor/ai/terminal/agentCost.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionSelectors.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionState.js +4 -1
- package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentCostDisplay.d.ts +1 -1
- package/dist/editor/ai/terminal/components/AgentCostDisplay.js +3 -3
- package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentDocumentList.js +2 -2
- package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +1 -1
- package/dist/editor/ai/terminal/components/AgentMemoryPanel.d.ts +22 -5
- package/dist/editor/ai/terminal/components/AgentMemoryPanel.js +102 -19
- package/dist/editor/ai/terminal/components/AgentMemoryPanel.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js +1 -1
- package/dist/editor/ai/terminal/components/AgentProfileSwitcher.js +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +8 -3
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +46 -6
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js +1 -1
- package/dist/editor/ai/terminal/components/AgentSettingsContent.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.d.ts +1 -0
- package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalView.d.ts +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalView.js +1 -1
- package/dist/editor/ai/terminal/components/AiResponseMessage.js +1 -1
- package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/terminal/components/ContextInfoBar.d.ts +2 -1
- package/dist/editor/ai/terminal/components/ContextInfoBar.js +2 -2
- package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
- package/dist/editor/ai/terminal/components/EditOperationsPanel.js +1 -1
- package/dist/editor/ai/terminal/components/QuestionnaireRecap.d.ts +2 -2
- package/dist/editor/ai/terminal/components/ToolCallDisplay.js +3 -2
- package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
- package/dist/editor/ai/terminal/components/UserMessage.js +1 -1
- package/dist/editor/ai/terminal/useAgentContextDisplayNames.d.ts +2 -0
- package/dist/editor/ai/terminal/useAgentContextDisplayNames.js +73 -29
- package/dist/editor/ai/terminal/useAgentContextDisplayNames.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentEditorContextPipeline.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentInlineDialogPipeline.d.ts +1 -1
- package/dist/editor/ai/terminal/useAgentLoader.js +5 -2
- package/dist/editor/ai/terminal/useAgentLoader.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentPromptComposerSurface.d.ts +2 -2
- package/dist/editor/ai/terminal/useAgentPromptQueueSocketHandler.d.ts +2 -0
- package/dist/editor/ai/terminal/useAgentPromptQueueSocketHandler.js +5 -3
- package/dist/editor/ai/terminal/useAgentPromptQueueSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentRunMessagePipeline.d.ts +4 -4
- package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +3 -0
- package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSettingsPanel.d.ts +31 -31
- package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentStopCommand.js +4 -0
- package/dist/editor/ai/terminal/useAgentStopCommand.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentStreamPipeline.js +1 -0
- package/dist/editor/ai/terminal/useAgentStreamPipeline.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalChrome.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentTerminalChrome.js +2 -2
- package/dist/editor/ai/terminal/useAgentTerminalChrome.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalController.js +3 -1
- package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
- package/dist/editor/ai/useAgentPanes.js.map +1 -1
- package/dist/editor/ai/useAgentStatus.js.map +1 -1
- package/dist/editor/ai/useInlineAiPosition.js.map +1 -1
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js +42 -23
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
- package/dist/editor/bridge/BridgeClient.js +6 -6
- package/dist/editor/bridge/BridgeClient.js.map +1 -1
- package/dist/editor/bridge/protocol.d.ts +26 -0
- package/dist/editor/bridge/protocol.js +1 -1
- package/dist/editor/bridge/protocol.js.map +1 -1
- package/dist/editor/client/AboutDialog.js +1 -1
- package/dist/editor/client/EditorShell.js +125 -90
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/SessionExpiredOverlay.js +1 -1
- package/dist/editor/client/SessionExpiredOverlay.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +26 -3
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/fieldModificationStore.js +0 -21
- package/dist/editor/client/fieldModificationStore.js.map +1 -1
- package/dist/editor/client/hooks/useClientInfoRegistration.d.ts +13 -0
- package/dist/editor/client/hooks/useClientInfoRegistration.js +38 -0
- package/dist/editor/client/hooks/useClientInfoRegistration.js.map +1 -0
- package/dist/editor/client/itemsRepository.js +1 -34
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/client/operations.d.ts +4 -2
- package/dist/editor/client/operations.js +89 -65
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/pageModelBuilder.js +7 -1
- package/dist/editor/client/pageModelBuilder.js.map +1 -1
- package/dist/editor/client/ui/EditorChrome.d.ts +1 -0
- package/dist/editor/client/ui/EditorChrome.js +7 -2
- package/dist/editor/client/ui/EditorChrome.js.map +1 -1
- package/dist/editor/client/ui/FullscreenControls.d.ts +3 -0
- package/dist/editor/client/ui/FullscreenControls.js +7 -12
- package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
- package/dist/editor/client/undoTargetResolution.d.ts +28 -0
- package/dist/editor/client/undoTargetResolution.js +69 -0
- package/dist/editor/client/undoTargetResolution.js.map +1 -0
- package/dist/editor/commands/componentCommands.js +2 -2
- package/dist/editor/commands/componentCommands.js.map +1 -1
- package/dist/editor/commands/customCommandConverter.js.map +1 -1
- package/dist/editor/commands/itemCommands.js +19 -2
- package/dist/editor/commands/itemCommands.js.map +1 -1
- package/dist/editor/componentTreeHelper.js +13 -7
- package/dist/editor/componentTreeHelper.js.map +1 -1
- package/dist/editor/content-tree/IndicatorSettings.js +1 -1
- package/dist/editor/content-tree/TreeOptions.js +1 -1
- package/dist/editor/context-menu/InsertMenu.js +1 -1
- package/dist/editor/editor-warnings/NoLanguageWriteAccess.js +1 -1
- package/dist/editor/field-types/AttachmentEditor.js +7 -0
- package/dist/editor/field-types/AttachmentEditor.js.map +1 -1
- package/dist/editor/field-types/LinkFieldEditor.js +1 -1
- package/dist/editor/field-types/PictureFieldEditor.js +21 -21
- package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
- package/dist/editor/field-types/RichTextEditor.js +1 -1
- package/dist/editor/field-types/RichTextEditorComponent.js +6 -0
- package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
- package/dist/editor/field-types/SingleLineText.js +0 -34
- package/dist/editor/field-types/SingleLineText.js.map +1 -1
- package/dist/editor/field-types/richtext/bridgeRichTextProfile.d.ts +1 -1
- package/dist/editor/field-types/richtext/components/EditorDropdown.js +1 -1
- package/dist/editor/field-types/richtext/components/ReactSlate.js +1 -1
- package/dist/editor/field-types/richtext/components/SimpleDropdown.js +1 -1
- package/dist/editor/field-types/richtext/components/SimpleToolbar.js +1 -1
- package/dist/editor/field-types/richtext/hooks/useRichTextProfile.js.map +1 -1
- package/dist/editor/field-types/richtext/utils/conversion.js +2 -4
- package/dist/editor/field-types/richtext/utils/conversion.js.map +1 -1
- package/dist/editor/field-types/richtext/utils/plugins.d.ts +1 -0
- package/dist/editor/field-types/richtext/utils/plugins.js +12 -0
- package/dist/editor/field-types/richtext/utils/plugins.js.map +1 -1
- package/dist/editor/field-types/richtext/utils/profileMapper.js.map +1 -1
- package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -1
- package/dist/editor/fieldValueDiagnostics.js.map +1 -1
- package/dist/editor/insertOptionCompatibility.d.ts +7 -0
- package/dist/editor/insertOptionCompatibility.js +15 -0
- package/dist/editor/insertOptionCompatibility.js.map +1 -0
- package/dist/editor/media-selector/MediaFolderBrowser.js +26 -4
- package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -1
- package/dist/editor/media-selector/Preview.js +6 -11
- package/dist/editor/media-selector/Preview.js.map +1 -1
- package/dist/editor/media-selector/Thumbnails.js +31 -3
- package/dist/editor/media-selector/Thumbnails.js.map +1 -1
- package/dist/editor/media-selector/TreeSelector.js +53 -6
- package/dist/editor/media-selector/TreeSelector.js.map +1 -1
- package/dist/editor/media-selector/UploadZone.d.ts +1 -2
- package/dist/editor/media-selector/UploadZone.js +3 -4
- package/dist/editor/media-selector/UploadZone.js.map +1 -1
- package/dist/editor/media-selector/mediaItemDrag.d.ts +28 -0
- package/dist/editor/media-selector/mediaItemDrag.js +42 -0
- package/dist/editor/media-selector/mediaItemDrag.js.map +1 -0
- package/dist/editor/menubar/ActiveUsers.js +6 -3
- package/dist/editor/menubar/ActiveUsers.js.map +1 -1
- package/dist/editor/menubar/GenericToolbar.js +1 -1
- package/dist/editor/menubar/GenericToolbar.js.map +1 -1
- package/dist/editor/menubar/ItemActionsMenu.js +1 -1
- package/dist/editor/menubar/ItemLanguageVersion.js +1 -1
- package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
- package/dist/editor/menubar/OperationsIndicator.js +1 -1
- package/dist/editor/menubar/PageSelector.d.ts +2 -1
- package/dist/editor/menubar/PageSelector.js +14 -4
- package/dist/editor/menubar/PageSelector.js.map +1 -1
- package/dist/editor/menubar/VersionPreviewCard.js +1 -1
- package/dist/editor/menubar/VersionSelector.js +1 -1
- package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js +1 -1
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.d.ts +3 -1
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +6 -7
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/EditControls.js +5 -5
- 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/menubar/toolbar-sections/ManualBrowser.js +14 -4
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/PreviewModeControl.d.ts +1 -0
- package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js +14 -0
- package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/RefreshPageControl.d.ts +7 -0
- package/dist/editor/menubar/toolbar-sections/RefreshPageControl.js +44 -0
- package/dist/editor/menubar/toolbar-sections/RefreshPageControl.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/ReviewCommands.js +1 -1
- package/dist/editor/menubar/toolbar-sections/UtilityControls.js +1 -1
- package/dist/editor/menubar/toolbar-sections/ViewportControls.d.ts +7 -0
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js +16 -8
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/index.d.ts +1 -0
- package/dist/editor/menubar/toolbar-sections/index.js +1 -0
- package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
- package/dist/editor/notifications/NotificationCenter.js +1 -1
- package/dist/editor/notifications/WatchButton.js +1 -1
- package/dist/editor/notifications/notificationListState.d.ts +1 -1
- package/dist/editor/notifications/notificationRoutes.js.map +1 -1
- package/dist/editor/notifications/useNotifications.d.ts +1 -1
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +6 -3
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/CommentHighlightings.js +1 -1
- package/dist/editor/page-editor-chrome/DragInsertionOverlay.js +51 -23
- package/dist/editor/page-editor-chrome/DragInsertionOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/EmptyImageFieldIndicators.js +1 -1
- package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.js.map +1 -1
- package/dist/editor/page-editor-chrome/FieldActionIndicators.js +1 -1
- package/dist/editor/page-editor-chrome/FieldEditedIndicators.js +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js +1 -1
- package/dist/editor/page-editor-chrome/FrameMenus.js +1 -1
- package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.d.ts +58 -0
- package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js +709 -0
- package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js.map +1 -0
- package/dist/editor/page-editor-chrome/LockedFieldIndicator.js +12 -2
- package/dist/editor/page-editor-chrome/LockedFieldIndicator.js.map +1 -1
- package/dist/editor/page-editor-chrome/PageEditorChrome.js +7 -2
- package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
- package/dist/editor/page-editor-chrome/PictureEditorOverlay.js +57 -10
- package/dist/editor/page-editor-chrome/PictureEditorOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +1 -8
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.d.ts +1 -0
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +10 -3
- package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
- package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +5 -2
- package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
- package/dist/editor/page-editor-chrome/SuggestionVariantSwitcher.js +7 -2
- package/dist/editor/page-editor-chrome/SuggestionVariantSwitcher.js.map +1 -1
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.d.ts +5 -2
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +153 -51
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
- package/dist/editor/page-editor-chrome/componentDragObject.d.ts +5 -4
- package/dist/editor/page-editor-chrome/componentDragObject.js +8 -8
- package/dist/editor/page-editor-chrome/componentDragObject.js.map +1 -1
- package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
- package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +7 -0
- package/dist/editor/page-editor-chrome/overlay/geometry.js +35 -17
- package/dist/editor/page-editor-chrome/overlay/geometry.js.map +1 -1
- package/dist/editor/page-editor-chrome/overlay/placeholderZones.js +4 -9
- package/dist/editor/page-editor-chrome/overlay/placeholderZones.js.map +1 -1
- package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +18 -70
- package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -1
- package/dist/editor/page-viewer/MiniMap.js +1 -1
- package/dist/editor/page-viewer/MiniMap.js.map +1 -1
- package/dist/editor/page-viewer/MinimapDropTargets.js +1 -1
- package/dist/editor/page-viewer/PageViewer.js +5 -3
- package/dist/editor/page-viewer/PageViewer.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +256 -125
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/bridgeFieldPatch.js +0 -45
- package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
- package/dist/editor/page-viewer/bridgeKeyboardShortcuts.d.ts +12 -0
- package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js +27 -0
- package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js.map +1 -1
- package/dist/editor/page-viewer/fullscreenPagePath.d.ts +1 -0
- package/dist/editor/page-viewer/fullscreenPagePath.js +11 -0
- package/dist/editor/page-viewer/fullscreenPagePath.js.map +1 -0
- package/dist/editor/page-viewer/internalLinkNavigation.d.ts +9 -0
- package/dist/editor/page-viewer/internalLinkNavigation.js +104 -0
- package/dist/editor/page-viewer/internalLinkNavigation.js.map +1 -0
- package/dist/editor/page-viewer/pageViewContext.d.ts +3 -1
- package/dist/editor/page-viewer/pageViewContext.js +14 -10
- package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
- package/dist/editor/page-viewer/parentBridgeInjection.d.ts +6 -1
- package/dist/editor/page-viewer/parentBridgeInjection.js +117 -24
- package/dist/editor/page-viewer/parentBridgeInjection.js.map +1 -1
- package/dist/editor/page-viewer/renderUrl.d.ts +1 -1
- package/dist/editor/personalization/ConditionTreeEditor.js +1 -1
- package/dist/editor/personalization/ConditionTreeEditor.js.map +1 -1
- package/dist/editor/personalization/PersonalizationPanel.js +1 -1
- package/dist/editor/personalization/TreeItemPicker.js +7 -1
- package/dist/editor/personalization/TreeItemPicker.js.map +1 -1
- package/dist/editor/personalization/utils.js.map +1 -1
- package/dist/editor/reviews/CommentEditor.js +1 -1
- package/dist/editor/reviews/CommentEditor.js.map +1 -1
- package/dist/editor/reviews/CommentView.js +1 -1
- package/dist/editor/reviews/Comments.js +5 -20
- package/dist/editor/reviews/Comments.js.map +1 -1
- package/dist/editor/reviews/CreateReviewDialog.js +1 -1
- package/dist/editor/reviews/DecisionsMatrix.js +1 -1
- package/dist/editor/reviews/EditReviewSettingsDialog.js +1 -1
- package/dist/editor/reviews/FeedbackFilters.d.ts +16 -0
- package/dist/editor/reviews/FeedbackFilters.js +45 -0
- package/dist/editor/reviews/FeedbackFilters.js.map +1 -0
- package/dist/editor/reviews/FeedbackModeIntro.js +2 -2
- package/dist/editor/reviews/FeedbackModeIntro.js.map +1 -1
- package/dist/editor/reviews/MentionText.js +1 -1
- package/dist/editor/reviews/ReviewCard.js +1 -1
- package/dist/editor/reviews/ReviewDetail.js +5 -1
- package/dist/editor/reviews/ReviewDetail.js.map +1 -1
- package/dist/editor/reviews/ReviewItemsPanel.js +74 -11
- package/dist/editor/reviews/ReviewItemsPanel.js.map +1 -1
- package/dist/editor/reviews/SecretPhraseInput.js +1 -1
- package/dist/editor/reviews/suggestedEditState.js.map +1 -1
- package/dist/editor/reviews/useMultiReview.js +45 -17
- package/dist/editor/reviews/useMultiReview.js.map +1 -1
- package/dist/editor/reviews/useReviews.js +24 -5
- package/dist/editor/reviews/useReviews.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +91 -10
- package/dist/editor/services/agentService.js +100 -27
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/services/contentService.d.ts +3 -1
- package/dist/editor/services/contentService.js +8 -0
- package/dist/editor/services/contentService.js.map +1 -1
- package/dist/editor/services/contextService.js.map +1 -1
- package/dist/editor/services/editService.js.map +1 -1
- package/dist/editor/services/favouritesService.d.ts +0 -7
- package/dist/editor/services/favouritesService.js +0 -7
- package/dist/editor/services/favouritesService.js.map +1 -1
- package/dist/editor/services/indexService.d.ts +3 -1
- package/dist/editor/services/indexService.js +8 -0
- package/dist/editor/services/indexService.js.map +1 -1
- package/dist/editor/services/localStorageService.js.map +1 -1
- package/dist/editor/services/reviewsService.js.map +1 -1
- package/dist/editor/services/serviceHelper.d.ts +3 -0
- package/dist/editor/services/serviceHelper.js +51 -1
- package/dist/editor/services/serviceHelper.js.map +1 -1
- package/dist/editor/services/suggestedEditsService.js.map +1 -1
- package/dist/editor/services/systemService.d.ts +10 -0
- package/dist/editor/services/systemService.js +3 -0
- package/dist/editor/services/systemService.js.map +1 -1
- package/dist/editor/services/textCompletionService.js +5 -0
- package/dist/editor/services/textCompletionService.js.map +1 -1
- package/dist/editor/settings/About.js +2 -4
- package/dist/editor/settings/About.js.map +1 -1
- package/dist/editor/settings/IndexOverview.js +3 -2
- package/dist/editor/settings/IndexOverview.js.map +1 -1
- package/dist/editor/settings/SettingsBreadcrumb.js +1 -1
- package/dist/editor/settings/SettingsView.js +1 -1
- package/dist/editor/settings/StatusSummary.js +1 -1
- package/dist/editor/settings/index/IndexGenerationsSection.d.ts +8 -0
- package/dist/editor/settings/index/IndexGenerationsSection.js +93 -0
- package/dist/editor/settings/index/IndexGenerationsSection.js.map +1 -0
- package/dist/editor/settings/panels/AgentProfileConfigPanel.js +1 -1
- package/dist/editor/settings/panels/AgentsPanel.js +1 -1
- package/dist/editor/settings/panels/CreateAgentProfileDialog.js +1 -1
- package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js +1 -1
- package/dist/editor/settings/panels/CreateMcpServerDialog.js +1 -1
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js +1 -1
- package/dist/editor/settings/panels/MemoriesPanel.d.ts +16 -0
- package/dist/editor/settings/panels/MemoriesPanel.js +291 -0
- package/dist/editor/settings/panels/MemoriesPanel.js.map +1 -0
- package/dist/editor/settings/panels/MemoryEntryDialog.d.ts +45 -0
- package/dist/editor/settings/panels/MemoryEntryDialog.js +167 -0
- package/dist/editor/settings/panels/MemoryEntryDialog.js.map +1 -0
- package/dist/editor/settings/panels/ModelsPanel.js +1 -1
- package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
- package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js +1 -1
- package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js +1 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.js +1 -1
- package/dist/editor/settings/panels/RenderingHostsPanel.d.ts +2 -0
- package/dist/editor/settings/panels/RenderingHostsPanel.js +63 -0
- package/dist/editor/settings/panels/RenderingHostsPanel.js.map +1 -0
- package/dist/editor/settings/panels/SearchConfigPanel.js +6 -4
- package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/StatusPanel.js +1 -1
- package/dist/editor/settings/panels/index.d.ts +2 -0
- package/dist/editor/settings/panels/index.js +2 -0
- package/dist/editor/settings/panels/index.js.map +1 -1
- package/dist/editor/setup-wizard/steps/CompleteStep.js +1 -1
- package/dist/editor/setup-wizard/steps/CreateSettingsStep.js +1 -1
- package/dist/editor/setup-wizard/steps/LicenseActivationStep.js +1 -1
- package/dist/editor/setup-wizard/steps/LicenseEmailStep.js +1 -1
- package/dist/editor/setup-wizard/steps/ModelSelectionStep.js +1 -1
- package/dist/editor/setup-wizard/steps/ProviderStep.js +1 -1
- package/dist/editor/sidebar/ComponentPalette.js +4 -4
- package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +206 -113
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/sidebar/ContentTreePanel.d.ts +2 -2
- package/dist/editor/sidebar/DictionaryEditor.js +1 -1
- package/dist/editor/sidebar/EditHistory.js +1 -1
- package/dist/editor/sidebar/Favorites.js.map +1 -1
- package/dist/editor/sidebar/NavigationPanelItem.js +1 -1
- package/dist/editor/sidebar/OperationItem.js +1 -1
- package/dist/editor/sidebar/Sessions.js +20 -9
- package/dist/editor/sidebar/Sessions.js.map +1 -1
- package/dist/editor/sidebar/Workbox.d.ts +8 -0
- package/dist/editor/sidebar/Workbox.js +94 -12
- package/dist/editor/sidebar/Workbox.js.map +1 -1
- package/dist/editor/sidebar/WorkboxFilters.d.ts +11 -0
- package/dist/editor/sidebar/WorkboxFilters.js +61 -0
- package/dist/editor/sidebar/WorkboxFilters.js.map +1 -0
- package/dist/editor/sidebar/WorkspaceRail.js +1 -1
- package/dist/editor/sidebar/useSharedComponentPublishState.js.map +1 -1
- package/dist/editor/template-wizard/TemplateBuilderDialog.js +1 -1
- package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +1 -1
- package/dist/editor/tree-indicators/GutterColumns.js +1 -1
- package/dist/editor/tree-indicators/GutterContext.js +2 -2
- package/dist/editor/tree-indicators/GutterContext.js.map +1 -1
- package/dist/editor/ui/DragPreview.js.map +1 -1
- package/dist/editor/ui/ItemCollectionEditor.js +1 -1
- package/dist/editor/ui/ItemNameDialogNew.d.ts +11 -0
- package/dist/editor/ui/ItemNameDialogNew.js +12 -7
- package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
- package/dist/editor/ui/ItemSearch.js +1 -1
- package/dist/editor/ui/PerfectTree.d.ts +5 -1
- package/dist/editor/ui/PerfectTree.js +7 -5
- package/dist/editor/ui/PerfectTree.js.map +1 -1
- package/dist/editor/ui/PublishDialog.js +1 -1
- package/dist/editor/ui/PublishItemDialog.js +1 -1
- package/dist/editor/ui/PublishRestrictionsDialog.js +2 -2
- package/dist/editor/ui/PublishRestrictionsDialog.js.map +1 -1
- package/dist/editor/ui/RemoveComponentsConfirmMessage.js +1 -1
- package/dist/editor/ui/SimpleIconButton.d.ts +1 -1
- package/dist/editor/ui/SimpleTable.d.ts +5 -1
- package/dist/editor/ui/SimpleTable.js +5 -1
- package/dist/editor/ui/SimpleTable.js.map +1 -1
- package/dist/editor/ui/Spinner.js +1 -1
- package/dist/editor/ui/Spinner.js.map +1 -1
- package/dist/editor/ui/WorkboxItemsTable.js +49 -20
- package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
- package/dist/editor/utils/selectionContext.js.map +1 -1
- package/dist/editor/utils/sitecoreDate.js +8 -2
- package/dist/editor/utils/sitecoreDate.js.map +1 -1
- package/dist/editor/version-diff/versionDiffGeometryKeys.d.ts +10 -0
- package/dist/editor/version-diff/versionDiffGeometryKeys.js +16 -0
- package/dist/editor/version-diff/versionDiffGeometryKeys.js.map +1 -0
- package/dist/editor/version-diff/versionDiffHighlightStyles.d.ts +6 -0
- package/dist/editor/version-diff/versionDiffHighlightStyles.js +6 -0
- package/dist/editor/version-diff/versionDiffHighlightStyles.js.map +1 -1
- package/dist/editor/version-diff/versionDiffTargets.d.ts +40 -1
- package/dist/editor/version-diff/versionDiffTargets.js +176 -15
- package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
- package/dist/editor/views/ItemEditor.js +1 -1
- package/dist/editor/views/ItemEditorPane.js +1 -1
- package/dist/editor/views/ItemEditorPane.js.map +1 -1
- package/dist/editor/views/SingleEditView.js +1 -1
- package/dist/lib/pointerDrag.js.map +1 -1
- package/dist/lib/safelist.js +1 -1
- package/dist/licensing/FeatureGate.d.ts +1 -1
- package/dist/licensing/LicenseContext.js.map +1 -1
- package/dist/licensing/LicenseOverlay.js +1 -1
- package/dist/logging/consolePrefix.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/revision.js.map +1 -1
- package/dist/setup/services/setupWizardService.d.ts +3 -56
- package/dist/setup/services/setupWizardService.js +0 -43
- package/dist/setup/services/setupWizardService.js.map +1 -1
- package/dist/setup/wizard/steps/ImportModelDialog.js +1 -1
- package/dist/splash-screen/NewPage.js +1 -1
- package/dist/splash-screen/RecentPages.js +1 -1
- package/dist/task-board/TaskBoardWorkspace.js +5 -0
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/ItemCollectionEditorDialog.js +1 -1
- package/dist/task-board/components/ProjectDashboard.js +1 -1
- package/dist/task-board/components/ProjectGoalsPanel.js +1 -1
- package/dist/task-board/components/ProjectSettingsDialog.js +1 -1
- package/dist/task-board/components/TaskBoardBreadcrumb.js +1 -1
- package/dist/task-board/components/TaskBoardProjectListSidebar.js +1 -1
- package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
- package/dist/task-board/components/TaskBoardTitlebar.js +1 -1
- package/dist/task-board/components/TaskDetailPanel.js +1 -1
- package/dist/task-board/components/TaskReviewActions.js +1 -1
- package/dist/task-board/components/TaskRow.js +1 -1
- package/dist/task-board/components/TaskboardPersistentLogPanel.js +1 -1
- package/dist/task-board/components/WizardCommunicationCenter.js +1 -1
- package/dist/task-board/components/WizardTask.js +1 -1
- package/dist/task-board/components/WizardTaskDetailsPanel.js +1 -1
- package/dist/task-board/services/goalService.d.ts +1 -14
- package/dist/task-board/services/goalService.js +0 -10
- package/dist/task-board/services/goalService.js.map +1 -1
- package/dist/task-board/services/taskService.d.ts +0 -11
- package/dist/task-board/services/taskService.js +0 -3
- package/dist/task-board/services/taskService.js.map +1 -1
- package/dist/task-board/views/DependencyGraphView.d.ts +13 -0
- package/dist/task-board/views/DependencyGraphView.js +62 -11
- package/dist/task-board/views/DependencyGraphView.js.map +1 -1
- package/dist/task-board/views/ListView.js +1 -1
- package/dist/tour/Tour.js +1 -1
- package/dist/tour/Tour.js.map +1 -1
- package/dist/tour/default-tour.js +1 -1
- package/dist/tour/preview-tour.js +1 -1
- package/dist/types.d.ts +33 -9
- package/package.json +5 -4
- package/styles.css +4 -4
- package/dist/editor/ai/terminal/components/AgentEditHistoryButton.d.ts +0 -5
- package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js +0 -12
- package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js.map +0 -1
- package/dist/editor/ai/terminal/components/AgentThinkingDots.d.ts +0 -5
- package/dist/editor/ai/terminal/components/AgentThinkingDots.js +0 -9
- package/dist/editor/ai/terminal/components/AgentThinkingDots.js.map +0 -1
- package/dist/editor/reviews/CommentsAndFeedback.d.ts +0 -8
- package/dist/editor/reviews/CommentsAndFeedback.js +0 -17
- package/dist/editor/reviews/CommentsAndFeedback.js.map +0 -1
- package/dist/editor/reviews/CreateReviewDetailsStep.d.ts +0 -53
- package/dist/editor/reviews/CreateReviewDetailsStep.js +0 -77
- package/dist/editor/reviews/CreateReviewDetailsStep.js.map +0 -1
- package/dist/splash-screen/ParheliaAssistantChat.d.ts +0 -8
- package/dist/splash-screen/ParheliaAssistantChat.js +0 -507
- package/dist/splash-screen/ParheliaAssistantChat.js.map +0 -1
- package/dist/splash-screen/SplashScreenAgentContext.d.ts +0 -28
- package/dist/splash-screen/SplashScreenAgentContext.js +0 -51
- package/dist/splash-screen/SplashScreenAgentContext.js.map +0 -1
|
@@ -14,6 +14,7 @@ import { copyItemsNeedsTerminalCompletion, normalizeOpId, waitForEditOperationTe
|
|
|
14
14
|
import { isWorkflowMetadataField } from "../workflowFields";
|
|
15
15
|
import { ExternalChangesWarningContent, TreeOperationConfirmContent, UndoDifferentItemContent, } from "./OperationDialogContent";
|
|
16
16
|
import { isSuggestedEditRemoved, markSuggestedEditRemoved, upsertSuggestedEdit, } from "../reviews/suggestedEditState";
|
|
17
|
+
import { preferLatestLocalUndoTarget } from "./undoTargetResolution";
|
|
17
18
|
import { logFieldValueDiagnostic, summarizeFieldDescriptor, summarizeFieldValue, } from "../fieldValueDiagnostics";
|
|
18
19
|
import { getSuggestedEditItemLanguage, getSuggestedEditItemVersion, getSuggestionFieldIdentityKey, } from "../reviews/suggestionDisplayValue";
|
|
19
20
|
import { enqueueSuggestedEditFieldTask, waitForSuggestedEditFieldTasks, } from "./suggestedEditFieldQueue";
|
|
@@ -21,9 +22,10 @@ import { enqueueSuggestedEditFieldTask, waitForSuggestedEditFieldTasks, } from "
|
|
|
21
22
|
const ENABLE_HARD_DELETE_IN_DELETE_DIALOG = false;
|
|
22
23
|
// Track pending suggested edits to prevent creating duplicates before server response
|
|
23
24
|
const pendingSuggestedEdits = new Map();
|
|
25
|
+
const persistedSuggestedEditVersions = new Map();
|
|
24
26
|
const SUGGESTED_EDIT_SAVE_DEBOUNCE_MS = 500;
|
|
25
27
|
const FIELD_LOCK_REQUEST_TIMEOUT_MS = 10_000;
|
|
26
|
-
function createDelayedSuggestedEditSave(suggestedEdit) {
|
|
28
|
+
function createDelayedSuggestedEditSave(suggestedEdit, expectedUpdated) {
|
|
27
29
|
return new Promise((resolve, reject) => {
|
|
28
30
|
globalThis.setTimeout(() => {
|
|
29
31
|
if (isSuggestedEditRemoved(suggestedEdit.id)) {
|
|
@@ -32,7 +34,23 @@ function createDelayedSuggestedEditSave(suggestedEdit) {
|
|
|
32
34
|
resolve({ type: "ignored" });
|
|
33
35
|
return;
|
|
34
36
|
}
|
|
35
|
-
|
|
37
|
+
const save = async () => {
|
|
38
|
+
const result = await createOrUpdateSuggestedEdit(suggestedEdit, {
|
|
39
|
+
expectedUpdated,
|
|
40
|
+
});
|
|
41
|
+
if (!expectedUpdated &&
|
|
42
|
+
result.type === "conflict" &&
|
|
43
|
+
result.summary ===
|
|
44
|
+
"expectedUpdated is required when updating a suggestion." &&
|
|
45
|
+
result.suggestion?.id === suggestedEdit.id &&
|
|
46
|
+
result.suggestion.updated) {
|
|
47
|
+
return createOrUpdateSuggestedEdit(suggestedEdit, {
|
|
48
|
+
expectedUpdated: result.suggestion.updated,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
save().then(resolve, reject);
|
|
36
54
|
}, SUGGESTED_EDIT_SAVE_DEBOUNCE_MS);
|
|
37
55
|
});
|
|
38
56
|
}
|
|
@@ -80,14 +98,18 @@ function fieldsMatchForLock(left, right) {
|
|
|
80
98
|
// Helper function to clean up pending operations for a deleted suggested edit
|
|
81
99
|
export function cleanupPendingSuggestedEditOperations(suggestedEdit, user) {
|
|
82
100
|
const userKey = user?.name || "unknown";
|
|
83
|
-
const
|
|
101
|
+
const saveKey = getSuggestionFieldIdentityKey({
|
|
84
102
|
itemId: suggestedEdit.itemId,
|
|
85
103
|
language: getSuggestedEditItemLanguage(suggestedEdit),
|
|
86
104
|
version: getSuggestedEditItemVersion(suggestedEdit),
|
|
87
105
|
fieldId: suggestedEdit.fieldId,
|
|
88
|
-
})
|
|
106
|
+
});
|
|
107
|
+
const pendingFieldKey = `${saveKey}:${userKey}`;
|
|
89
108
|
// Remove from pending operations
|
|
90
109
|
pendingSuggestedEdits.delete(pendingFieldKey);
|
|
110
|
+
if (persistedSuggestedEditVersions.get(saveKey)?.id === suggestedEdit.id) {
|
|
111
|
+
persistedSuggestedEditVersions.delete(saveKey);
|
|
112
|
+
}
|
|
91
113
|
}
|
|
92
114
|
export async function waitForPendingSuggestedEditSave(suggestedEdit) {
|
|
93
115
|
const saveKey = getSuggestionFieldIdentityKey({
|
|
@@ -103,6 +125,13 @@ export function getOperationsContext(state, ui) {
|
|
|
103
125
|
const [executingEditOperations, setExecutingEditOperations] = useState([]);
|
|
104
126
|
const lastOp = useRef(undefined);
|
|
105
127
|
const undoing = useRef(false);
|
|
128
|
+
// The most recent locally executed operation the server confirmed as
|
|
129
|
+
// undoable. The toolbar resolves its undo target from date-sorted history
|
|
130
|
+
// state, which can lag behind a just-completed save (inline-typing saves
|
|
131
|
+
// commit asynchronously and reach the history via save-ack/websocket
|
|
132
|
+
// merges); this snapshot lets the undo gesture target the operation the
|
|
133
|
+
// user actually created last instead of a stale history top.
|
|
134
|
+
const latestLocalUndoableOp = useRef(undefined);
|
|
106
135
|
// Track operation IDs that were successfully undone/redone but whose React state update
|
|
107
136
|
// hasn't been rendered yet. Cleared on each render (when stateRef.current is up-to-date).
|
|
108
137
|
const recentlyUndoneIds = useRef(new Set());
|
|
@@ -156,7 +185,6 @@ export function getOperationsContext(state, ui) {
|
|
|
156
185
|
const executeOp = useCallback(async (op, options = {
|
|
157
186
|
refresh: "immediate",
|
|
158
187
|
}) => {
|
|
159
|
-
console.log("Executing op", op);
|
|
160
188
|
const removedComponentIds = getRemovedComponentIds(op);
|
|
161
189
|
let keepRemovingIndicatorsUntilSocketCompletion = false;
|
|
162
190
|
if (removedComponentIds.length > 0) {
|
|
@@ -178,6 +206,12 @@ export function getOperationsContext(state, ui) {
|
|
|
178
206
|
//stateRef.current.addToEditHistory(result.data as EditOperation);
|
|
179
207
|
const returnedOp = result.data;
|
|
180
208
|
setEditOperationExecuted(returnedOp);
|
|
209
|
+
if (returnedOp.canUndo &&
|
|
210
|
+
!returnedOp.undone &&
|
|
211
|
+
returnedOp.executionStatus !== "executing" &&
|
|
212
|
+
returnedOp.executionStatus !== "failed") {
|
|
213
|
+
latestLocalUndoableOp.current = returnedOp;
|
|
214
|
+
}
|
|
181
215
|
keepRemovingIndicatorsUntilSocketCompletion =
|
|
182
216
|
returnedOp.executionStatus === "executing";
|
|
183
217
|
// Only remove from executing operations if it's not a long-running operation
|
|
@@ -516,16 +550,6 @@ export function getOperationsContext(state, ui) {
|
|
|
516
550
|
}, []);
|
|
517
551
|
const editField = useCallback(async ({ field, value, rawValue, forceMode, refresh = "immediate", originatingSlotId, }) => {
|
|
518
552
|
const effectiveMode = forceMode ?? stateRef.current.mode;
|
|
519
|
-
logFieldValueDiagnostic("operations", "editField requested", {
|
|
520
|
-
field: summarizeFieldDescriptor(field),
|
|
521
|
-
value: summarizeFieldValue(value),
|
|
522
|
-
rawValue: summarizeFieldValue(rawValue),
|
|
523
|
-
forceMode,
|
|
524
|
-
effectiveMode,
|
|
525
|
-
refresh,
|
|
526
|
-
originatingSlotId,
|
|
527
|
-
undoing: undoing.current,
|
|
528
|
-
});
|
|
529
553
|
fieldEditGeneration.current += 1;
|
|
530
554
|
if (effectiveMode === "suggestions" &&
|
|
531
555
|
(stateRef.current.page || stateRef.current.currentItemDescriptor)) {
|
|
@@ -564,11 +588,29 @@ export function getOperationsContext(state, ui) {
|
|
|
564
588
|
// promise that resolves after the delayed save completes.
|
|
565
589
|
const saveSnapshot = { ...op };
|
|
566
590
|
const expectedNewValue = saveSnapshot.newValue;
|
|
567
|
-
const savePromise = enqueueSuggestedEditFieldTask(fieldKey, () =>
|
|
591
|
+
const savePromise = enqueueSuggestedEditFieldTask(fieldKey, () => {
|
|
592
|
+
// Input handlers may prepare several snapshots before React state
|
|
593
|
+
// receives the first save acknowledgement. Read the durable
|
|
594
|
+
// server-issued version at execution time so every queued save is
|
|
595
|
+
// based on the immediately preceding one.
|
|
596
|
+
const persistedVersion = persistedSuggestedEditVersions.get(fieldKey);
|
|
597
|
+
const snapshotForSave = persistedVersion?.id === saveSnapshot.id
|
|
598
|
+
? { ...saveSnapshot, updated: persistedVersion.updated }
|
|
599
|
+
: saveSnapshot;
|
|
600
|
+
return createDelayedSuggestedEditSave(snapshotForSave, persistedVersion?.id === saveSnapshot.id
|
|
601
|
+
? persistedVersion.updated
|
|
602
|
+
: undefined);
|
|
603
|
+
})
|
|
568
604
|
.then((result) => {
|
|
569
605
|
// Update the suggested edits state with the result from the server
|
|
570
606
|
if (result.type === "success" && result.data) {
|
|
571
607
|
const updatedEdit = result.data;
|
|
608
|
+
if (updatedEdit.updated) {
|
|
609
|
+
persistedSuggestedEditVersions.set(fieldKey, {
|
|
610
|
+
id: updatedEdit.id,
|
|
611
|
+
updated: updatedEdit.updated,
|
|
612
|
+
});
|
|
613
|
+
}
|
|
572
614
|
if (isSuggestedEditRemoved(updatedEdit.id)) {
|
|
573
615
|
// Reverted to a no-op while this save was in flight; make sure
|
|
574
616
|
// it stays gone on the server and do not re-add it locally.
|
|
@@ -586,6 +628,12 @@ export function getOperationsContext(state, ui) {
|
|
|
586
628
|
}
|
|
587
629
|
else if (result.type === "conflict") {
|
|
588
630
|
if (result.suggestion) {
|
|
631
|
+
if (result.suggestion.updated) {
|
|
632
|
+
persistedSuggestedEditVersions.set(fieldKey, {
|
|
633
|
+
id: result.suggestion.id,
|
|
634
|
+
updated: result.suggestion.updated,
|
|
635
|
+
});
|
|
636
|
+
}
|
|
589
637
|
stateRef.current.setSuggestedEdits((current) => upsertSuggestedEdit(current, result.suggestion, {
|
|
590
638
|
source: "save-ack",
|
|
591
639
|
}));
|
|
@@ -635,15 +683,6 @@ export function getOperationsContext(state, ui) {
|
|
|
635
683
|
ai: false,
|
|
636
684
|
agentId: undefined,
|
|
637
685
|
}, true, value, rawValue, fieldModificationStore);
|
|
638
|
-
logFieldValueDiagnostic("operations", "local field value updated", {
|
|
639
|
-
field: summarizeFieldDescriptor(field),
|
|
640
|
-
value: summarizeFieldValue(value),
|
|
641
|
-
rawValue: summarizeFieldValue(rawValue),
|
|
642
|
-
saveSequence,
|
|
643
|
-
refresh,
|
|
644
|
-
originatingSlotId,
|
|
645
|
-
hasFieldModificationStore: !!fieldModificationStore,
|
|
646
|
-
});
|
|
647
686
|
if (refresh === "immediate") {
|
|
648
687
|
logFieldValueDiagnostic("operations", "saving immediately", {
|
|
649
688
|
field: summarizeFieldDescriptor(field),
|
|
@@ -663,21 +702,10 @@ export function getOperationsContext(state, ui) {
|
|
|
663
702
|
lastEditField.current?.item?.language !== field.item?.language ||
|
|
664
703
|
lastEditField.current?.item?.version !== field.item?.version;
|
|
665
704
|
if (isNewField) {
|
|
666
|
-
logFieldValueDiagnostic("operations", "flushing previous field debounce", {
|
|
667
|
-
previousField: summarizeFieldDescriptor(lastEditField.current),
|
|
668
|
-
nextField: summarizeFieldDescriptor(field),
|
|
669
|
-
});
|
|
670
705
|
executeEditFieldDebounced.flush();
|
|
671
706
|
}
|
|
672
707
|
lastEditField.current = field;
|
|
673
708
|
// Fix: Pass the saveSequence to avoid calling updateFieldValue twice
|
|
674
|
-
logFieldValueDiagnostic("operations", "queueing debounced save", {
|
|
675
|
-
field: summarizeFieldDescriptor(field),
|
|
676
|
-
value: summarizeFieldValue(value),
|
|
677
|
-
rawValue: summarizeFieldValue(rawValue),
|
|
678
|
-
refresh,
|
|
679
|
-
saveSequence,
|
|
680
|
-
});
|
|
681
709
|
return executeEditFieldDebounced({
|
|
682
710
|
field,
|
|
683
711
|
value,
|
|
@@ -696,15 +724,6 @@ export function getOperationsContext(state, ui) {
|
|
|
696
724
|
const val = rawValue !== undefined ? rawValue : value;
|
|
697
725
|
if (val === undefined)
|
|
698
726
|
return;
|
|
699
|
-
logFieldValueDiagnostic("operations", "editFieldImmediate start", {
|
|
700
|
-
field: summarizeFieldDescriptor(field),
|
|
701
|
-
value: summarizeFieldValue(value),
|
|
702
|
-
rawValue: summarizeFieldValue(rawValue),
|
|
703
|
-
persistedValue: summarizeFieldValue(val),
|
|
704
|
-
refresh,
|
|
705
|
-
saveSequence,
|
|
706
|
-
hasFieldModificationStore: !!fieldModificationStore,
|
|
707
|
-
});
|
|
708
727
|
const op = await getEditOP(field, rawValue, value);
|
|
709
728
|
// Fix: Handle getEditOP returning undefined (item/field not found)
|
|
710
729
|
// Clear dirty state so the field doesn't get stuck in "saving" state
|
|
@@ -721,14 +740,6 @@ export function getOperationsContext(state, ui) {
|
|
|
721
740
|
}
|
|
722
741
|
try {
|
|
723
742
|
const result = await executeOp(op, { refresh });
|
|
724
|
-
logFieldValueDiagnostic("operations", "editFieldImmediate result", {
|
|
725
|
-
field: summarizeFieldDescriptor(field),
|
|
726
|
-
opId: op.id,
|
|
727
|
-
executionStatus: result?.executionStatus,
|
|
728
|
-
refresh,
|
|
729
|
-
saveSequence,
|
|
730
|
-
persistedValue: summarizeFieldValue(val),
|
|
731
|
-
});
|
|
732
743
|
// Fix: Check if the operation actually succeeded
|
|
733
744
|
// If result is undefined/null, the operation likely failed
|
|
734
745
|
if (!result) {
|
|
@@ -772,14 +783,6 @@ export function getOperationsContext(state, ui) {
|
|
|
772
783
|
// Fix: Use the saveSequence passed from editField instead of calling
|
|
773
784
|
// updateFieldValue again. This prevents the race condition where the
|
|
774
785
|
// field gets marked dirty twice with different sequences.
|
|
775
|
-
logFieldValueDiagnostic("operations", "debounced save executing", {
|
|
776
|
-
field: summarizeFieldDescriptor(field),
|
|
777
|
-
value: summarizeFieldValue(value),
|
|
778
|
-
rawValue: summarizeFieldValue(rawValue),
|
|
779
|
-
refresh,
|
|
780
|
-
saveSequence,
|
|
781
|
-
hasFieldModificationStore: !!fieldModificationStore,
|
|
782
|
-
});
|
|
783
786
|
return enqueueFieldSave(field, () => editFieldImmediate({
|
|
784
787
|
field,
|
|
785
788
|
value,
|
|
@@ -879,6 +882,9 @@ export function getOperationsContext(state, ui) {
|
|
|
879
882
|
for (const executedOp of result.data) {
|
|
880
883
|
recentlyUndoneIds.current.add(executedOp.id);
|
|
881
884
|
recentlyRedoneIds.current.delete(executedOp.id);
|
|
885
|
+
if (latestLocalUndoableOp.current?.id === executedOp.id) {
|
|
886
|
+
latestLocalUndoableOp.current = undefined;
|
|
887
|
+
}
|
|
882
888
|
}
|
|
883
889
|
// Check if any operations are executing in background (long-running undo)
|
|
884
890
|
const executingOps = result.data.filter((x) => x.executionStatus === "executing");
|
|
@@ -973,6 +979,20 @@ export function getOperationsContext(state, ui) {
|
|
|
973
979
|
if (pendingFieldOperationId) {
|
|
974
980
|
operationId = pendingFieldOperationId;
|
|
975
981
|
}
|
|
982
|
+
else {
|
|
983
|
+
// The toolbar/keyboard gesture resolves its target from history
|
|
984
|
+
// state that may not include a save that just completed. Prefer the
|
|
985
|
+
// most recent locally executed undoable operation over a stale
|
|
986
|
+
// target (a genuinely newer target from another tab/user wins).
|
|
987
|
+
operationId = preferLatestLocalUndoTarget({
|
|
988
|
+
requestedOperationId: operationId,
|
|
989
|
+
latestLocalOperation: latestLocalUndoableOp.current,
|
|
990
|
+
editHistory: stateRef.current.editHistory,
|
|
991
|
+
recentlyUndoneIds: recentlyUndoneIds.current,
|
|
992
|
+
historyMode: stateRef.current.historyMode,
|
|
993
|
+
currentItem: stateRef.current.item?.descriptor,
|
|
994
|
+
});
|
|
995
|
+
}
|
|
976
996
|
const currentItem = stateRef.current.item?.descriptor;
|
|
977
997
|
const filterBySession = stateRef.current.showOnlyMyChanges;
|
|
978
998
|
const historyMode = stateRef.current.historyMode;
|
|
@@ -1214,6 +1234,10 @@ export function getOperationsContext(state, ui) {
|
|
|
1214
1234
|
for (const executedOp of result.data) {
|
|
1215
1235
|
recentlyRedoneIds.current.add(executedOp.id);
|
|
1216
1236
|
recentlyUndoneIds.current.delete(executedOp.id);
|
|
1237
|
+
// A redone operation is the newest undoable operation again.
|
|
1238
|
+
if (executedOp.canUndo && !executedOp.undone) {
|
|
1239
|
+
latestLocalUndoableOp.current = executedOp;
|
|
1240
|
+
}
|
|
1217
1241
|
}
|
|
1218
1242
|
// Check if the operation is executing in background (long-running redo)
|
|
1219
1243
|
const executingOps = result.data.filter((x) => x.executionStatus === "executing");
|
|
@@ -1545,7 +1569,8 @@ export function getOperationsContext(state, ui) {
|
|
|
1545
1569
|
id: uuid(),
|
|
1546
1570
|
title: `Moving ${items.length} item(s)...`,
|
|
1547
1571
|
};
|
|
1548
|
-
await executeOp(op);
|
|
1572
|
+
const result = await executeOp(op);
|
|
1573
|
+
return result?.executionStatus !== "failed";
|
|
1549
1574
|
}, [executeOp]);
|
|
1550
1575
|
const createItem = useCallback(async (parent, templateId, name) => {
|
|
1551
1576
|
const op = {
|
|
@@ -1663,7 +1688,7 @@ export function getOperationsContext(state, ui) {
|
|
|
1663
1688
|
}
|
|
1664
1689
|
return [];
|
|
1665
1690
|
}, [executeOp]);
|
|
1666
|
-
const duplicateItem = useCallback(async (item, target, name) => {
|
|
1691
|
+
const duplicateItem = useCallback(async (item, target, name, options) => {
|
|
1667
1692
|
// Use generic edit endpoint for long-running operation support
|
|
1668
1693
|
// Duplicate is a copy to the same parent, positioned after the original
|
|
1669
1694
|
const op = {
|
|
@@ -1676,6 +1701,7 @@ export function getOperationsContext(state, ui) {
|
|
|
1676
1701
|
id: uuid(),
|
|
1677
1702
|
title: `Duplicating item...`,
|
|
1678
1703
|
name, // Pass the user-provided name to the backend
|
|
1704
|
+
copyChildren: options?.copyChildren ?? true,
|
|
1679
1705
|
};
|
|
1680
1706
|
let copyResult = (await executeOp(op));
|
|
1681
1707
|
if (copyItemsNeedsTerminalCompletion(copyResult)) {
|
|
@@ -1925,7 +1951,6 @@ async function getOrMergeSuggestedEditOp(field, rawValue, value, state) {
|
|
|
1925
1951
|
itemLanguage: field.item.language,
|
|
1926
1952
|
itemVersion: field.item.version,
|
|
1927
1953
|
newValue: nextValue,
|
|
1928
|
-
updated: new Date().toISOString(),
|
|
1929
1954
|
updatedBy: state.user?.name || "unknown",
|
|
1930
1955
|
};
|
|
1931
1956
|
pendingSuggestedEdits.set(fieldKey, updatedEdit);
|
|
@@ -1969,7 +1994,6 @@ async function getOrMergeSuggestedEditOp(field, rawValue, value, state) {
|
|
|
1969
1994
|
itemLanguage: field.item.language,
|
|
1970
1995
|
itemVersion: field.item.version,
|
|
1971
1996
|
newValue: nextValue,
|
|
1972
|
-
updated: new Date().toISOString(),
|
|
1973
1997
|
updatedBy: state.user?.name || "unknown",
|
|
1974
1998
|
};
|
|
1975
1999
|
state.setSuggestedEdits((current) => upsertSuggestedEdit(current, updatedEdit, { source: "local" }));
|