@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React, { useState, useEffect, useLayoutEffect, useRef, useCallback, useMemo, startTransition, } from "react";
|
|
4
4
|
import { toast } from "sonner";
|
|
5
5
|
import { isPerfTraceActive, perfTracePaintStep, perfTraceStep, } from "../perfTrace";
|
|
@@ -18,6 +18,7 @@ import { executeFieldAction as executeFieldServerAction, connectSocket, getEditH
|
|
|
18
18
|
import { emitAgentDocumentsChanged } from "../services/agentService";
|
|
19
19
|
import { onSocketReconnect as onAgentSocketReconnect } from "../services/agentSubscriptionRegistry";
|
|
20
20
|
import { useEditorWebSocket } from "./hooks/useEditorWebSocket";
|
|
21
|
+
import { useClientInfoRegistration } from "./hooks/useClientInfoRegistration";
|
|
21
22
|
import { getEditorRealtime } from "./realtime/realtimeTransport";
|
|
22
23
|
import { createEditorSocketDiagnostics, } from "./socketDiagnostics";
|
|
23
24
|
import { localStorageService } from "../services/localStorageService";
|
|
@@ -262,6 +263,16 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
262
263
|
suppressNextSelectionAutoScrollRef.current = false;
|
|
263
264
|
return suppressed;
|
|
264
265
|
}, []);
|
|
266
|
+
// Armed by the post-operation auto-focus below for the same reason as
|
|
267
|
+
// selectWithoutAutoScroll: a moved component's field still measures at its
|
|
268
|
+
// pre-move rect until the canvas refresh lands, so the focused-field
|
|
269
|
+
// auto-scroll must skip exactly that programmatic focus.
|
|
270
|
+
const suppressNextFocusedFieldAutoScrollRef = useRef(false);
|
|
271
|
+
const consumeNextFocusedFieldAutoScrollSuppression = useCallback(() => {
|
|
272
|
+
const suppressed = suppressNextFocusedFieldAutoScrollRef.current;
|
|
273
|
+
suppressNextFocusedFieldAutoScrollRef.current = false;
|
|
274
|
+
return suppressed;
|
|
275
|
+
}, []);
|
|
265
276
|
const insertingHoldCleanupRef = useRef(null);
|
|
266
277
|
// The drop operation's HTTP resolve only means the server accepted it — the
|
|
267
278
|
// canvas re-render (fetch + DOM patch) lands seconds later. Keep the
|
|
@@ -537,10 +548,9 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
537
548
|
// Keep a synchronous ref for "what is currently active" so callers can update it
|
|
538
549
|
// before React state has applied (e.g. setActiveSlot -> loadItem).
|
|
539
550
|
const activeSlotIdRef = useRef(activeSlotId);
|
|
540
|
-
useEffect(() => {
|
|
541
|
-
activeSlotIdRef.current = activeSlotId;
|
|
542
|
-
}, [activeSlotId]);
|
|
543
551
|
const [slotContexts, setSlotContexts] = useState(() => new Map());
|
|
552
|
+
const slotContextsRef = useRef(slotContexts);
|
|
553
|
+
const lastActiveSlotContextRef = useRef(null);
|
|
544
554
|
const fieldModificationStoresBySlotRef = useRef(new Map());
|
|
545
555
|
const [fieldModificationStoreRegistryRevision, setFieldModificationStoreRegistryRevision,] = useState(0);
|
|
546
556
|
const getFieldModificationStoreForSlot = useCallback((slotId) => {
|
|
@@ -597,15 +607,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
597
607
|
// Don't persist editorSlots to localStorage - always start with 0 slots in a new window
|
|
598
608
|
// Ensure we always have a valid activeSlotId when slots change
|
|
599
609
|
useEffect(() => {
|
|
600
|
-
|
|
601
|
-
|
|
610
|
+
const currentActiveSlotId = activeSlotIdRef.current;
|
|
611
|
+
const nextActiveSlotId = currentActiveSlotId &&
|
|
612
|
+
editorSlots.some((slot) => slot.slotId === currentActiveSlotId)
|
|
613
|
+
? currentActiveSlotId
|
|
614
|
+
: (editorSlots[0]?.slotId ?? null);
|
|
615
|
+
if (currentActiveSlotId === nextActiveSlotId)
|
|
602
616
|
return;
|
|
603
|
-
|
|
604
|
-
setActiveSlotId(
|
|
605
|
-
if (prev && editorSlots.some((s) => s.slotId === prev))
|
|
606
|
-
return prev;
|
|
607
|
-
return editorSlots[0]?.slotId ?? null;
|
|
608
|
-
});
|
|
617
|
+
activeSlotIdRef.current = nextActiveSlotId;
|
|
618
|
+
setActiveSlotId(nextActiveSlotId);
|
|
609
619
|
}, [editorSlots]);
|
|
610
620
|
const currentItemRef = useRef(undefined);
|
|
611
621
|
useEffect(() => {
|
|
@@ -725,6 +735,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
725
735
|
const [centerPanelView, setCenterPanelView] = useState();
|
|
726
736
|
const [timings, setTimings] = useState({});
|
|
727
737
|
const [revision, setRevision] = useState();
|
|
738
|
+
const [fullReloadToken, setFullReloadToken] = useState(0);
|
|
728
739
|
// moved into useWorkbox
|
|
729
740
|
// Initialize tour state from URL parameter to survive navigation/remounts
|
|
730
741
|
// Memoize to avoid triggering Router state updates during render
|
|
@@ -965,32 +976,29 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
965
976
|
});
|
|
966
977
|
}, [itemsRepository, refreshParheliaSettings]);
|
|
967
978
|
const registerSlotContext = useCallback((slotId, ctx) => {
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
979
|
+
const current = slotContextsRef.current;
|
|
980
|
+
if (current.get(slotId) === ctx)
|
|
981
|
+
return;
|
|
982
|
+
const next = new Map(current);
|
|
983
|
+
next.set(slotId, ctx);
|
|
984
|
+
slotContextsRef.current = next;
|
|
985
|
+
setSlotContexts(next);
|
|
975
986
|
}, []);
|
|
976
987
|
const unregisterSlotContext = useCallback((slotId) => {
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
}
|
|
988
|
+
const current = slotContextsRef.current;
|
|
989
|
+
if (!current.has(slotId))
|
|
990
|
+
return;
|
|
991
|
+
if (slotId === activeSlotIdRef.current) {
|
|
992
|
+
const activeCtx = current.get(slotId);
|
|
993
|
+
if (activeCtx) {
|
|
994
|
+
lastActiveSlotContextRef.current = activeCtx;
|
|
985
995
|
}
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
996
|
+
}
|
|
997
|
+
const next = new Map(current);
|
|
998
|
+
next.delete(slotId);
|
|
999
|
+
slotContextsRef.current = next;
|
|
1000
|
+
setSlotContexts(next);
|
|
990
1001
|
}, []);
|
|
991
|
-
const slotContextsRef = useRef(slotContexts);
|
|
992
|
-
const lastActiveSlotContextRef = useRef(null);
|
|
993
|
-
slotContextsRef.current = slotContexts;
|
|
994
1002
|
const getActiveSlotContext = useCallback(() => {
|
|
995
1003
|
const activeId = activeSlotIdRef.current;
|
|
996
1004
|
if (!activeId)
|
|
@@ -1144,7 +1152,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
1144
1152
|
}
|
|
1145
1153
|
// Delay toast slightly to give user time to navigate if they're switching views
|
|
1146
1154
|
setTimeout(() => {
|
|
1147
|
-
toast
|
|
1155
|
+
const showBatchToast = errorJobs > 0 ? toast : toast.success;
|
|
1156
|
+
showBatchToast(toastMessage, {
|
|
1148
1157
|
duration: 5000, // Show for 5 seconds
|
|
1149
1158
|
id: `batch-${batchId}`, // Unique ID to prevent duplicates
|
|
1150
1159
|
});
|
|
@@ -1250,20 +1259,36 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
1250
1259
|
}
|
|
1251
1260
|
}, [currentWorkspace]);
|
|
1252
1261
|
const sendClientInfoImmediate = useCallback(async () => {
|
|
1262
|
+
const itemAtSend = currentItemRef.current;
|
|
1253
1263
|
const clientInfoMessage = {
|
|
1254
1264
|
type: "client-info",
|
|
1255
1265
|
sessionId: sessionId,
|
|
1256
1266
|
url: window.location.href,
|
|
1257
1267
|
userAgent: navigator.userAgent,
|
|
1258
|
-
item:
|
|
1268
|
+
item: itemAtSend
|
|
1259
1269
|
? {
|
|
1260
|
-
...
|
|
1261
|
-
name:
|
|
1270
|
+
...itemAtSend.descriptor,
|
|
1271
|
+
name: itemAtSend.name,
|
|
1262
1272
|
}
|
|
1263
1273
|
: null,
|
|
1264
1274
|
};
|
|
1265
1275
|
const url = "/parhelia/client";
|
|
1266
|
-
await post(url, clientInfoMessage);
|
|
1276
|
+
const result = await post(url, clientInfoMessage);
|
|
1277
|
+
if (result.type !== "success" ||
|
|
1278
|
+
!itemAtSend ||
|
|
1279
|
+
!getEditorRealtime().isOpen()) {
|
|
1280
|
+
return;
|
|
1281
|
+
}
|
|
1282
|
+
// /parhelia/client returns success only after ApplyClientInfo has
|
|
1283
|
+
// synchronously registered the page topic. Treat that response as the
|
|
1284
|
+
// authoritative acknowledgement instead of depending solely on the
|
|
1285
|
+
// active-sessions broadcast making a round trip back to this tab.
|
|
1286
|
+
const currentItem = currentItemRef.current;
|
|
1287
|
+
if (currentItem?.descriptor.id === itemAtSend.descriptor.id &&
|
|
1288
|
+
currentItem.descriptor.language === itemAtSend.descriptor.language &&
|
|
1289
|
+
currentItem.descriptor.version === itemAtSend.descriptor.version) {
|
|
1290
|
+
setIsClientInfoAcknowledged(true);
|
|
1291
|
+
}
|
|
1267
1292
|
}, [sessionId]);
|
|
1268
1293
|
const debouncedSendClientInfo = useDebouncedCallback(() => {
|
|
1269
1294
|
void sendClientInfoImmediate();
|
|
@@ -1602,6 +1627,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
1602
1627
|
const keepAliveUrl = "/parhelia/keepalive";
|
|
1603
1628
|
const runSessionCheck = () => {
|
|
1604
1629
|
fetch(keepAliveUrl + "?ts=" + Date.now(), {
|
|
1630
|
+
method: "POST",
|
|
1605
1631
|
credentials: "include",
|
|
1606
1632
|
headers: { "Cache-Control": "no-cache" },
|
|
1607
1633
|
})
|
|
@@ -1948,10 +1974,18 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
1948
1974
|
setRemovingComponentIds([]);
|
|
1949
1975
|
}, [currentItemDescriptor, activePageViewContext.page?.item.id]);
|
|
1950
1976
|
useEffect(() => {
|
|
1951
|
-
// When the item changes, reset acknowledgment
|
|
1977
|
+
// When the item changes, reset acknowledgment. Registration below sends
|
|
1978
|
+
// immediately and keeps retrying until active-sessions confirms it.
|
|
1952
1979
|
setIsClientInfoAcknowledged(false);
|
|
1953
|
-
sendClientInfo();
|
|
1954
1980
|
}, [currentItemDescriptor]);
|
|
1981
|
+
useClientInfoRegistration({
|
|
1982
|
+
itemKey: currentItemDescriptor
|
|
1983
|
+
? `${currentItemDescriptor.id}:${currentItemDescriptor.language}:${currentItemDescriptor.version}`
|
|
1984
|
+
: null,
|
|
1985
|
+
acknowledged: isClientInfoAcknowledged,
|
|
1986
|
+
connectionVersion: socketConnectionVersion,
|
|
1987
|
+
sendClientInfo: sendClientInfoImmediate,
|
|
1988
|
+
});
|
|
1955
1989
|
// Detect acknowledgment via presence of our session with matching item in active-sessions
|
|
1956
1990
|
useEffect(() => {
|
|
1957
1991
|
if (!currentItemDescriptor)
|
|
@@ -2486,6 +2520,16 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2486
2520
|
setRevision(newRevision);
|
|
2487
2521
|
globalThis.editorRefreshTimer = undefined;
|
|
2488
2522
|
};
|
|
2523
|
+
if (mode === "hard") {
|
|
2524
|
+
// A pending soft refresh would land the same revision through the
|
|
2525
|
+
// incremental path the caller is trying to bypass.
|
|
2526
|
+
if (refreshTimer) {
|
|
2527
|
+
clearTimeout(refreshTimer);
|
|
2528
|
+
}
|
|
2529
|
+
setFullReloadToken((token) => token + 1);
|
|
2530
|
+
doRefresh();
|
|
2531
|
+
return;
|
|
2532
|
+
}
|
|
2489
2533
|
if (mode === "immediate") {
|
|
2490
2534
|
if (refreshTimer) {
|
|
2491
2535
|
clearTimeout(refreshTimer);
|
|
@@ -2507,9 +2551,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2507
2551
|
return;
|
|
2508
2552
|
// The previous item's comments don't speak for the new one.
|
|
2509
2553
|
setCommentsLoaded(false);
|
|
2554
|
+
// Loading feedback before client-info is acknowledged creates a gap: an
|
|
2555
|
+
// update can arrive after this REST response but before the realtime page
|
|
2556
|
+
// subscription exists. Once acknowledged, the snapshot and event stream
|
|
2557
|
+
// form one continuous view of the server state.
|
|
2558
|
+
if (!isClientInfoAcknowledged)
|
|
2559
|
+
return;
|
|
2510
2560
|
loadComments();
|
|
2511
2561
|
loadSuggestedEdits();
|
|
2512
|
-
}, [currentItemDescriptor]);
|
|
2562
|
+
}, [currentItemDescriptor, isClientInfoAcknowledged]);
|
|
2513
2563
|
// Track the previous history mode to detect mode changes
|
|
2514
2564
|
const prevHistoryModeRef = useRef(historyMode);
|
|
2515
2565
|
const historyInitialLoadDoneRef = useRef(false);
|
|
@@ -2619,6 +2669,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2619
2669
|
f.type === "multi-line text" ||
|
|
2620
2670
|
f.type === "rich text"));
|
|
2621
2671
|
if (field) {
|
|
2672
|
+
// Programmatic focus: no user intent to see the field, and after a
|
|
2673
|
+
// move it still measures at its pre-move rect (the drag origin)
|
|
2674
|
+
// until the canvas refresh lands.
|
|
2675
|
+
suppressNextFocusedFieldAutoScrollRef.current = true;
|
|
2622
2676
|
setFocusedField(field.descriptor);
|
|
2623
2677
|
setFocusFieldComponentId(undefined);
|
|
2624
2678
|
}
|
|
@@ -2915,7 +2969,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2915
2969
|
}
|
|
2916
2970
|
// IMPORTANT: Only update global "current item" state when the affected slot is active.
|
|
2917
2971
|
// Otherwise we'd change URL/tree/controls while loading into an inactive slot.
|
|
2918
|
-
if (isExistingSlotActive
|
|
2972
|
+
if (isExistingSlotActive &&
|
|
2973
|
+
existingSlotForItem.slotId === activeSlotIdRef.current) {
|
|
2919
2974
|
setItem(loadedItem);
|
|
2920
2975
|
setSelection([]);
|
|
2921
2976
|
currentItemDescriptorRef.current = itemToLoad;
|
|
@@ -2984,6 +3039,14 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2984
3039
|
// slot the caller explicitly opened, do update.
|
|
2985
3040
|
const isFirstSlot = editorSlots.length === 0;
|
|
2986
3041
|
const isExplicitNewSlot = options?.openInNewSlot === true && !options?.targetSlotId;
|
|
3042
|
+
// Focus follows a new-slot action immediately. Waiting for getItem() made
|
|
3043
|
+
// an older, slow navigation able to reclaim focus after the user clicked
|
|
3044
|
+
// another slot. Any subsequent activation now wins because the async
|
|
3045
|
+
// completion below only updates global state while its target is active.
|
|
3046
|
+
if (isFirstSlot || isExplicitNewSlot) {
|
|
3047
|
+
activeSlotIdRef.current = targetSlotId;
|
|
3048
|
+
setActiveSlotId(targetSlotId);
|
|
3049
|
+
}
|
|
2987
3050
|
const shouldUpdateGlobalCurrentItem = isFirstSlot ||
|
|
2988
3051
|
isExplicitNewSlot ||
|
|
2989
3052
|
targetSlotId === activeSlotIdRef.current;
|
|
@@ -2995,17 +3058,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2995
3058
|
return undefined;
|
|
2996
3059
|
}
|
|
2997
3060
|
if (shouldUpdateGlobalCurrentItem &&
|
|
2998
|
-
|
|
3061
|
+
(targetSlotId !== activeSlotIdRef.current ||
|
|
3062
|
+
latestGlobalLoadKeyRef.current !== requestedItemKey)) {
|
|
2999
3063
|
return loadedItem;
|
|
3000
3064
|
}
|
|
3001
|
-
// Activate the new slot when this is either the initial first slot, or the
|
|
3002
|
-
// caller explicitly opened the item in a new slot — focus follows the action so
|
|
3003
|
-
// the user immediately sees what they just opened. Beyond that, slot focus is
|
|
3004
|
-
// driven by mouse hover/click.
|
|
3005
|
-
if (isFirstSlot || isExplicitNewSlot) {
|
|
3006
|
-
activeSlotIdRef.current = targetSlotId;
|
|
3007
|
-
setActiveSlotId(targetSlotId);
|
|
3008
|
-
}
|
|
3009
3065
|
if (shouldUpdateGlobalCurrentItem) {
|
|
3010
3066
|
setItem(loadedItem);
|
|
3011
3067
|
setSelection([]);
|
|
@@ -3035,7 +3091,11 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3035
3091
|
ensureFieldModificationStoreRegistered,
|
|
3036
3092
|
]);
|
|
3037
3093
|
const setActiveSlot = useCallback(async (slotId) => {
|
|
3038
|
-
|
|
3094
|
+
// Commands resolve their target through activeSlotIdRef so activation
|
|
3095
|
+
// must use that same source of truth. React state can briefly lag behind
|
|
3096
|
+
// the ref during rapid slot changes; comparing the stale render value
|
|
3097
|
+
// could leave one slot highlighted while toolbar commands target another.
|
|
3098
|
+
if (activeSlotIdRef.current === slotId)
|
|
3039
3099
|
return;
|
|
3040
3100
|
const slot = editorSlots.find((s) => s.slotId === slotId);
|
|
3041
3101
|
if (!slot)
|
|
@@ -3062,7 +3122,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3062
3122
|
targetSlotId: slotId,
|
|
3063
3123
|
});
|
|
3064
3124
|
}
|
|
3065
|
-
}, [
|
|
3125
|
+
}, [editorSlots, loadItem]);
|
|
3066
3126
|
const closeEditorSlot = useCallback((slotId) => {
|
|
3067
3127
|
const currentActiveSlotId = activeSlotId;
|
|
3068
3128
|
const isClosingActiveSlot = currentActiveSlotId === slotId;
|
|
@@ -3391,6 +3451,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3391
3451
|
sessionId,
|
|
3392
3452
|
onMessage: messageHandler,
|
|
3393
3453
|
onOpen: async () => {
|
|
3454
|
+
// The transport is open, but it is not subscribed to this page until the
|
|
3455
|
+
// server acknowledges the client-info message sent immediately after
|
|
3456
|
+
// this callback.
|
|
3457
|
+
setIsClientInfoAcknowledged(false);
|
|
3394
3458
|
// Clear concurrent user limit error on successful connection
|
|
3395
3459
|
setConcurrentUserLimitError(null);
|
|
3396
3460
|
// Startup WebSocket probe may have failed with a blocking error while seats were full.
|
|
@@ -4127,18 +4191,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4127
4191
|
}, [operationsContext.cleanup]);
|
|
4128
4192
|
// Shared focused field setter with lock handling (used in both contexts)
|
|
4129
4193
|
const setFocusedFieldWithLock = useCallback(async (field, requestLock) => {
|
|
4130
|
-
logFieldValueDiagnostic("focused-field", "setFocusedField requested", {
|
|
4131
|
-
field: summarizeFieldDescriptor(field),
|
|
4132
|
-
requestLock,
|
|
4133
|
-
ignoreBlur,
|
|
4134
|
-
currentFocusedField: summarizeFieldDescriptor(focusedFieldRef.current),
|
|
4135
|
-
lockedField: summarizeFieldDescriptor(lockedField),
|
|
4136
|
-
});
|
|
4137
4194
|
if (field) {
|
|
4138
4195
|
setIgnoreBlur(true);
|
|
4139
4196
|
setTimeout(() => {
|
|
4140
4197
|
setIgnoreBlur(false);
|
|
4141
4198
|
}, 20);
|
|
4199
|
+
// Selection follows the user's click independently of the asynchronous
|
|
4200
|
+
// edit lock. Lock ownership controls whether editing may proceed, but a
|
|
4201
|
+
// slow or rejected lock must not leave the form on the previous field.
|
|
4202
|
+
setFocusedField({ ...field });
|
|
4142
4203
|
if (requestLock) {
|
|
4143
4204
|
const lockResult = (await operations.ensureLock(field)) || false;
|
|
4144
4205
|
if (!lockResult) {
|
|
@@ -4148,19 +4209,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4148
4209
|
});
|
|
4149
4210
|
return false;
|
|
4150
4211
|
}
|
|
4151
|
-
setFocusedField({ ...field });
|
|
4152
|
-
logFieldValueDiagnostic("focused-field", "focused field set", {
|
|
4153
|
-
field: summarizeFieldDescriptor(field),
|
|
4154
|
-
requestLock,
|
|
4155
|
-
lockResult,
|
|
4156
|
-
});
|
|
4157
|
-
return true;
|
|
4158
4212
|
}
|
|
4159
|
-
setFocusedField({ ...field });
|
|
4160
|
-
logFieldValueDiagnostic("focused-field", "focused field set", {
|
|
4161
|
-
field: summarizeFieldDescriptor(field),
|
|
4162
|
-
requestLock,
|
|
4163
|
-
});
|
|
4164
4213
|
}
|
|
4165
4214
|
else {
|
|
4166
4215
|
// Keep the field selected when the blur was caused by clicking a User
|
|
@@ -4183,27 +4232,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4183
4232
|
now: Date.now(),
|
|
4184
4233
|
});
|
|
4185
4234
|
if (!ignoreBlur && !focusMovedToShowMe && !focusMovedToAgentTerminal) {
|
|
4186
|
-
logFieldValueDiagnostic("focused-field", "clearing focused field", {
|
|
4187
|
-
previousFocusedField: summarizeFieldDescriptor(focusedFieldRef.current),
|
|
4188
|
-
lockedField: summarizeFieldDescriptor(lockedField),
|
|
4189
|
-
sessionId,
|
|
4190
|
-
});
|
|
4191
4235
|
setFocusedField(undefined);
|
|
4192
4236
|
setLockedField(undefined); // Clear client-side lock state
|
|
4193
4237
|
releaseFieldLocks(sessionId);
|
|
4194
4238
|
}
|
|
4195
|
-
else {
|
|
4196
|
-
logFieldValueDiagnostic("focused-field", "clear skipped", {
|
|
4197
|
-
reason: ignoreBlur
|
|
4198
|
-
? "ignoreBlur"
|
|
4199
|
-
: focusMovedToShowMe
|
|
4200
|
-
? "manual show-me focus transfer"
|
|
4201
|
-
: "agent terminal focus transfer",
|
|
4202
|
-
previousFocusedField: summarizeFieldDescriptor(focusedFieldRef.current),
|
|
4203
|
-
focusMovedToShowMe,
|
|
4204
|
-
focusMovedToAgentTerminal,
|
|
4205
|
-
});
|
|
4206
|
-
}
|
|
4207
4239
|
}
|
|
4208
4240
|
return true;
|
|
4209
4241
|
}, [operations, ignoreBlur, sessionId, lockedField]);
|
|
@@ -4721,6 +4753,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4721
4753
|
},
|
|
4722
4754
|
selectWithoutAutoScroll,
|
|
4723
4755
|
consumeNextSelectionAutoScrollSuppression,
|
|
4756
|
+
consumeNextFocusedFieldAutoScrollSuppression,
|
|
4724
4757
|
contentTreeSelection,
|
|
4725
4758
|
setContentTreeSelection,
|
|
4726
4759
|
selectedForInsertion,
|
|
@@ -5160,6 +5193,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
5160
5193
|
closeEditorSlot,
|
|
5161
5194
|
setActiveSlot,
|
|
5162
5195
|
revision,
|
|
5196
|
+
fullReloadToken,
|
|
5163
5197
|
notifyPageModelReady,
|
|
5164
5198
|
pageModelReadyToken,
|
|
5165
5199
|
selectedComment,
|
|
@@ -5447,6 +5481,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
5447
5481
|
removingComponentIds,
|
|
5448
5482
|
currentItemDescriptor,
|
|
5449
5483
|
revision,
|
|
5484
|
+
fullReloadToken,
|
|
5450
5485
|
notifyPageModelReady,
|
|
5451
5486
|
pageModelReadyToken,
|
|
5452
5487
|
selectedComment,
|