@parhelia/core 0.3.12831 → 0.3.12833
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/emoji/EmojiPicker.d.ts +18 -0
- package/dist/components/emoji/EmojiPicker.js +102 -0
- package/dist/components/emoji/EmojiPicker.js.map +1 -0
- package/dist/components/emoji/EmojiText.d.ts +19 -0
- package/dist/components/emoji/EmojiText.js +30 -0
- package/dist/components/emoji/EmojiText.js.map +1 -0
- package/dist/components/emoji/emojiData.generated.d.ts +2 -0
- package/dist/components/emoji/emojiData.generated.js +1878 -0
- package/dist/components/emoji/emojiData.generated.js.map +1 -0
- package/dist/components/emoji/emojiIndex.d.ts +46 -0
- package/dist/components/emoji/emojiIndex.js +173 -0
- package/dist/components/emoji/emojiIndex.js.map +1 -0
- package/dist/components/emoji/emoticons.d.ts +21 -0
- package/dist/components/emoji/emoticons.js +167 -0
- package/dist/components/emoji/emoticons.js.map +1 -0
- package/dist/components/emoji/textareaInsert.d.ts +19 -0
- package/dist/components/emoji/textareaInsert.js +29 -0
- package/dist/components/emoji/textareaInsert.js.map +1 -0
- package/dist/components/emoji/twemoji.d.ts +30 -0
- package/dist/components/emoji/twemoji.js +84 -0
- package/dist/components/emoji/twemoji.js.map +1 -0
- package/dist/editor/agent-changes/agentChangeTargets.d.ts +58 -0
- package/dist/editor/agent-changes/agentChangeTargets.js +180 -0
- package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +101 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.js +167 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
- package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
- package/dist/editor/ai/AgentImagePreview.js +41 -0
- package/dist/editor/ai/AgentImagePreview.js.map +1 -0
- package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
- package/dist/editor/ai/activityRowNavigation.js +53 -0
- package/dist/editor/ai/activityRowNavigation.js.map +1 -0
- package/dist/editor/ai/terminal/activeReasoningModel.d.ts +9 -0
- package/dist/editor/ai/terminal/activeReasoningModel.js +20 -0
- package/dist/editor/ai/terminal/activeReasoningModel.js.map +1 -0
- package/dist/editor/ai/terminal/agentDurations.d.ts +27 -0
- package/dist/editor/ai/terminal/agentDurations.js +89 -0
- package/dist/editor/ai/terminal/agentDurations.js.map +1 -0
- package/dist/editor/ai/terminal/agentTurnTiming.d.ts +35 -0
- package/dist/editor/ai/terminal/agentTurnTiming.js +128 -0
- package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
- package/dist/editor/ai/terminal/components/AgentProfileRecovery.d.ts +10 -0
- package/dist/editor/ai/terminal/components/AgentProfileRecovery.js +12 -0
- package/dist/editor/ai/terminal/components/AgentProfileRecovery.js.map +1 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.d.ts +15 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +62 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -0
- package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.d.ts +6 -0
- package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js +61 -0
- package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js.map +1 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
- package/dist/editor/ai/terminal/reasoningEffortLevels.d.ts +8 -0
- package/dist/editor/ai/terminal/reasoningEffortLevels.js +54 -0
- package/dist/editor/ai/terminal/reasoningEffortLevels.js.map +1 -0
- package/dist/editor/ai/terminal/requestUsage.d.ts +3 -0
- package/dist/editor/ai/terminal/requestUsage.js +22 -0
- package/dist/editor/ai/terminal/requestUsage.js.map +1 -0
- package/dist/editor/ai/terminal/toolCallDiagnostics.d.ts +34 -0
- package/dist/editor/ai/terminal/toolCallDiagnostics.js +218 -0
- package/dist/editor/ai/terminal/toolCallDiagnostics.js.map +1 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
- package/dist/editor/ai/terminal/useAgentReasoningEffortState.d.ts +5 -0
- package/dist/editor/ai/terminal/useAgentReasoningEffortState.js +10 -0
- package/dist/editor/ai/terminal/useAgentReasoningEffortState.js.map +1 -0
- package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
- package/dist/editor/bridge/bridgeKeys.js +8 -0
- package/dist/editor/bridge/bridgeKeys.js.map +1 -0
- package/dist/editor/bridge/linkDownload.d.ts +3 -0
- package/dist/editor/bridge/linkDownload.js +52 -0
- package/dist/editor/bridge/linkDownload.js.map +1 -0
- package/dist/editor/client/SessionsDialog.d.ts +2 -0
- package/dist/editor/client/SessionsDialog.js +27 -0
- package/dist/editor/client/SessionsDialog.js.map +1 -0
- package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
- package/dist/editor/client/agentLoadItemPolicy.js +60 -0
- package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
- package/dist/editor/client/clipboardStorage.d.ts +10 -0
- package/dist/editor/client/clipboardStorage.js +57 -0
- package/dist/editor/client/clipboardStorage.js.map +1 -0
- package/dist/editor/client/hooks/useRepositoryItemRefresh.d.ts +4 -0
- package/dist/editor/client/hooks/useRepositoryItemRefresh.js +62 -0
- package/dist/editor/client/hooks/useRepositoryItemRefresh.js.map +1 -0
- package/dist/editor/client/liveEditState.d.ts +16 -0
- package/dist/editor/client/liveEditState.js +25 -0
- package/dist/editor/client/liveEditState.js.map +1 -0
- package/dist/editor/client/liveSessionState.d.ts +6 -0
- package/dist/editor/client/liveSessionState.js +20 -0
- package/dist/editor/client/liveSessionState.js.map +1 -0
- package/dist/editor/client/localUserEditActivity.d.ts +3 -0
- package/dist/editor/client/localUserEditActivity.js +12 -0
- package/dist/editor/client/localUserEditActivity.js.map +1 -0
- package/dist/editor/client/valueStore.d.ts +22 -0
- package/dist/editor/client/valueStore.js +29 -0
- package/dist/editor/client/valueStore.js.map +1 -0
- package/dist/editor/commands/componentClipboardCommands.d.ts +35 -0
- package/dist/editor/commands/componentClipboardCommands.js +271 -0
- package/dist/editor/commands/componentClipboardCommands.js.map +1 -0
- package/dist/editor/commands/componentMenuGroups.d.ts +2 -0
- package/dist/editor/commands/componentMenuGroups.js +43 -0
- package/dist/editor/commands/componentMenuGroups.js.map +1 -0
- package/dist/editor/commands/mediaCommands.d.ts +5 -0
- package/dist/editor/commands/mediaCommands.js +59 -0
- package/dist/editor/commands/mediaCommands.js.map +1 -0
- package/dist/editor/component-conversion/ComponentTypePickerDialog.d.ts +12 -0
- package/dist/editor/component-conversion/ComponentTypePickerDialog.js +40 -0
- package/dist/editor/component-conversion/ComponentTypePickerDialog.js.map +1 -0
- package/dist/editor/component-conversion/ConversionAiDebugButton.d.ts +17 -0
- package/dist/editor/component-conversion/ConversionAiDebugButton.js +80 -0
- package/dist/editor/component-conversion/ConversionAiDebugButton.js.map +1 -0
- package/dist/editor/component-conversion/ConvertComponentDialog.d.ts +28 -0
- package/dist/editor/component-conversion/ConvertComponentDialog.js +633 -0
- package/dist/editor/component-conversion/ConvertComponentDialog.js.map +1 -0
- package/dist/editor/component-conversion/conversionModel.d.ts +109 -0
- package/dist/editor/component-conversion/conversionModel.js +519 -0
- package/dist/editor/component-conversion/conversionModel.js.map +1 -0
- package/dist/editor/component-conversion/conversionService.d.ts +12 -0
- package/dist/editor/component-conversion/conversionService.js +16 -0
- package/dist/editor/component-conversion/conversionService.js.map +1 -0
- package/dist/editor/component-conversion/conversionTypes.d.ts +214 -0
- package/dist/editor/component-conversion/conversionTypes.js +2 -0
- package/dist/editor/component-conversion/conversionTypes.js.map +1 -0
- package/dist/editor/component-conversion/convertComponentsCommand.d.ts +25 -0
- package/dist/editor/component-conversion/convertComponentsCommand.js +196 -0
- package/dist/editor/component-conversion/convertComponentsCommand.js.map +1 -0
- package/dist/editor/componentVisualMode.d.ts +14 -0
- package/dist/editor/componentVisualMode.js +43 -0
- package/dist/editor/componentVisualMode.js.map +1 -0
- package/dist/editor/field-types/FieldHistoryBoundary.d.ts +7 -0
- package/dist/editor/field-types/FieldHistoryBoundary.js +40 -0
- package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -0
- package/dist/editor/field-types/fieldStyles.d.ts +21 -0
- package/dist/editor/field-types/fieldStyles.js +22 -0
- package/dist/editor/field-types/fieldStyles.js.map +1 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +32 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.js +68 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
- package/dist/editor/field-types/richtext/utils/spellCheckText.d.ts +31 -0
- package/dist/editor/field-types/richtext/utils/spellCheckText.js +82 -0
- package/dist/editor/field-types/richtext/utils/spellCheckText.js.map +1 -0
- package/dist/editor/field-types/useFocusedFieldInput.d.ts +13 -0
- package/dist/editor/field-types/useFocusedFieldInput.js +50 -0
- package/dist/editor/field-types/useFocusedFieldInput.js.map +1 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +43 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.js +149 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
- package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
- package/dist/editor/find-replace/FindReplacePanel.js +311 -0
- package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
- package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
- package/dist/editor/find-replace/findReplaceCommand.js +25 -0
- package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
- package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
- package/dist/editor/find-replace/findReplaceMatches.js +66 -0
- package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
- package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
- package/dist/editor/find-replace/findReplaceStore.js +61 -0
- package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
- package/dist/editor/find-replace/findReplaceTargets.d.ts +51 -0
- package/dist/editor/find-replace/findReplaceTargets.js +110 -0
- package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
- package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
- package/dist/editor/find-replace/findReplaceText.js +189 -0
- package/dist/editor/find-replace/findReplaceText.js.map +1 -0
- package/dist/editor/itemContextMenuGroups.d.ts +16 -0
- package/dist/editor/itemContextMenuGroups.js +57 -0
- package/dist/editor/itemContextMenuGroups.js.map +1 -0
- package/dist/editor/media-selector/MediaDetailsView.d.ts +14 -0
- package/dist/editor/media-selector/MediaDetailsView.js +152 -0
- package/dist/editor/media-selector/MediaDetailsView.js.map +1 -0
- package/dist/editor/media-selector/UploadMediaFileDialog.d.ts +5 -0
- package/dist/editor/media-selector/UploadMediaFileDialog.js +14 -0
- package/dist/editor/media-selector/UploadMediaFileDialog.js.map +1 -0
- package/dist/editor/media-selector/useMediaFolderDrag.d.ts +26 -0
- package/dist/editor/media-selector/useMediaFolderDrag.js +153 -0
- package/dist/editor/media-selector/useMediaFolderDrag.js.map +1 -0
- package/dist/editor/menubar/OpenPublishedPageButton.d.ts +1 -0
- package/dist/editor/menubar/OpenPublishedPageButton.js +22 -0
- package/dist/editor/menubar/OpenPublishedPageButton.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.d.ts +11 -0
- package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js +65 -0
- package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.d.ts +5 -0
- package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js +16 -0
- package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js.map +1 -0
- package/dist/editor/mobileBottomPanel.d.ts +40 -0
- package/dist/editor/mobileBottomPanel.js +63 -0
- package/dist/editor/mobileBottomPanel.js.map +1 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +17 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +33 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.d.ts +6 -0
- package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js +100 -0
- package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js.map +1 -0
- package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.d.ts +9 -0
- package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js +32 -0
- package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js.map +1 -0
- package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.d.ts +14 -0
- package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js +110 -0
- package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js.map +1 -0
- package/dist/editor/page-editor-chrome/ConversionIndicators.d.ts +8 -0
- package/dist/editor/page-editor-chrome/ConversionIndicators.js +75 -0
- package/dist/editor/page-editor-chrome/ConversionIndicators.js.map +1 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +29 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +295 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
- package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.d.ts +15 -0
- package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js +31 -0
- package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js.map +1 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +120 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/SpellCheckHighlightings.d.ts +12 -0
- package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js +197 -0
- package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/ValidationRulerMarks.d.ts +11 -0
- package/dist/editor/page-editor-chrome/ValidationRulerMarks.js +56 -0
- package/dist/editor/page-editor-chrome/ValidationRulerMarks.js.map +1 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.d.ts +44 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js +89 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.d.ts +17 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js +53 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.d.ts +11 -0
- package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js +84 -0
- package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.d.ts +34 -0
- package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js +229 -0
- package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.d.ts +9 -0
- package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js +34 -0
- package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.d.ts +49 -0
- package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js +241 -0
- package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js.map +1 -0
- package/dist/editor/page-viewer/CanvasOverviewRuler.d.ts +11 -0
- package/dist/editor/page-viewer/CanvasOverviewRuler.js +65 -0
- package/dist/editor/page-viewer/CanvasOverviewRuler.js.map +1 -0
- package/dist/editor/page-viewer/DynamicRenderingsBar.d.ts +23 -0
- package/dist/editor/page-viewer/DynamicRenderingsBar.js +28 -0
- package/dist/editor/page-viewer/DynamicRenderingsBar.js.map +1 -0
- package/dist/editor/page-viewer/DynamicRenderingsStrip.d.ts +18 -0
- package/dist/editor/page-viewer/DynamicRenderingsStrip.js +29 -0
- package/dist/editor/page-viewer/DynamicRenderingsStrip.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMargin.d.ts +57 -0
- package/dist/editor/page-viewer/FeedbackMargin.js +377 -0
- package/dist/editor/page-viewer/FeedbackMargin.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMarginController.d.ts +76 -0
- package/dist/editor/page-viewer/FeedbackMarginController.js +241 -0
- package/dist/editor/page-viewer/FeedbackMarginController.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMarginMarker.d.ts +16 -0
- package/dist/editor/page-viewer/FeedbackMarginMarker.js +24 -0
- package/dist/editor/page-viewer/FeedbackMarginMarker.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMarginResizeHandle.d.ts +23 -0
- package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js +105 -0
- package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js.map +1 -0
- package/dist/editor/page-viewer/InteractivePreviewBar.d.ts +24 -0
- package/dist/editor/page-viewer/InteractivePreviewBar.js +31 -0
- package/dist/editor/page-viewer/InteractivePreviewBar.js.map +1 -0
- package/dist/editor/page-viewer/MobileCommentsPanel.d.ts +16 -0
- package/dist/editor/page-viewer/MobileCommentsPanel.js +112 -0
- package/dist/editor/page-viewer/MobileCommentsPanel.js.map +1 -0
- package/dist/editor/page-viewer/PreviewModeNotice.d.ts +7 -0
- package/dist/editor/page-viewer/PreviewModeNotice.js +19 -0
- package/dist/editor/page-viewer/PreviewModeNotice.js.map +1 -0
- package/dist/editor/page-viewer/RenderingAiCheck.d.ts +18 -0
- package/dist/editor/page-viewer/RenderingAiCheck.js +45 -0
- package/dist/editor/page-viewer/RenderingAiCheck.js.map +1 -0
- package/dist/editor/page-viewer/RenderingApprovalDialog.d.ts +32 -0
- package/dist/editor/page-viewer/RenderingApprovalDialog.js +191 -0
- package/dist/editor/page-viewer/RenderingApprovalDialog.js.map +1 -0
- package/dist/editor/page-viewer/SealedClientCodePreview.d.ts +17 -0
- package/dist/editor/page-viewer/SealedClientCodePreview.js +38 -0
- package/dist/editor/page-viewer/SealedClientCodePreview.js.map +1 -0
- package/dist/editor/page-viewer/canvasFrameNavigation.d.ts +18 -0
- package/dist/editor/page-viewer/canvasFrameNavigation.js +36 -0
- package/dist/editor/page-viewer/canvasFrameNavigation.js.map +1 -0
- package/dist/editor/page-viewer/canvasLoadSettling.d.ts +42 -0
- package/dist/editor/page-viewer/canvasLoadSettling.js +46 -0
- package/dist/editor/page-viewer/canvasLoadSettling.js.map +1 -0
- package/dist/editor/page-viewer/canvasScrollHandoff.d.ts +34 -0
- package/dist/editor/page-viewer/canvasScrollHandoff.js +55 -0
- package/dist/editor/page-viewer/canvasScrollHandoff.js.map +1 -0
- package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
- package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
- package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
- package/dist/editor/page-viewer/feedbackMarginLayout.d.ts +119 -0
- package/dist/editor/page-viewer/feedbackMarginLayout.js +155 -0
- package/dist/editor/page-viewer/feedbackMarginLayout.js.map +1 -0
- package/dist/editor/page-viewer/feedbackMarginSources.d.ts +36 -0
- package/dist/editor/page-viewer/feedbackMarginSources.js +196 -0
- package/dist/editor/page-viewer/feedbackMarginSources.js.map +1 -0
- package/dist/editor/page-viewer/feedbackMarginWidth.d.ts +43 -0
- package/dist/editor/page-viewer/feedbackMarginWidth.js +107 -0
- package/dist/editor/page-viewer/feedbackMarginWidth.js.map +1 -0
- package/dist/editor/page-viewer/interactivePreview.d.ts +168 -0
- package/dist/editor/page-viewer/interactivePreview.js +344 -0
- package/dist/editor/page-viewer/interactivePreview.js.map +1 -0
- package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
- package/dist/editor/page-viewer/minimapViewport.js +34 -0
- package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
- package/dist/editor/page-viewer/openPageItems.d.ts +29 -0
- package/dist/editor/page-viewer/openPageItems.js +73 -0
- package/dist/editor/page-viewer/openPageItems.js.map +1 -0
- package/dist/editor/page-viewer/overviewRuler.d.ts +128 -0
- package/dist/editor/page-viewer/overviewRuler.js +226 -0
- package/dist/editor/page-viewer/overviewRuler.js.map +1 -0
- package/dist/editor/page-viewer/previewEditAttempt.d.ts +31 -0
- package/dist/editor/page-viewer/previewEditAttempt.js +68 -0
- package/dist/editor/page-viewer/previewEditAttempt.js.map +1 -0
- package/dist/editor/page-viewer/renderingApproval.d.ts +59 -0
- package/dist/editor/page-viewer/renderingApproval.js +186 -0
- package/dist/editor/page-viewer/renderingApproval.js.map +1 -0
- package/dist/editor/page-viewer/renderingChanges.d.ts +29 -0
- package/dist/editor/page-viewer/renderingChanges.js +40 -0
- package/dist/editor/page-viewer/renderingChanges.js.map +1 -0
- package/dist/editor/page-viewer/scrollIntoViewTextRanges.d.ts +23 -0
- package/dist/editor/page-viewer/scrollIntoViewTextRanges.js +26 -0
- package/dist/editor/page-viewer/scrollIntoViewTextRanges.js.map +1 -0
- package/dist/editor/page-viewer/useInteractivePreview.d.ts +77 -0
- package/dist/editor/page-viewer/useInteractivePreview.js +210 -0
- package/dist/editor/page-viewer/useInteractivePreview.js.map +1 -0
- package/dist/editor/reviews/CollapsibleText.d.ts +13 -0
- package/dist/editor/reviews/CollapsibleText.js +41 -0
- package/dist/editor/reviews/CollapsibleText.js.map +1 -0
- package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
- package/dist/editor/reviews/CommentImageAttachments.js +19 -0
- package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
- package/dist/editor/reviews/CommentQuote.d.ts +13 -0
- package/dist/editor/reviews/CommentQuote.js +35 -0
- package/dist/editor/reviews/CommentQuote.js.map +1 -0
- package/dist/editor/reviews/CommentTargetOutline.d.ts +13 -0
- package/dist/editor/reviews/CommentTargetOutline.js +21 -0
- package/dist/editor/reviews/CommentTargetOutline.js.map +1 -0
- package/dist/editor/reviews/CommentTargetPickerDomLayer.d.ts +7 -0
- package/dist/editor/reviews/CommentTargetPickerDomLayer.js +117 -0
- package/dist/editor/reviews/CommentTargetPickerDomLayer.js.map +1 -0
- package/dist/editor/reviews/CommentThreadAgentLink.d.ts +28 -0
- package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
- package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
- package/dist/editor/reviews/CommentThreadCard.d.ts +34 -0
- package/dist/editor/reviews/CommentThreadCard.js +156 -0
- package/dist/editor/reviews/CommentThreadCard.js.map +1 -0
- package/dist/editor/reviews/SuggestionThreadCard.d.ts +19 -0
- package/dist/editor/reviews/SuggestionThreadCard.js +25 -0
- package/dist/editor/reviews/SuggestionThreadCard.js.map +1 -0
- package/dist/editor/reviews/addCommentOnTarget.d.ts +22 -0
- package/dist/editor/reviews/addCommentOnTarget.js +32 -0
- package/dist/editor/reviews/addCommentOnTarget.js.map +1 -0
- package/dist/editor/reviews/balloonLayout.d.ts +51 -0
- package/dist/editor/reviews/balloonLayout.js +101 -0
- package/dist/editor/reviews/balloonLayout.js.map +1 -0
- package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
- package/dist/editor/reviews/commentAgentAttachments.js +51 -0
- package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
- package/dist/editor/reviews/commentImages.d.ts +48 -0
- package/dist/editor/reviews/commentImages.js +128 -0
- package/dist/editor/reviews/commentImages.js.map +1 -0
- package/dist/editor/reviews/commentTargetPicker.d.ts +114 -0
- package/dist/editor/reviews/commentTargetPicker.js +153 -0
- package/dist/editor/reviews/commentTargetPicker.js.map +1 -0
- package/dist/editor/reviews/feedbackBalloonDate.d.ts +8 -0
- package/dist/editor/reviews/feedbackBalloonDate.js +22 -0
- package/dist/editor/reviews/feedbackBalloonDate.js.map +1 -0
- package/dist/editor/reviews/feedbackDrafts.d.ts +49 -0
- package/dist/editor/reviews/feedbackDrafts.js +74 -0
- package/dist/editor/reviews/feedbackDrafts.js.map +1 -0
- package/dist/editor/reviews/feedbackHoverState.d.ts +18 -0
- package/dist/editor/reviews/feedbackHoverState.js +35 -0
- package/dist/editor/reviews/feedbackHoverState.js.map +1 -0
- package/dist/editor/reviews/feedbackPersonFilter.d.ts +3 -0
- package/dist/editor/reviews/feedbackPersonFilter.js +32 -0
- package/dist/editor/reviews/feedbackPersonFilter.js.map +1 -0
- package/dist/editor/reviews/feedbackThreadSelection.d.ts +10 -0
- package/dist/editor/reviews/feedbackThreadSelection.js +31 -0
- package/dist/editor/reviews/feedbackThreadSelection.js.map +1 -0
- package/dist/editor/reviews/feedbackThreads.d.ts +50 -0
- package/dist/editor/reviews/feedbackThreads.js +135 -0
- package/dist/editor/reviews/feedbackThreads.js.map +1 -0
- package/dist/editor/reviews/feedbackWheelForwarding.d.ts +34 -0
- package/dist/editor/reviews/feedbackWheelForwarding.js +108 -0
- package/dist/editor/reviews/feedbackWheelForwarding.js.map +1 -0
- package/dist/editor/reviews/reviewUrlScope.d.ts +23 -0
- package/dist/editor/reviews/reviewUrlScope.js +86 -0
- package/dist/editor/reviews/reviewUrlScope.js.map +1 -0
- package/dist/editor/reviews/scrollWithin.d.ts +29 -0
- package/dist/editor/reviews/scrollWithin.js +87 -0
- package/dist/editor/reviews/scrollWithin.js.map +1 -0
- package/dist/editor/reviews/subtreeFeedback.d.ts +57 -0
- package/dist/editor/reviews/subtreeFeedback.js +137 -0
- package/dist/editor/reviews/subtreeFeedback.js.map +1 -0
- package/dist/editor/reviews/useCommentImagePaste.d.ts +80 -0
- package/dist/editor/reviews/useCommentImagePaste.js +252 -0
- package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
- package/dist/editor/reviews/useFeedbackThreads.d.ts +35 -0
- package/dist/editor/reviews/useFeedbackThreads.js +137 -0
- package/dist/editor/reviews/useFeedbackThreads.js.map +1 -0
- package/dist/editor/reviews/useMeasuredHeights.d.ts +25 -0
- package/dist/editor/reviews/useMeasuredHeights.js +176 -0
- package/dist/editor/reviews/useMeasuredHeights.js.map +1 -0
- package/dist/editor/reviews/usePendingFeedbackFocus.d.ts +7 -0
- package/dist/editor/reviews/usePendingFeedbackFocus.js +42 -0
- package/dist/editor/reviews/usePendingFeedbackFocus.js.map +1 -0
- package/dist/editor/services/mcpAccessService.d.ts +93 -0
- package/dist/editor/services/mcpAccessService.js +41 -0
- package/dist/editor/services/mcpAccessService.js.map +1 -0
- package/dist/editor/services/migrationService.d.ts +31 -0
- package/dist/editor/services/migrationService.js +22 -0
- package/dist/editor/services/migrationService.js.map +1 -0
- package/dist/editor/services/previewTokenService.d.ts +14 -0
- package/dist/editor/services/previewTokenService.js +34 -0
- package/dist/editor/services/previewTokenService.js.map +1 -0
- package/dist/editor/services/publicSiteService.d.ts +40 -0
- package/dist/editor/services/publicSiteService.js +5 -0
- package/dist/editor/services/publicSiteService.js.map +1 -0
- package/dist/editor/services/renderingsService.d.ts +117 -0
- package/dist/editor/services/renderingsService.js +245 -0
- package/dist/editor/services/renderingsService.js.map +1 -0
- package/dist/editor/services/spellCheckService.d.ts +13 -0
- package/dist/editor/services/spellCheckService.js +33 -0
- package/dist/editor/services/spellCheckService.js.map +1 -0
- package/dist/editor/settings/MigrationJournalCard.d.ts +12 -0
- package/dist/editor/settings/MigrationJournalCard.js +114 -0
- package/dist/editor/settings/MigrationJournalCard.js.map +1 -0
- package/dist/editor/settings/panels/McpAccessPanel.d.ts +7 -0
- package/dist/editor/settings/panels/McpAccessPanel.js +95 -0
- package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -0
- package/dist/editor/settings/panels/McpAccessSettingsView.d.ts +8 -0
- package/dist/editor/settings/panels/McpAccessSettingsView.js +221 -0
- package/dist/editor/settings/panels/McpAccessSettingsView.js.map +1 -0
- package/dist/editor/settings/panels/PublicSiteEntryDialog.d.ts +8 -0
- package/dist/editor/settings/panels/PublicSiteEntryDialog.js +113 -0
- package/dist/editor/settings/panels/PublicSiteEntryDialog.js.map +1 -0
- package/dist/editor/settings/panels/PublicSitesPanel.d.ts +1 -0
- package/dist/editor/settings/panels/PublicSitesPanel.js +153 -0
- package/dist/editor/settings/panels/PublicSitesPanel.js.map +1 -0
- package/dist/editor/settings/panels/SpellCheckPanel.d.ts +8 -0
- package/dist/editor/settings/panels/SpellCheckPanel.js +253 -0
- package/dist/editor/settings/panels/SpellCheckPanel.js.map +1 -0
- package/dist/editor/settings/panels/publicSiteHelpers.d.ts +6 -0
- package/dist/editor/settings/panels/publicSiteHelpers.js +30 -0
- package/dist/editor/settings/panels/publicSiteHelpers.js.map +1 -0
- package/dist/editor/sidebar/FeedbackSidebar.d.ts +7 -0
- package/dist/editor/sidebar/FeedbackSidebar.js +300 -0
- package/dist/editor/sidebar/FeedbackSidebar.js.map +1 -0
- package/dist/editor/sidebar/OperationDetailsContent.d.ts +14 -0
- package/dist/editor/sidebar/OperationDetailsContent.js +571 -0
- package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -0
- package/dist/editor/sidebar/liveComponentThumbnails.d.ts +66 -0
- package/dist/editor/sidebar/liveComponentThumbnails.js +225 -0
- package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
- package/dist/editor/spellcheck/canvasSpellCheckContextMenu.d.ts +30 -0
- package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js +69 -0
- package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js.map +1 -0
- package/dist/editor/spellcheck/htmlSpellDocument.d.ts +60 -0
- package/dist/editor/spellcheck/htmlSpellDocument.js +181 -0
- package/dist/editor/spellcheck/htmlSpellDocument.js.map +1 -0
- package/dist/editor/spellcheck/htmlSpellTokenizer.d.ts +45 -0
- package/dist/editor/spellcheck/htmlSpellTokenizer.js +277 -0
- package/dist/editor/spellcheck/htmlSpellTokenizer.js.map +1 -0
- package/dist/editor/spellcheck/replacementGuard.d.ts +27 -0
- package/dist/editor/spellcheck/replacementGuard.js +29 -0
- package/dist/editor/spellcheck/replacementGuard.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckCanvasStore.d.ts +17 -0
- package/dist/editor/spellcheck/spellCheckCanvasStore.js +37 -0
- package/dist/editor/spellcheck/spellCheckCanvasStore.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckCanvasTargets.d.ts +71 -0
- package/dist/editor/spellcheck/spellCheckCanvasTargets.js +126 -0
- package/dist/editor/spellcheck/spellCheckCanvasTargets.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckClient.d.ts +66 -0
- package/dist/editor/spellcheck/spellCheckClient.js +0 -0
- package/dist/editor/spellcheck/spellCheckClient.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckContextMenu.d.ts +52 -0
- package/dist/editor/spellcheck/spellCheckContextMenu.js +120 -0
- package/dist/editor/spellcheck/spellCheckContextMenu.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckReplace.d.ts +8 -0
- package/dist/editor/spellcheck/spellCheckReplace.js +20 -0
- package/dist/editor/spellcheck/spellCheckReplace.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckStyles.d.ts +11 -0
- package/dist/editor/spellcheck/spellCheckStyles.js +12 -0
- package/dist/editor/spellcheck/spellCheckStyles.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckTypes.d.ts +94 -0
- package/dist/editor/spellcheck/spellCheckTypes.js +2 -0
- package/dist/editor/spellcheck/spellCheckTypes.js.map +1 -0
- package/dist/editor/spellcheck/textMarkHitTest.d.ts +14 -0
- package/dist/editor/spellcheck/textMarkHitTest.js +39 -0
- package/dist/editor/spellcheck/textMarkHitTest.js.map +1 -0
- package/dist/editor/spellcheck/useSpellCheck.d.ts +16 -0
- package/dist/editor/spellcheck/useSpellCheck.js +57 -0
- package/dist/editor/spellcheck/useSpellCheck.js.map +1 -0
- package/dist/editor/ui/DynamicRenderingsPublishWarning.d.ts +14 -0
- package/dist/editor/ui/DynamicRenderingsPublishWarning.js +40 -0
- package/dist/editor/ui/DynamicRenderingsPublishWarning.js.map +1 -0
- package/dist/editor/ui/ParheliaMark.d.ts +15 -0
- package/dist/editor/ui/ParheliaMark.js +12 -0
- package/dist/editor/ui/ParheliaMark.js.map +1 -0
- package/dist/editor/ui/PublishReadinessSummary.d.ts +12 -0
- package/dist/editor/ui/PublishReadinessSummary.js +34 -0
- package/dist/editor/ui/PublishReadinessSummary.js.map +1 -0
- package/dist/editor/ui/RootItemPicker.d.ts +18 -0
- package/dist/editor/ui/RootItemPicker.js +112 -0
- package/dist/editor/ui/RootItemPicker.js.map +1 -0
- package/dist/editor/ui/publishReadiness.d.ts +98 -0
- package/dist/editor/ui/publishReadiness.js +307 -0
- package/dist/editor/ui/publishReadiness.js.map +1 -0
- package/dist/editor/ui/usePublishingItem.d.ts +8 -0
- package/dist/editor/ui/usePublishingItem.js +47 -0
- package/dist/editor/ui/usePublishingItem.js.map +1 -0
- package/dist/editor/undoEligibility.d.ts +2 -0
- package/dist/editor/undoEligibility.js +8 -0
- package/dist/editor/undoEligibility.js.map +1 -0
- package/dist/editor/utils/dataTransferImages.d.ts +7 -0
- package/dist/editor/utils/dataTransferImages.js +43 -0
- package/dist/editor/utils/dataTransferImages.js.map +1 -0
- package/dist/editor/utils/linkDisplay.d.ts +12 -0
- package/dist/editor/utils/linkDisplay.js +23 -0
- package/dist/editor/utils/linkDisplay.js.map +1 -0
- package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
- package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
- package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
- package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
- package/dist/editor/validation/navigateToValidationIssue.js +43 -0
- package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
- package/dist/editor/validation/validationFixAgent.d.ts +26 -0
- package/dist/editor/validation/validationFixAgent.js +124 -0
- package/dist/editor/validation/validationFixAgent.js.map +1 -0
- package/dist/editor/validation/validationRulerIssues.d.ts +17 -0
- package/dist/editor/validation/validationRulerIssues.js +44 -0
- package/dist/editor/validation/validationRulerIssues.js.map +1 -0
- package/dist/editor/validation/validationSeverity.d.ts +15 -0
- package/dist/editor/validation/validationSeverity.js +47 -0
- package/dist/editor/validation/validationSeverity.js.map +1 -0
- package/dist/lib/viewportClip.d.ts +18 -0
- package/dist/lib/viewportClip.js +22 -0
- package/dist/lib/viewportClip.js.map +1 -0
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
- package/dist/task-board/components/AttentionPromptDialog.js +45 -0
- package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
- package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
- package/dist/task-board/components/GoalFindingsTable.js +160 -0
- package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
- package/dist/task-board/components/IssuePanel.d.ts +31 -0
- package/dist/task-board/components/IssuePanel.js +268 -0
- package/dist/task-board/components/IssuePanel.js.map +1 -0
- package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
- package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
- package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
- package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
- package/dist/task-board/components/SubgoalFindings.js +88 -0
- package/dist/task-board/components/SubgoalFindings.js.map +1 -0
- package/dist/task-board/components/commentAuthor.d.ts +14 -0
- package/dist/task-board/components/commentAuthor.js +25 -0
- package/dist/task-board/components/commentAuthor.js.map +1 -0
- package/dist/task-board/services/issueService.d.ts +193 -0
- package/dist/task-board/services/issueService.js +97 -0
- package/dist/task-board/services/issueService.js.map +1 -0
- package/dist/task-board/taskBlockers.d.ts +10 -0
- package/dist/task-board/taskBlockers.js +66 -0
- package/dist/task-board/taskBlockers.js.map +1 -0
- package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
- package/dist/task-board/utils/projectDashboardModel.js +369 -0
- package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
- package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
- package/dist/task-board/views/ProjectDashboardView.js +308 -0
- package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
- package/dist/tour/TourInputBoundary.d.ts +6 -0
- package/dist/tour/TourInputBoundary.js +82 -0
- package/dist/tour/TourInputBoundary.js.map +1 -0
- package/dist/tour/sandbox-tour-copy.d.ts +8 -0
- package/dist/tour/sandbox-tour-copy.js +8 -0
- package/dist/tour/sandbox-tour-copy.js.map +1 -1
- package/dist/tour/sandbox-tour.d.ts +3 -0
- package/dist/tour/sandbox-tour.js +112 -6
- package/dist/tour/sandbox-tour.js.map +1 -1
- package/dist/tour/tour-utils.d.ts +6 -0
- package/dist/tour/tour-utils.js +10 -0
- package/dist/tour/tour-utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/editor/page-editor-chrome/bridgeLinkValue.d.ts +0 -10
- package/dist/editor/page-editor-chrome/bridgeLinkValue.js +0 -55
- package/dist/editor/page-editor-chrome/bridgeLinkValue.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Tracks whether the run is waiting on the model provider. The server emits a
|
|
4
|
+
* Heartbeat delta every few seconds while a provider request has produced no
|
|
5
|
+
* first chunk; the flag flips on at the first heartbeat and off again on the
|
|
6
|
+
* next real delta or status change. It never adds anything to the transcript:
|
|
7
|
+
* the live "Thinking" label reads it to switch its wording, and that is the
|
|
8
|
+
* whole surface.
|
|
9
|
+
*/
|
|
10
|
+
export function useAgentProviderWait(input) {
|
|
11
|
+
const { actions } = input;
|
|
12
|
+
const handleHeartbeatDelta = useCallback((_message) => {
|
|
13
|
+
actions.patchRunState({ isWaitingForProvider: true });
|
|
14
|
+
}, [actions]);
|
|
15
|
+
const clearProviderWait = useCallback(() => {
|
|
16
|
+
actions.patchRunState({ isWaitingForProvider: false });
|
|
17
|
+
}, [actions]);
|
|
18
|
+
return {
|
|
19
|
+
handleHeartbeatDelta,
|
|
20
|
+
clearProviderWait,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=useAgentProviderWait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAgentProviderWait.js","sourceRoot":"","sources":["../../../../src/editor/ai/terminal/useAgentProviderWait.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAMpC;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAuC;IAC1E,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE1B,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,QAA4B,EAAE,EAAE;QAC/B,OAAO,CAAC,aAAa,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,OAAO,CAAC,aAAa,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO;QACL,oBAAoB;QACpB,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AgentDetails } from "../../services/agentService";
|
|
2
|
+
export declare function useAgentReasoningEffortState(agent: Pick<AgentDetails, "id" | "reasoningEffort"> | undefined): {
|
|
3
|
+
reasoningEffort: string;
|
|
4
|
+
setReasoningEffort: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
5
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
export function useAgentReasoningEffortState(agent) {
|
|
3
|
+
const [reasoningEffort, setReasoningEffort] = useState("");
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (agent?.id)
|
|
6
|
+
setReasoningEffort(agent.reasoningEffort ?? "");
|
|
7
|
+
}, [agent?.id, agent?.reasoningEffort]);
|
|
8
|
+
return { reasoningEffort, setReasoningEffort };
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=useAgentReasoningEffortState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAgentReasoningEffortState.js","sourceRoot":"","sources":["../../../../src/editor/ai/terminal/useAgentReasoningEffortState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,UAAU,4BAA4B,CAC1C,KAA+D;IAE/D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACnE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,EAAE,EAAE;YAAE,kBAAkB,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;IACxC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component ids cross the bridge in whatever spelling the host used - braces,
|
|
3
|
+
* dashes, upper or lower case. Compare them through this normalizer.
|
|
4
|
+
*/
|
|
5
|
+
export function normalizeBridgeKey(value) {
|
|
6
|
+
return (value || "").replace(/[{}-]/g, "").toLowerCase();
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=bridgeKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridgeKeys.js","sourceRoot":"","sources":["../../../src/editor/bridge/bridgeKeys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgC;IACjE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** File links must bypass the editor's internal-page navigation. */
|
|
2
|
+
export function isDownloadHref(href, baseUrl) {
|
|
3
|
+
if (!href.trim() || href.trimStart().startsWith("#"))
|
|
4
|
+
return false;
|
|
5
|
+
try {
|
|
6
|
+
const url = new URL(href, baseUrl);
|
|
7
|
+
return (/^https?:$/.test(url.protocol) &&
|
|
8
|
+
(/\.pdf$/i.test(url.pathname) || /\/(?:-|~)\/media\//i.test(url.pathname)));
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export async function downloadLink(href, fileName = "") {
|
|
15
|
+
const url = new URL(href, window.location.href);
|
|
16
|
+
if (!/^(https?:|blob:)$/.test(url.protocol)) {
|
|
17
|
+
throw new Error("Unsupported download URL");
|
|
18
|
+
}
|
|
19
|
+
let objectUrl;
|
|
20
|
+
// The download attribute only works for same-origin and blob URLs. Fetch
|
|
21
|
+
// cross-origin files first so a PDF cannot replace the editor with a viewer.
|
|
22
|
+
if (url.protocol !== "blob:" && url.origin !== window.location.origin) {
|
|
23
|
+
const response = await fetch(url.href);
|
|
24
|
+
if (!response.ok)
|
|
25
|
+
throw new Error("Could not download the linked file");
|
|
26
|
+
if (!fileName) {
|
|
27
|
+
fileName = url.pathname.split("/").pop() || "download";
|
|
28
|
+
try {
|
|
29
|
+
fileName = decodeURIComponent(fileName);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Keep filenames with malformed percent escapes as authored.
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
objectUrl = URL.createObjectURL(await response.blob());
|
|
36
|
+
}
|
|
37
|
+
const anchor = document.createElement("a");
|
|
38
|
+
anchor.href = objectUrl ?? url.href;
|
|
39
|
+
anchor.download = fileName;
|
|
40
|
+
document.body.appendChild(anchor);
|
|
41
|
+
try {
|
|
42
|
+
anchor.click();
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
anchor.remove();
|
|
46
|
+
if (objectUrl) {
|
|
47
|
+
const downloadedUrl = objectUrl;
|
|
48
|
+
window.setTimeout(() => URL.revokeObjectURL(downloadedUrl), 60_000);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=linkDownload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkDownload.js","sourceRoot":"","sources":["../../../src/editor/bridge/linkDownload.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAe;IAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,CACL,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9B,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAC3E,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,QAAQ,GAAG,EAAE;IAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,SAA6B,CAAC;IAClC,yEAAyE;IACzE,6EAA6E;IAC7E,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC;YACvD,IAAI,CAAC;gBACH,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;QACH,CAAC;QACD,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC;IACpC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,aAAa,GAAG,SAAS,CAAC;YAChC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Dialog, DialogContent } from "../../components/ui/dialog";
|
|
3
|
+
import { StyledDialogTitle } from "../../components/ui/styled-dialog-title";
|
|
4
|
+
import { useImperativeHandle, useState, forwardRef, useEffect } from "react";
|
|
5
|
+
import { Users } from "lucide-react";
|
|
6
|
+
import { Sessions } from "../sidebar/Sessions";
|
|
7
|
+
export const SessionsDialog = forwardRef(function SessionsDialog(props, ref) {
|
|
8
|
+
const [visible, setVisible] = useState(false);
|
|
9
|
+
const close = () => {
|
|
10
|
+
setVisible(false);
|
|
11
|
+
props.onClose(null);
|
|
12
|
+
};
|
|
13
|
+
useImperativeHandle(ref, () => ({
|
|
14
|
+
onClose: (result) => {
|
|
15
|
+
setVisible(false);
|
|
16
|
+
props.onClose(result);
|
|
17
|
+
},
|
|
18
|
+
}));
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
setVisible(true);
|
|
21
|
+
}, []);
|
|
22
|
+
return (_jsx(Dialog, { open: visible, onOpenChange: (open) => {
|
|
23
|
+
if (!open)
|
|
24
|
+
close();
|
|
25
|
+
}, children: _jsxs(DialogContent, { className: "flex max-h-[min(32rem,80vh)] max-w-2xl flex-col gap-0 overflow-hidden p-0", "data-testid": "sessions-dialog", children: [_jsx(StyledDialogTitle, { icon: _jsx(Users, { strokeWidth: 1 }), title: "User sessions" }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-6", children: _jsx(Sessions, { onNavigate: close }) })] }) }));
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=SessionsDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionsDialog.js","sourceRoot":"","sources":["../../../src/editor/client/SessionsDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG;IAChC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,OAAO,EAAE,CAAC,MAAmB,EAAE,EAAE;YAC/B,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,OAAO,EACb,YAAY,EAAE,CAAC,IAAa,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI;gBAAE,KAAK,EAAE,CAAC;QACrB,CAAC,YAED,MAAC,aAAa,IACZ,SAAS,EAAC,2EAA2E,iBACzE,iBAAiB,aAE7B,KAAC,iBAAiB,IAAC,IAAI,EAAE,KAAC,KAAK,IAAC,WAAW,EAAE,CAAC,GAAI,EAAE,KAAK,EAAC,eAAe,GAAG,EAC5E,cAAK,SAAS,EAAC,oCAAoC,YACjD,KAAC,QAAQ,IAAC,UAAU,EAAE,KAAK,GAAI,GAC3B,IACQ,GACT,CACV,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ItemDescriptor } from "../pageModel";
|
|
2
|
+
import type { FieldModificationStore } from "./fieldModificationStore";
|
|
3
|
+
export declare const AGENT_LOAD_ITEM_RECENT_EDIT_WINDOW_MS = 10000;
|
|
4
|
+
export declare const AGENT_LOAD_ITEM_TOAST_ID = "agent-load-item-deferred";
|
|
5
|
+
export declare const AGENT_LOAD_ITEM_TOAST_DURATION_MS = 60000;
|
|
6
|
+
export type AgentLoadItemDecision = "load" | "defer" | "ignore";
|
|
7
|
+
export interface AgentLoadItemPolicyInput {
|
|
8
|
+
lastAgentTerminalInteractionAt: number;
|
|
9
|
+
lastLocalUserEditAt: number;
|
|
10
|
+
dirtyUserFieldCount: number;
|
|
11
|
+
now: number;
|
|
12
|
+
isSameItem: boolean;
|
|
13
|
+
recentEditWindowMs?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function resolveAgentLoadItemPolicy(p: AgentLoadItemPolicyInput): AgentLoadItemDecision;
|
|
16
|
+
export declare function countDirtyUserFields(stores: FieldModificationStore[]): number;
|
|
17
|
+
export declare function isSameLoadTarget(target: ItemDescriptor, current?: ItemDescriptor): boolean;
|
|
18
|
+
export declare function dismissDeferredAgentLoadItemToast(): void;
|
|
19
|
+
export declare function showDeferredAgentLoadItemToast(item: ItemDescriptor, deps: {
|
|
20
|
+
getCurrentItemDescriptor: () => ItemDescriptor | undefined;
|
|
21
|
+
open: (item: ItemDescriptor) => void | Promise<unknown>;
|
|
22
|
+
}): void;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { toast } from "sonner";
|
|
2
|
+
export const AGENT_LOAD_ITEM_RECENT_EDIT_WINDOW_MS = 10_000;
|
|
3
|
+
export const AGENT_LOAD_ITEM_TOAST_ID = "agent-load-item-deferred";
|
|
4
|
+
export const AGENT_LOAD_ITEM_TOAST_DURATION_MS = 60_000;
|
|
5
|
+
export function resolveAgentLoadItemPolicy(p) {
|
|
6
|
+
if (p.isSameItem)
|
|
7
|
+
return "ignore";
|
|
8
|
+
const userEditedSinceTerminal = p.lastLocalUserEditAt > p.lastAgentTerminalInteractionAt;
|
|
9
|
+
if (p.lastAgentTerminalInteractionAt > 0 && !userEditedSinceTerminal)
|
|
10
|
+
return "load";
|
|
11
|
+
if (p.dirtyUserFieldCount > 0)
|
|
12
|
+
return "defer";
|
|
13
|
+
if (p.lastLocalUserEditAt > 0 &&
|
|
14
|
+
p.now - p.lastLocalUserEditAt <
|
|
15
|
+
(p.recentEditWindowMs ?? AGENT_LOAD_ITEM_RECENT_EDIT_WINDOW_MS))
|
|
16
|
+
return "defer";
|
|
17
|
+
return "load";
|
|
18
|
+
}
|
|
19
|
+
export function countDirtyUserFields(stores) {
|
|
20
|
+
// Do not deduplicate: a clean snapshot in another slot must not hide a dirty one.
|
|
21
|
+
return stores.reduce((count, store) => count +
|
|
22
|
+
store
|
|
23
|
+
.getAllFields()
|
|
24
|
+
.filter((field) => field.isDirty && !field.modifiedBy?.ai).length, 0);
|
|
25
|
+
}
|
|
26
|
+
export function isSameLoadTarget(target, current) {
|
|
27
|
+
if (!current || !target.id)
|
|
28
|
+
return false;
|
|
29
|
+
const normalizeId = (id) => id.replace(/[{}]/g, "").toLowerCase();
|
|
30
|
+
if (normalizeId(target.id) !== normalizeId(current.id))
|
|
31
|
+
return false;
|
|
32
|
+
if (target.language &&
|
|
33
|
+
target.language.toLowerCase() !== current.language?.toLowerCase())
|
|
34
|
+
return false;
|
|
35
|
+
if (target.database &&
|
|
36
|
+
current.database &&
|
|
37
|
+
target.database.toLowerCase() !== current.database.toLowerCase())
|
|
38
|
+
return false;
|
|
39
|
+
return (target.version === current.version || !target.version || !current.version);
|
|
40
|
+
}
|
|
41
|
+
export function dismissDeferredAgentLoadItemToast() {
|
|
42
|
+
toast.dismiss(AGENT_LOAD_ITEM_TOAST_ID);
|
|
43
|
+
}
|
|
44
|
+
export function showDeferredAgentLoadItemToast(item, deps) {
|
|
45
|
+
toast.info(`Agent wants to open ${item.name || item.path || item.id}`, {
|
|
46
|
+
id: AGENT_LOAD_ITEM_TOAST_ID,
|
|
47
|
+
description: item.path,
|
|
48
|
+
duration: AGENT_LOAD_ITEM_TOAST_DURATION_MS,
|
|
49
|
+
action: {
|
|
50
|
+
label: "Open",
|
|
51
|
+
onClick: () => {
|
|
52
|
+
dismissDeferredAgentLoadItemToast();
|
|
53
|
+
if (isSameLoadTarget(item, deps.getCurrentItemDescriptor()))
|
|
54
|
+
return;
|
|
55
|
+
void deps.open(item);
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=agentLoadItemPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentLoadItemPolicy.js","sourceRoot":"","sources":["../../../src/editor/client/agentLoadItemPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ClipboardState } from "./editContext";
|
|
2
|
+
/**
|
|
3
|
+
* The editor clipboard survives page switches and reloads so a component copied on
|
|
4
|
+
* one page can be pasted on another, even in a second browser tab.
|
|
5
|
+
*/
|
|
6
|
+
export declare const CLIPBOARD_STORAGE_KEY = "editor.clipboard";
|
|
7
|
+
export declare function loadPersistedClipboard(): ClipboardState;
|
|
8
|
+
export declare function persistClipboard(clipboard: ClipboardState): void;
|
|
9
|
+
/** Parses a cross-tab `storage` event for the clipboard key; undefined when unrelated. */
|
|
10
|
+
export declare function readClipboardFromStorageEvent(event: StorageEvent): ClipboardState | undefined;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { localStorageService } from "../services/localStorageService";
|
|
2
|
+
/**
|
|
3
|
+
* The editor clipboard survives page switches and reloads so a component copied on
|
|
4
|
+
* one page can be pasted on another, even in a second browser tab.
|
|
5
|
+
*/
|
|
6
|
+
export const CLIPBOARD_STORAGE_KEY = "editor.clipboard";
|
|
7
|
+
function isValidClipboardState(value) {
|
|
8
|
+
if (value === null)
|
|
9
|
+
return true;
|
|
10
|
+
if (!value || typeof value !== "object")
|
|
11
|
+
return false;
|
|
12
|
+
const candidate = value;
|
|
13
|
+
if (candidate.kind === "items") {
|
|
14
|
+
return Array.isArray(candidate.items) && candidate.items.length > 0;
|
|
15
|
+
}
|
|
16
|
+
if (candidate.kind === "components") {
|
|
17
|
+
return (Array.isArray(candidate.components) &&
|
|
18
|
+
candidate.components.length > 0 &&
|
|
19
|
+
!!candidate.sourcePageItem &&
|
|
20
|
+
typeof candidate.sourcePageItem === "object");
|
|
21
|
+
}
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
export function loadPersistedClipboard() {
|
|
25
|
+
const raw = localStorageService.getString(CLIPBOARD_STORAGE_KEY);
|
|
26
|
+
if (!raw)
|
|
27
|
+
return null;
|
|
28
|
+
try {
|
|
29
|
+
const parsed = JSON.parse(raw);
|
|
30
|
+
return isValidClipboardState(parsed) ? parsed : null;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function persistClipboard(clipboard) {
|
|
37
|
+
if (!clipboard) {
|
|
38
|
+
localStorageService.removeItem(CLIPBOARD_STORAGE_KEY);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
localStorageService.setString(CLIPBOARD_STORAGE_KEY, JSON.stringify(clipboard));
|
|
42
|
+
}
|
|
43
|
+
/** Parses a cross-tab `storage` event for the clipboard key; undefined when unrelated. */
|
|
44
|
+
export function readClipboardFromStorageEvent(event) {
|
|
45
|
+
if (event.key !== `parhelia.${CLIPBOARD_STORAGE_KEY}`)
|
|
46
|
+
return undefined;
|
|
47
|
+
if (!event.newValue)
|
|
48
|
+
return null;
|
|
49
|
+
try {
|
|
50
|
+
const parsed = JSON.parse(event.newValue);
|
|
51
|
+
return isValidClipboardState(parsed) ? parsed : null;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=clipboardStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboardStorage.js","sourceRoot":"","sources":["../../../src/editor/client/clipboardStorage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAExD,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACpC,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;YACnC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC,cAAc;YAC1B,OAAO,SAAS,CAAC,cAAc,KAAK,QAAQ,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,mBAAmB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACjE,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAyB;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,mBAAmB,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IACD,mBAAmB,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,6BAA6B,CAC3C,KAAmB;IAEnB,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,qBAAqB,EAAE;QAAE,OAAO,SAAS,CAAC;IACxE,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAC;QACrD,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
import type { FullItem, ItemDescriptor } from "../../pageModel";
|
|
3
|
+
import type { ItemsRepository } from "../itemsRepository";
|
|
4
|
+
export declare function useRepositoryItemRefresh(repository: Pick<ItemsRepository, "getItem" | "revision"> & Partial<Pick<ItemsRepository, "subscribeItemsChanged">>, descriptor: ItemDescriptor | undefined, currentDescriptor: RefObject<ItemDescriptor | undefined>, setItem: (item: FullItem | undefined) => void): void;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
2
|
+
/** Same item and language; any version (the current item may be Latest). */
|
|
3
|
+
function sameItemKey(a, b) {
|
|
4
|
+
const normalize = (value) => (value ?? "").replace(/[{}]/g, "").toLowerCase();
|
|
5
|
+
return (normalize(a.id) === normalize(b.id) &&
|
|
6
|
+
normalize(a.language) === normalize(b.language) &&
|
|
7
|
+
(a.database || "master") === (b.database || "master"));
|
|
8
|
+
}
|
|
9
|
+
export function useRepositoryItemRefresh(repository, descriptor, currentDescriptor, setItem) {
|
|
10
|
+
const { getItem, subscribeItemsChanged } = repository;
|
|
11
|
+
const descriptorRef = useRef(descriptor);
|
|
12
|
+
descriptorRef.current = descriptor;
|
|
13
|
+
// Only the latest read may apply its result.
|
|
14
|
+
const latestReadRef = useRef(0);
|
|
15
|
+
const load = useCallback(() => {
|
|
16
|
+
const target = descriptorRef.current;
|
|
17
|
+
if (!target)
|
|
18
|
+
return;
|
|
19
|
+
const read = ++latestReadRef.current;
|
|
20
|
+
void (async () => {
|
|
21
|
+
const item = await getItem(target);
|
|
22
|
+
const current = currentDescriptor.current;
|
|
23
|
+
// A revision read can finish after navigation or after a newer refresh.
|
|
24
|
+
// In particular, an empty result for a deleted version must not clear
|
|
25
|
+
// the surviving version loaded by the delete command.
|
|
26
|
+
if (read !== latestReadRef.current ||
|
|
27
|
+
current?.id !== target.id ||
|
|
28
|
+
current.language !== target.language ||
|
|
29
|
+
current.version !== target.version ||
|
|
30
|
+
(current.database ?? "master") !== (target.database ?? "master"))
|
|
31
|
+
return;
|
|
32
|
+
setItem(item);
|
|
33
|
+
})();
|
|
34
|
+
}, [getItem, currentDescriptor, setItem]);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
load();
|
|
37
|
+
}, [
|
|
38
|
+
repository.revision,
|
|
39
|
+
load,
|
|
40
|
+
descriptor?.id,
|
|
41
|
+
descriptor?.language,
|
|
42
|
+
descriptor?.version,
|
|
43
|
+
descriptor?.database,
|
|
44
|
+
]);
|
|
45
|
+
// A refresh of this item publishes its data just before the revision bump
|
|
46
|
+
// renders. Reading it right away (from the cache) puts the new item into the
|
|
47
|
+
// same commit as the new repository: one editor render per save, not two.
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (!subscribeItemsChanged)
|
|
50
|
+
return;
|
|
51
|
+
return subscribeItemsChanged((changes) => {
|
|
52
|
+
const target = descriptorRef.current;
|
|
53
|
+
if (target &&
|
|
54
|
+
changes.some((change) => change.action === "update" &&
|
|
55
|
+
change.source !== "local-field-update" &&
|
|
56
|
+
sameItemKey(change.item, target))) {
|
|
57
|
+
load();
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}, [subscribeItemsChanged, load]);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=useRepositoryItemRefresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRepositoryItemRefresh.js","sourceRoot":"","sources":["../../../../src/editor/client/hooks/useRepositoryItemRefresh.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { EditOperation } from "../../types";
|
|
2
|
+
import { type EditContextType, type SelectionRange } from "./editContext";
|
|
3
|
+
/** The published text selection, re-rendering on each change. */
|
|
4
|
+
export declare function useSelectedRange(options?: {
|
|
5
|
+
editContext?: EditContextType;
|
|
6
|
+
}): SelectionRange | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* A value derived from the published text selection, re-rendering only when
|
|
9
|
+
* it changes (e.g. `undefined` unless the selection concerns this field).
|
|
10
|
+
*/
|
|
11
|
+
export declare function useSelectedRange<S>(options: {
|
|
12
|
+
editContext?: EditContextType;
|
|
13
|
+
select: (range: SelectionRange | undefined) => S;
|
|
14
|
+
}): S;
|
|
15
|
+
/** The edit history (newest first), re-rendering on each change. */
|
|
16
|
+
export declare function useEditHistory(): EditOperation[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useEditContext, } from "./editContext";
|
|
2
|
+
import { createValueStore, useValueStore } from "./valueStore";
|
|
3
|
+
// The text selection and the edit history change while the user types or
|
|
4
|
+
// selects, so they live in stores instead of the EditContext value (a change
|
|
5
|
+
// there re-renders every consumer in the editor). Contexts without a store
|
|
6
|
+
// (tests, sandbox fixtures) fall back to the plain EditContext value.
|
|
7
|
+
const noSelectedRangeStore = createValueStore(undefined);
|
|
8
|
+
const keepRange = (range) => range;
|
|
9
|
+
export function useSelectedRange(options) {
|
|
10
|
+
const contextFromHook = useEditContext();
|
|
11
|
+
const editContext = options?.editContext ?? contextFromHook;
|
|
12
|
+
const store = editContext?.selectedRangeStore;
|
|
13
|
+
const select = options?.select ?? keepRange;
|
|
14
|
+
return useValueStore(store ?? noSelectedRangeStore, (published) => select(store ? published : editContext?.selectedRange));
|
|
15
|
+
}
|
|
16
|
+
const EMPTY_EDIT_HISTORY = [];
|
|
17
|
+
const noEditHistoryStore = createValueStore(EMPTY_EDIT_HISTORY);
|
|
18
|
+
/** The edit history (newest first), re-rendering on each change. */
|
|
19
|
+
export function useEditHistory() {
|
|
20
|
+
const editContext = useEditContext();
|
|
21
|
+
const store = editContext?.editHistoryStore;
|
|
22
|
+
const history = useValueStore(store ?? noEditHistoryStore);
|
|
23
|
+
return store ? history : (editContext?.editHistory ?? EMPTY_EDIT_HISTORY);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=liveEditState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liveEditState.js","sourceRoot":"","sources":["../../../src/editor/client/liveEditState.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,GAGf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,yEAAyE;AACzE,6EAA6E;AAC7E,2EAA2E;AAC3E,sEAAsE;AAEtE,MAAM,oBAAoB,GAAG,gBAAgB,CAC3C,SAAS,CACV,CAAC;AACF,MAAM,SAAS,GAAG,CAAC,KAAiC,EAAE,EAAE,CAAC,KAAK,CAAC;AAc/D,MAAM,UAAU,gBAAgB,CAAI,OAGnC;IACC,MAAM,eAAe,GAAG,cAAc,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,eAAe,CAAC;IAC5D,MAAM,KAAK,GAAG,WAAW,EAAE,kBAAkB,CAAC;IAC9C,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC;IAC5C,OAAO,aAAa,CAAC,KAAK,IAAI,oBAAoB,EAAE,CAAC,SAAS,EAAE,EAAE,CAChE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,CACvD,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAoB,EAAE,CAAC;AAC/C,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAEhE,oEAAoE;AACpE,MAAM,UAAU,cAAc;IAC5B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,WAAW,EAAE,gBAAgB,CAAC;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,IAAI,kBAAkB,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,IAAI,kBAAkB,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { EditSession } from "../../types";
|
|
2
|
+
import { type EditContextType, type RemoteCaretPosition } from "./editContext";
|
|
3
|
+
/** The session list (presence, field locks), re-rendering on each change. */
|
|
4
|
+
export declare function useActiveSessions(explicitEditContext?: EditContextType): EditSession[];
|
|
5
|
+
/** Live carets per session, re-rendering on each caret move. */
|
|
6
|
+
export declare function useRemoteCarets(): Record<string, RemoteCaretPosition>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useEditContext, } from "./editContext";
|
|
2
|
+
import { createValueStore, useValueStore } from "./valueStore";
|
|
3
|
+
// Session presence and carets change with every focus, lock and keystroke of
|
|
4
|
+
// every connected user, so they live in stores instead of the EditContext
|
|
5
|
+
// value (a change there re-renders every consumer in the editor).
|
|
6
|
+
const noActiveSessionsStore = createValueStore([]);
|
|
7
|
+
/** The session list (presence, field locks), re-rendering on each change. */
|
|
8
|
+
export function useActiveSessions(explicitEditContext) {
|
|
9
|
+
const contextFromHook = useEditContext();
|
|
10
|
+
const editContext = explicitEditContext ?? contextFromHook;
|
|
11
|
+
const store = editContext?.activeSessionsStore;
|
|
12
|
+
const sessions = useValueStore(store ?? noActiveSessionsStore);
|
|
13
|
+
return store ? sessions : (editContext?.activeSessions ?? sessions);
|
|
14
|
+
}
|
|
15
|
+
const noRemoteCaretsStore = createValueStore({});
|
|
16
|
+
/** Live carets per session, re-rendering on each caret move. */
|
|
17
|
+
export function useRemoteCarets() {
|
|
18
|
+
return useValueStore(useEditContext()?.remoteCaretsStore ?? noRemoteCaretsStore);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=liveSessionState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"liveSessionState.js","sourceRoot":"","sources":["../../../src/editor/client/liveSessionState.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,GAGf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,6EAA6E;AAC7E,0EAA0E;AAC1E,kEAAkE;AAElE,MAAM,qBAAqB,GAAG,gBAAgB,CAAgB,EAAE,CAAC,CAAC;AAElE,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAC/B,mBAAqC;IAErC,MAAM,eAAe,GAAG,cAAc,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,mBAAmB,IAAI,eAAe,CAAC;IAC3D,MAAM,KAAK,GAAG,WAAW,EAAE,mBAAmB,CAAC;IAC/C,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,cAAc,IAAI,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,mBAAmB,GAAG,gBAAgB,CAE1C,EAAE,CAAC,CAAC;AAEN,gEAAgE;AAChE,MAAM,UAAU,eAAe;IAC7B,OAAO,aAAa,CAClB,cAAc,EAAE,EAAE,iBAAiB,IAAI,mBAAmB,CAC3D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Independent of field snapshots: an AI update can replace the same field entry.
|
|
2
|
+
let lastLocalUserEditAt = 0;
|
|
3
|
+
export function markLocalUserEdit(now = Date.now()) {
|
|
4
|
+
lastLocalUserEditAt = Math.max(lastLocalUserEditAt, now);
|
|
5
|
+
}
|
|
6
|
+
export function getLastLocalUserEditAt() {
|
|
7
|
+
return lastLocalUserEditAt;
|
|
8
|
+
}
|
|
9
|
+
export function resetLocalUserEditActivityForTests() {
|
|
10
|
+
lastLocalUserEditAt = 0;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=localUserEditActivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localUserEditActivity.js","sourceRoot":"","sources":["../../../src/editor/client/localUserEditActivity.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,IAAI,mBAAmB,GAAG,CAAC,CAAC;AAE5B,MAAM,UAAU,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAChD,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kCAAkC;IAChD,mBAAmB,GAAG,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type SetStateAction } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* A single value that changes often but is read by few components.
|
|
4
|
+
*
|
|
5
|
+
* Kept outside the EditContext value on purpose: every change of that value
|
|
6
|
+
* re-renders every EditContext consumer in the editor, while a change here
|
|
7
|
+
* re-renders only the components that subscribe with {@link useValueStore}.
|
|
8
|
+
* Imperative readers (event handlers, effects) call `get()`.
|
|
9
|
+
*/
|
|
10
|
+
export interface ValueStore<T> {
|
|
11
|
+
get: () => T;
|
|
12
|
+
/** Same contract as a React state setter; unchanged values notify nobody. */
|
|
13
|
+
set: (next: SetStateAction<T>) => void;
|
|
14
|
+
subscribe: (listener: () => void) => () => void;
|
|
15
|
+
}
|
|
16
|
+
export declare function createValueStore<T>(initialValue: T): ValueStore<T>;
|
|
17
|
+
export declare function useValueStore<T>(store: ValueStore<T>): T;
|
|
18
|
+
/**
|
|
19
|
+
* Re-renders only when `select`'s result changes. It must return a stable
|
|
20
|
+
* value (a primitive, or an object held by the store) for an unchanged store.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useValueStore<T, S>(store: ValueStore<T>, select: (value: T) => S): S;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useSyncExternalStore } from "react";
|
|
2
|
+
export function createValueStore(initialValue) {
|
|
3
|
+
let value = initialValue;
|
|
4
|
+
const listeners = new Set();
|
|
5
|
+
return {
|
|
6
|
+
get: () => value,
|
|
7
|
+
set: (next) => {
|
|
8
|
+
const resolved = typeof next === "function" ? next(value) : next;
|
|
9
|
+
if (Object.is(resolved, value))
|
|
10
|
+
return;
|
|
11
|
+
value = resolved;
|
|
12
|
+
for (const listener of [...listeners])
|
|
13
|
+
listener();
|
|
14
|
+
},
|
|
15
|
+
subscribe: (listener) => {
|
|
16
|
+
listeners.add(listener);
|
|
17
|
+
return () => {
|
|
18
|
+
listeners.delete(listener);
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function useValueStore(store, select) {
|
|
24
|
+
const getSnapshot = select
|
|
25
|
+
? () => select(store.get())
|
|
26
|
+
: store.get;
|
|
27
|
+
return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=valueStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueStore.js","sourceRoot":"","sources":["../../../src/editor/client/valueStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAuB,MAAM,OAAO,CAAC;AAiBlE,MAAM,UAAU,gBAAgB,CAAI,YAAe;IACjD,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IACxC,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;QAChB,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,QAAQ,GACZ,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAE,IAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1E,IAAI,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAAE,OAAO;YACvC,KAAK,GAAG,QAAQ,CAAC;YACjB,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC;gBAAE,QAAQ,EAAE,CAAC;QACpD,CAAC;QACD,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,aAAa,CAC3B,KAAoB,EACpB,MAAwB;IAExB,MAAM,WAAW,GAAgB,MAAM;QACrC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IACd,OAAO,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ComponentClipboardState, EditContextType } from "../client/editContext";
|
|
2
|
+
import type { Component, Placeholder } from "../pageModel";
|
|
3
|
+
import type { ComponentCommand, ComponentCommandProviderContext } from "./componentCommands";
|
|
4
|
+
import type { PlaceholderCommand, PlaceholderCommandProviderContext } from "./placeholderCommands";
|
|
5
|
+
/** The clipboard when it holds components, otherwise null. */
|
|
6
|
+
export declare function getComponentClipboard(editContext: EditContextType): ComponentClipboardState | null;
|
|
7
|
+
export declare function describeClipboardComponents(clipboard: ComponentClipboardState): string;
|
|
8
|
+
/**
|
|
9
|
+
* Puts `components` on the editor clipboard. Returns false when nothing copyable was
|
|
10
|
+
* given (e.g. only the page root). The components stay where they are; pasting copies them.
|
|
11
|
+
*/
|
|
12
|
+
export declare function copyComponentsToClipboard(editContext: EditContextType, components: Component[]): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Pastes the clipboard components into `placeholderKey` of the current page at `index`
|
|
15
|
+
* (-1 appends). Checks the placeholder's insert options first so the user gets a clear
|
|
16
|
+
* message instead of a failed operation. Resolves to true when the operation ran.
|
|
17
|
+
*/
|
|
18
|
+
export declare function pasteClipboardComponents(editContext: EditContextType, placeholderKey: string, index: number): Promise<boolean>;
|
|
19
|
+
/** Ctrl+C with a component selection outside the content tree. */
|
|
20
|
+
export declare function copySelectedComponents(editContext: EditContextType): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Ctrl+V with a component selection: pastes after the selected component, or into it
|
|
23
|
+
* when it has exactly one editable placeholder and no parent (the page root).
|
|
24
|
+
*/
|
|
25
|
+
export declare function pasteRelativeToSelectedComponent(editContext: EditContextType): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* "Copy" for the selected components and "Paste after / into" for a single target
|
|
28
|
+
* component. Registered through `configuration.componentCommands.providers`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function componentClipboardCommandProvider(components: Component[], editContext: EditContextType, providerContext?: ComponentCommandProviderContext): ComponentCommand[];
|
|
31
|
+
/**
|
|
32
|
+
* "Paste here" for a placeholder node (component navigator). Registered through
|
|
33
|
+
* `configuration.placeholderCommands.providers`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function placeholderClipboardCommandProvider(placeholders: Placeholder[], editContext: EditContextType, providerContext?: PlaceholderCommandProviderContext): PlaceholderCommand[];
|