@parhelia/core 0.3.12832 → 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.js +6 -0
- package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -1
- package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +48 -4
- package/dist/editor/agent-changes/agentChangeTextHighlight.js +67 -9
- package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -1
- 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/terminal/components/CreateItemToolCallContent.js +1 -1
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -1
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +1 -2
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -1
- 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/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/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/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/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/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/field-types/FieldHistoryBoundary.js +28 -7
- package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -1
- 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 +14 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.js +12 -1
- package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -1
- 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.js +10 -1
- package/dist/editor/itemContextMenuGroups.js.map +1 -1
- 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/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/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 +3 -6
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +8 -6
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -1
- 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 +9 -13
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +25 -20
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -1
- 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/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/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/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/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/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/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/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/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.js +50 -0
- package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -1
- package/dist/editor/sidebar/liveComponentThumbnails.d.ts +19 -6
- package/dist/editor/sidebar/liveComponentThumbnails.js +39 -18
- package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -1
- 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/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/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/validation/navigateToValidationIssue.d.ts +2 -2
- package/dist/editor/validation/navigateToValidationIssue.js +1 -1
- package/dist/editor/validation/navigateToValidationIssue.js.map +1 -1
- 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/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/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/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.js +14 -0
- package/dist/task-board/utils/projectDashboardModel.js.map +1 -1
- package/dist/task-board/views/ProjectDashboardView.js +5 -13
- package/dist/task-board/views/ProjectDashboardView.js.map +1 -1
- 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 +107 -3
- package/dist/tour/sandbox-tour.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,35 @@
|
|
|
1
|
+
import type { FeedbackItem } from "./feedbackOrdering";
|
|
2
|
+
import { type FeedbackSort, type FeedbackThread } from "./feedbackThreads";
|
|
3
|
+
export declare function formatAccountName(userName?: string): string;
|
|
4
|
+
export declare function getStoredAuthorName(item: FeedbackItem): string | undefined;
|
|
5
|
+
export type FeedbackAuthorOption = {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
};
|
|
9
|
+
export type UseFeedbackThreadsOptions = {
|
|
10
|
+
/** Explicit ordering (the list); the margin orders by anchor and omits it. */
|
|
11
|
+
sort?: FeedbackSort;
|
|
12
|
+
};
|
|
13
|
+
export type UseFeedbackThreadsResult = {
|
|
14
|
+
threads: FeedbackThread[];
|
|
15
|
+
availableAuthors: FeedbackAuthorOption[];
|
|
16
|
+
selectedPersonFilter: string[];
|
|
17
|
+
setSelectedPersonFilter: (people: string[]) => void;
|
|
18
|
+
resolvedAuthorNames: Record<string, string>;
|
|
19
|
+
getAuthorName: (item: FeedbackItem) => string;
|
|
20
|
+
availableTags: {
|
|
21
|
+
label: string;
|
|
22
|
+
color: string;
|
|
23
|
+
}[];
|
|
24
|
+
showResolved: boolean;
|
|
25
|
+
setShowResolved: (showResolved: boolean) => void;
|
|
26
|
+
suggestionsAvailable: boolean;
|
|
27
|
+
isSuggestionsMode: boolean;
|
|
28
|
+
commentsLoaded: boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* The data behind every feedback surface: the loaded comments and suggested
|
|
32
|
+
* edits as filtered, grouped threads, plus the shared filter state and author
|
|
33
|
+
* display-name resolution.
|
|
34
|
+
*/
|
|
35
|
+
export declare function useFeedbackThreads(options?: UseFeedbackThreadsOptions): UseFeedbackThreadsResult;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
2
|
+
import { useEditContext } from "../client/editContext";
|
|
3
|
+
import { searchUsers } from "../services/userService";
|
|
4
|
+
import { setFeedbackPersonFilter, useFeedbackPersonFilter, } from "./feedbackPersonFilter";
|
|
5
|
+
import { buildFeedbackThreads, } from "./feedbackThreads";
|
|
6
|
+
import { isSuggestionsModeAvailable } from "./openCommentsFeedback";
|
|
7
|
+
export function formatAccountName(userName) {
|
|
8
|
+
const trimmed = userName?.trim();
|
|
9
|
+
if (!trimmed)
|
|
10
|
+
return "Unknown";
|
|
11
|
+
const slashIndex = trimmed.lastIndexOf("\\");
|
|
12
|
+
if (slashIndex >= 0 && slashIndex < trimmed.length - 1) {
|
|
13
|
+
return trimmed.slice(slashIndex + 1);
|
|
14
|
+
}
|
|
15
|
+
return trimmed;
|
|
16
|
+
}
|
|
17
|
+
export function getStoredAuthorName(item) {
|
|
18
|
+
const storedDisplayName = item.authorDisplayName?.trim();
|
|
19
|
+
const author = item.author?.trim() || "";
|
|
20
|
+
if (storedDisplayName &&
|
|
21
|
+
storedDisplayName.localeCompare(author, undefined, {
|
|
22
|
+
sensitivity: "accent",
|
|
23
|
+
}) !== 0) {
|
|
24
|
+
return storedDisplayName;
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The data behind every feedback surface: the loaded comments and suggested
|
|
30
|
+
* edits as filtered, grouped threads, plus the shared filter state and author
|
|
31
|
+
* display-name resolution.
|
|
32
|
+
*/
|
|
33
|
+
export function useFeedbackThreads(options = {}) {
|
|
34
|
+
const editContext = useEditContext();
|
|
35
|
+
const [resolvedAuthorNames, setResolvedAuthorNames] = useState({});
|
|
36
|
+
const selectedPersonFilter = useFeedbackPersonFilter();
|
|
37
|
+
const setSelectedPersonFilter = setFeedbackPersonFilter;
|
|
38
|
+
const comments = editContext?.comments;
|
|
39
|
+
const suggestedEdits = editContext?.suggestedEdits;
|
|
40
|
+
const showResolved = !!editContext?.showResolvedComments;
|
|
41
|
+
const threads = useMemo(() => buildFeedbackThreads({
|
|
42
|
+
comments: comments || [],
|
|
43
|
+
suggestedEdits: suggestedEdits || [],
|
|
44
|
+
showResolved,
|
|
45
|
+
selectedPeople: selectedPersonFilter,
|
|
46
|
+
sort: options.sort,
|
|
47
|
+
}), [
|
|
48
|
+
comments,
|
|
49
|
+
suggestedEdits,
|
|
50
|
+
showResolved,
|
|
51
|
+
selectedPersonFilter,
|
|
52
|
+
options.sort?.field,
|
|
53
|
+
options.sort?.direction,
|
|
54
|
+
]);
|
|
55
|
+
const availableAuthors = useMemo(() => {
|
|
56
|
+
const authors = new Map();
|
|
57
|
+
(comments || []).forEach((c) => {
|
|
58
|
+
if (c.author) {
|
|
59
|
+
authors.set(c.author, getStoredAuthorName(c) ||
|
|
60
|
+
resolvedAuthorNames[c.author] ||
|
|
61
|
+
formatAccountName(c.author));
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return Array.from(authors.entries()).map(([id, name]) => ({ id, name }));
|
|
65
|
+
}, [comments, resolvedAuthorNames]);
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
const allFeedbackItems = [
|
|
68
|
+
...(comments || []),
|
|
69
|
+
...(suggestedEdits || []),
|
|
70
|
+
];
|
|
71
|
+
const authors = Array.from(new Set(allFeedbackItems
|
|
72
|
+
.map((item) => item.author?.trim())
|
|
73
|
+
.filter((author) => !!author))).filter((author) => !resolvedAuthorNames[author]);
|
|
74
|
+
if (authors.length === 0)
|
|
75
|
+
return;
|
|
76
|
+
let cancelled = false;
|
|
77
|
+
const resolveAuthors = async () => {
|
|
78
|
+
const entries = await Promise.all(authors.map(async (author) => {
|
|
79
|
+
try {
|
|
80
|
+
const users = await searchUsers(author, 5);
|
|
81
|
+
const exact = users.find((user) => user.userName.localeCompare(author, undefined, {
|
|
82
|
+
sensitivity: "accent",
|
|
83
|
+
}) === 0) || users[0];
|
|
84
|
+
const displayName = exact?.displayName?.trim();
|
|
85
|
+
if (displayName &&
|
|
86
|
+
displayName.localeCompare(author, undefined, {
|
|
87
|
+
sensitivity: "accent",
|
|
88
|
+
}) !== 0) {
|
|
89
|
+
return [author, displayName];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Best effort: older feedback may only have the account id stored.
|
|
94
|
+
}
|
|
95
|
+
return [author, formatAccountName(author)];
|
|
96
|
+
}));
|
|
97
|
+
if (cancelled)
|
|
98
|
+
return;
|
|
99
|
+
setResolvedAuthorNames((current) => {
|
|
100
|
+
const next = { ...current };
|
|
101
|
+
entries.forEach(([author, displayName]) => {
|
|
102
|
+
next[author] = displayName;
|
|
103
|
+
});
|
|
104
|
+
return next;
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
resolveAuthors();
|
|
108
|
+
return () => {
|
|
109
|
+
cancelled = true;
|
|
110
|
+
};
|
|
111
|
+
}, [comments, suggestedEdits, resolvedAuthorNames]);
|
|
112
|
+
const getAuthorName = useCallback((item) => {
|
|
113
|
+
const storedName = getStoredAuthorName(item);
|
|
114
|
+
if (storedName)
|
|
115
|
+
return storedName;
|
|
116
|
+
if (item.author && resolvedAuthorNames[item.author]) {
|
|
117
|
+
return resolvedAuthorNames[item.author];
|
|
118
|
+
}
|
|
119
|
+
return formatAccountName(item.author);
|
|
120
|
+
}, [resolvedAuthorNames]);
|
|
121
|
+
const setShowResolved = useCallback((value) => editContext?.setShowResolvedComments(value), [editContext]);
|
|
122
|
+
return {
|
|
123
|
+
threads,
|
|
124
|
+
availableAuthors,
|
|
125
|
+
selectedPersonFilter,
|
|
126
|
+
setSelectedPersonFilter,
|
|
127
|
+
resolvedAuthorNames,
|
|
128
|
+
getAuthorName,
|
|
129
|
+
availableTags: editContext?.availableCommentTags || [],
|
|
130
|
+
showResolved,
|
|
131
|
+
setShowResolved,
|
|
132
|
+
suggestionsAvailable: isSuggestionsModeAvailable(editContext),
|
|
133
|
+
isSuggestionsMode: editContext?.mode === "suggestions",
|
|
134
|
+
commentsLoaded: !!editContext?.commentsLoaded,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=useFeedbackThreads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFeedbackThreads.js","sourceRoot":"","sources":["../../../src/editor/reviews/useFeedbackThreads.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracks the rendered height of many elements (the margin cards).
|
|
3
|
+
*
|
|
4
|
+
* Cards register their element through a stable callback ref. Heights are
|
|
5
|
+
* read with `getBoundingClientRect` in `syncMeasurements`, which the owner
|
|
6
|
+
* calls from a layout effect after each of its renders, and which a
|
|
7
|
+
* MutationObserver on the column (`observeMutations`) triggers after any DOM
|
|
8
|
+
* change inside a card (composer opened, text expanded, replies unfolded).
|
|
9
|
+
* A ResizeObserver covers size changes without DOM mutations (images).
|
|
10
|
+
*
|
|
11
|
+
* The ref callback returns a cleanup bound to its element, and an id may
|
|
12
|
+
* hold several elements at once: a thread can be mounted twice for a moment
|
|
13
|
+
* (the new card attaches before the stale one detaches, or a transient copy
|
|
14
|
+
* appears in the footer while the anchored card stays). Measurements always
|
|
15
|
+
* use the element that is still connected.
|
|
16
|
+
*/
|
|
17
|
+
export declare function useMeasuredHeights(): {
|
|
18
|
+
heights: Record<string, number>;
|
|
19
|
+
registerCard: (id: string) => (element: HTMLElement | null) => (() => void) | void;
|
|
20
|
+
prune: (liveIds: Iterable<string>) => void;
|
|
21
|
+
syncMeasurements: (options?: {
|
|
22
|
+
all?: boolean;
|
|
23
|
+
}) => void;
|
|
24
|
+
observeMutations: (root: Element | null) => () => void;
|
|
25
|
+
};
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Tracks the rendered height of many elements (the margin cards).
|
|
4
|
+
*
|
|
5
|
+
* Cards register their element through a stable callback ref. Heights are
|
|
6
|
+
* read with `getBoundingClientRect` in `syncMeasurements`, which the owner
|
|
7
|
+
* calls from a layout effect after each of its renders, and which a
|
|
8
|
+
* MutationObserver on the column (`observeMutations`) triggers after any DOM
|
|
9
|
+
* change inside a card (composer opened, text expanded, replies unfolded).
|
|
10
|
+
* A ResizeObserver covers size changes without DOM mutations (images).
|
|
11
|
+
*
|
|
12
|
+
* The ref callback returns a cleanup bound to its element, and an id may
|
|
13
|
+
* hold several elements at once: a thread can be mounted twice for a moment
|
|
14
|
+
* (the new card attaches before the stale one detaches, or a transient copy
|
|
15
|
+
* appears in the footer while the anchored card stays). Measurements always
|
|
16
|
+
* use the element that is still connected.
|
|
17
|
+
*/
|
|
18
|
+
export function useMeasuredHeights() {
|
|
19
|
+
const [heights, setHeights] = useState({});
|
|
20
|
+
const heightsRef = useRef(heights);
|
|
21
|
+
heightsRef.current = heights;
|
|
22
|
+
const observerRef = useRef(null);
|
|
23
|
+
const elementsRef = useRef(new Map());
|
|
24
|
+
const observedRef = useRef(new WeakSet());
|
|
25
|
+
const idsRef = useRef(new WeakMap());
|
|
26
|
+
const callbacksRef = useRef(new Map());
|
|
27
|
+
const frameRef = useRef(null);
|
|
28
|
+
const applyHeights = useCallback((patch) => {
|
|
29
|
+
setHeights((current) => {
|
|
30
|
+
let next = null;
|
|
31
|
+
for (const [id, height] of Object.entries(patch)) {
|
|
32
|
+
if ((next ?? current)[id] === height)
|
|
33
|
+
continue;
|
|
34
|
+
next ??= { ...current };
|
|
35
|
+
next[id] = height;
|
|
36
|
+
}
|
|
37
|
+
return next ?? current;
|
|
38
|
+
});
|
|
39
|
+
}, []);
|
|
40
|
+
const getObserver = useCallback(() => {
|
|
41
|
+
if (observerRef.current)
|
|
42
|
+
return observerRef.current;
|
|
43
|
+
if (typeof ResizeObserver === "undefined")
|
|
44
|
+
return null;
|
|
45
|
+
observerRef.current = new ResizeObserver((entries) => {
|
|
46
|
+
const patch = {};
|
|
47
|
+
for (const entry of entries) {
|
|
48
|
+
const id = idsRef.current.get(entry.target);
|
|
49
|
+
if (!id)
|
|
50
|
+
continue;
|
|
51
|
+
patch[id] =
|
|
52
|
+
entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height;
|
|
53
|
+
}
|
|
54
|
+
if (Object.keys(patch).length > 0)
|
|
55
|
+
applyHeights(patch);
|
|
56
|
+
});
|
|
57
|
+
return observerRef.current;
|
|
58
|
+
}, [applyHeights]);
|
|
59
|
+
const unregister = useCallback((id, element) => {
|
|
60
|
+
observerRef.current?.unobserve(element);
|
|
61
|
+
observedRef.current.delete(element);
|
|
62
|
+
idsRef.current.delete(element);
|
|
63
|
+
const elements = elementsRef.current.get(id);
|
|
64
|
+
if (!elements)
|
|
65
|
+
return;
|
|
66
|
+
elements.delete(element);
|
|
67
|
+
if (elements.size === 0)
|
|
68
|
+
elementsRef.current.delete(id);
|
|
69
|
+
}, []);
|
|
70
|
+
/** A stable callback ref for the element that renders thread `id`. */
|
|
71
|
+
const registerCard = useCallback((id) => {
|
|
72
|
+
const cached = callbacksRef.current.get(id);
|
|
73
|
+
if (cached)
|
|
74
|
+
return cached;
|
|
75
|
+
const callback = (element) => {
|
|
76
|
+
if (!element)
|
|
77
|
+
return undefined;
|
|
78
|
+
let elements = elementsRef.current.get(id);
|
|
79
|
+
if (!elements) {
|
|
80
|
+
elements = new Set();
|
|
81
|
+
elementsRef.current.set(id, elements);
|
|
82
|
+
}
|
|
83
|
+
elements.add(element);
|
|
84
|
+
idsRef.current.set(element, id);
|
|
85
|
+
return () => unregister(id, element);
|
|
86
|
+
};
|
|
87
|
+
callbacksRef.current.set(id, callback);
|
|
88
|
+
return callback;
|
|
89
|
+
}, [unregister]);
|
|
90
|
+
/**
|
|
91
|
+
* Observe every registered element and refresh heights from a direct
|
|
92
|
+
* measurement: unknown heights always, known ones when `all` is set.
|
|
93
|
+
*/
|
|
94
|
+
const syncMeasurements = useCallback((options = {}) => {
|
|
95
|
+
const observer = getObserver();
|
|
96
|
+
let patch = null;
|
|
97
|
+
elementsRef.current.forEach((elements, id) => {
|
|
98
|
+
let live = null;
|
|
99
|
+
elements.forEach((element) => {
|
|
100
|
+
if (observer && !observedRef.current.has(element)) {
|
|
101
|
+
observer.observe(element, { box: "border-box" });
|
|
102
|
+
observedRef.current.add(element);
|
|
103
|
+
}
|
|
104
|
+
if (!live && element.isConnected)
|
|
105
|
+
live = element;
|
|
106
|
+
});
|
|
107
|
+
if (!live)
|
|
108
|
+
return;
|
|
109
|
+
const known = heightsRef.current[id];
|
|
110
|
+
if (options.all || !(known > 0)) {
|
|
111
|
+
const height = live.getBoundingClientRect().height;
|
|
112
|
+
if (height > 0 && height !== known)
|
|
113
|
+
(patch ??= {})[id] = height;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
if (patch)
|
|
117
|
+
applyHeights(patch);
|
|
118
|
+
}, [getObserver, applyHeights]);
|
|
119
|
+
/**
|
|
120
|
+
* Re-measure after any DOM change under `root` (the column): cards grow and
|
|
121
|
+
* shrink through their own renders, which the owner cannot observe.
|
|
122
|
+
*/
|
|
123
|
+
const observeMutations = useCallback((root) => {
|
|
124
|
+
if (!root || typeof MutationObserver === "undefined")
|
|
125
|
+
return () => { };
|
|
126
|
+
const schedule = () => {
|
|
127
|
+
if (frameRef.current != null)
|
|
128
|
+
return;
|
|
129
|
+
frameRef.current = window.requestAnimationFrame(() => {
|
|
130
|
+
frameRef.current = null;
|
|
131
|
+
syncMeasurements({ all: true });
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
const observer = new MutationObserver(schedule);
|
|
135
|
+
observer.observe(root, {
|
|
136
|
+
subtree: true,
|
|
137
|
+
childList: true,
|
|
138
|
+
attributes: true,
|
|
139
|
+
characterData: true,
|
|
140
|
+
});
|
|
141
|
+
return () => {
|
|
142
|
+
observer.disconnect();
|
|
143
|
+
if (frameRef.current != null) {
|
|
144
|
+
window.cancelAnimationFrame(frameRef.current);
|
|
145
|
+
frameRef.current = null;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}, [syncMeasurements]);
|
|
149
|
+
// Forget heights of cards that are no longer rendered anywhere.
|
|
150
|
+
const prune = useCallback((liveIds) => {
|
|
151
|
+
const keep = new Set(liveIds);
|
|
152
|
+
callbacksRef.current.forEach((_, id) => {
|
|
153
|
+
if (!keep.has(id) && !elementsRef.current.has(id)) {
|
|
154
|
+
callbacksRef.current.delete(id);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
setHeights((current) => {
|
|
158
|
+
const stale = Object.keys(current).filter((id) => !keep.has(id));
|
|
159
|
+
if (stale.length === 0)
|
|
160
|
+
return current;
|
|
161
|
+
const next = { ...current };
|
|
162
|
+
stale.forEach((id) => delete next[id]);
|
|
163
|
+
return next;
|
|
164
|
+
});
|
|
165
|
+
}, []);
|
|
166
|
+
useEffect(() => () => {
|
|
167
|
+
// Drop the observer together with its bookkeeping. StrictMode runs
|
|
168
|
+
// this cleanup and then the layout effects again: with the observed
|
|
169
|
+
// set kept, nothing would be re-observed by the replacement observer.
|
|
170
|
+
observerRef.current?.disconnect();
|
|
171
|
+
observerRef.current = null;
|
|
172
|
+
observedRef.current = new WeakSet();
|
|
173
|
+
}, []);
|
|
174
|
+
return { heights, registerCard, prune, syncMeasurements, observeMutations };
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=useMeasuredHeights.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMeasuredHeights.js","sourceRoot":"","sources":["../../../src/editor/reviews/useMeasuredHeights.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A notification click may request focus on a specific comment/suggestion
|
|
3
|
+
* before the item's feedback has loaded; this consumes the request once the
|
|
4
|
+
* matching entry shows up in the loaded data. Mount it once per active
|
|
5
|
+
* feedback surface.
|
|
6
|
+
*/
|
|
7
|
+
export declare function usePendingFeedbackFocus(): void;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useEffect, useSyncExternalStore } from "react";
|
|
2
|
+
import { useEditContext, useFieldsEditContext } from "../client/editContext";
|
|
3
|
+
import { selectFeedbackComment, selectFeedbackSuggestedEdit, } from "./feedbackSelection";
|
|
4
|
+
import { clearPendingFeedbackFocus, feedbackIdsEqual, getPendingFeedbackFocus, subscribePendingFeedbackFocus, } from "./pendingFeedbackFocus";
|
|
5
|
+
/**
|
|
6
|
+
* A notification click may request focus on a specific comment/suggestion
|
|
7
|
+
* before the item's feedback has loaded; this consumes the request once the
|
|
8
|
+
* matching entry shows up in the loaded data. Mount it once per active
|
|
9
|
+
* feedback surface.
|
|
10
|
+
*/
|
|
11
|
+
export function usePendingFeedbackFocus() {
|
|
12
|
+
const editContext = useEditContext();
|
|
13
|
+
const fieldsContext = useFieldsEditContext();
|
|
14
|
+
const pendingFocus = useSyncExternalStore(subscribePendingFeedbackFocus, getPendingFeedbackFocus, getPendingFeedbackFocus);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (!pendingFocus || !editContext)
|
|
17
|
+
return;
|
|
18
|
+
if (pendingFocus.kind === "comment") {
|
|
19
|
+
if (!editContext.commentsLoaded)
|
|
20
|
+
return;
|
|
21
|
+
const comment = editContext.comments.find((c) => feedbackIdsEqual(c.id, pendingFocus.id));
|
|
22
|
+
if (!comment)
|
|
23
|
+
return;
|
|
24
|
+
clearPendingFeedbackFocus(pendingFocus);
|
|
25
|
+
void selectFeedbackComment(comment, editContext, fieldsContext);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const edit = editContext.suggestedEdits.find((e) => feedbackIdsEqual(e.id, pendingFocus.id));
|
|
29
|
+
if (!edit)
|
|
30
|
+
return;
|
|
31
|
+
clearPendingFeedbackFocus(pendingFocus);
|
|
32
|
+
selectFeedbackSuggestedEdit(edit, editContext, fieldsContext);
|
|
33
|
+
}, [
|
|
34
|
+
pendingFocus,
|
|
35
|
+
editContext,
|
|
36
|
+
fieldsContext,
|
|
37
|
+
editContext?.commentsLoaded,
|
|
38
|
+
editContext?.comments,
|
|
39
|
+
editContext?.suggestedEdits,
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=usePendingFeedbackFocus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePendingFeedbackFocus.js","sourceRoot":"","sources":["../../../src/editor/reviews/usePendingFeedbackFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAG,oBAAoB,CACvC,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,CACxB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW;YAAE,OAAO;QAE1C,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,cAAc;gBAAE,OAAO;YACxC,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,CACxC,CAAC;YACF,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,yBAAyB,CAAC,YAAY,CAAC,CAAC;YACxC,KAAK,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,CACxC,CAAC;QACF,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,yBAAyB,CAAC,YAAY,CAAC,CAAC;QACxC,2BAA2B,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAChE,CAAC,EAAE;QACD,YAAY;QACZ,WAAW;QACX,aAAa;QACb,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,cAAc;KAC5B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export interface McpGrant {
|
|
2
|
+
grantId: string;
|
|
3
|
+
clientName: string;
|
|
4
|
+
clientId: string;
|
|
5
|
+
clientKind: string;
|
|
6
|
+
userName: string;
|
|
7
|
+
scopes: string[];
|
|
8
|
+
askBeforeWrites: boolean;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
lastUsedAt?: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface McpClient {
|
|
13
|
+
clientKey?: string | null;
|
|
14
|
+
clientId: string;
|
|
15
|
+
clientName: string;
|
|
16
|
+
kind: string;
|
|
17
|
+
createdAt?: string | null;
|
|
18
|
+
lastSeenAt?: string | null;
|
|
19
|
+
}
|
|
20
|
+
export interface McpStatus {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
serverUrl?: string | null;
|
|
23
|
+
writeScopeEnabled: boolean;
|
|
24
|
+
agentsScopeEnabled: boolean;
|
|
25
|
+
dynamicRegistrationEnabled: boolean;
|
|
26
|
+
settingsItemId?: string | null;
|
|
27
|
+
problems: string[];
|
|
28
|
+
clients?: McpClient[] | null;
|
|
29
|
+
}
|
|
30
|
+
/** The editable fields of the "MCP Access" settings item. */
|
|
31
|
+
export interface McpAccessSettingsForm {
|
|
32
|
+
enabled: boolean;
|
|
33
|
+
publicBaseUrl: string;
|
|
34
|
+
instructions: string;
|
|
35
|
+
allowedOrigins: string[];
|
|
36
|
+
allowedRoles: string[];
|
|
37
|
+
excludePreviewAndDemoUsers: boolean;
|
|
38
|
+
toolIds: string[];
|
|
39
|
+
readOnlyToolIds: string[];
|
|
40
|
+
allowedSkillIds: string[];
|
|
41
|
+
writeScopeEnabled: boolean;
|
|
42
|
+
agentsScopeEnabled: boolean;
|
|
43
|
+
readChecked: boolean;
|
|
44
|
+
writeChecked: boolean;
|
|
45
|
+
agentsChecked: boolean;
|
|
46
|
+
askBeforeWritesDefault: boolean;
|
|
47
|
+
maxAgentCostLimit: number;
|
|
48
|
+
requestsPerMinutePerGrant: number;
|
|
49
|
+
statusPollsPerMinutePerGrant: number;
|
|
50
|
+
globalAnonymousRequestsPerMinute: number;
|
|
51
|
+
maxDynamicClients: number;
|
|
52
|
+
cimdEnabled: boolean;
|
|
53
|
+
dcrEnabled: boolean;
|
|
54
|
+
accessTokenLifetimeMinutes: number;
|
|
55
|
+
refreshTokenLifetimeDays: number;
|
|
56
|
+
signingSecretConnectionStringName: string;
|
|
57
|
+
/** Read-only: the named connection string holds a usable secret. */
|
|
58
|
+
signingSecretFound?: boolean;
|
|
59
|
+
}
|
|
60
|
+
/** A tool folder or tool the Tools fields may select; folders include everything below them. */
|
|
61
|
+
export interface McpToolOption {
|
|
62
|
+
id: string;
|
|
63
|
+
parentId?: string | null;
|
|
64
|
+
name: string;
|
|
65
|
+
displayName?: string | null;
|
|
66
|
+
functionName?: string | null;
|
|
67
|
+
hiddenFromMcp: boolean;
|
|
68
|
+
verifiedRead: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface McpSkillOption {
|
|
71
|
+
id: string;
|
|
72
|
+
name: string;
|
|
73
|
+
description?: string | null;
|
|
74
|
+
disabled: boolean;
|
|
75
|
+
}
|
|
76
|
+
export interface McpAccessSettingsResponse {
|
|
77
|
+
settings: McpAccessSettingsForm;
|
|
78
|
+
options?: {
|
|
79
|
+
tools: McpToolOption[];
|
|
80
|
+
skills: McpSkillOption[];
|
|
81
|
+
roles: string[];
|
|
82
|
+
} | null;
|
|
83
|
+
suggestedPublicBaseUrl?: string | null;
|
|
84
|
+
itemPath?: string | null;
|
|
85
|
+
}
|
|
86
|
+
export declare const mcpAccessService: {
|
|
87
|
+
getStatus(): Promise<McpStatus>;
|
|
88
|
+
getGrants(all?: boolean): Promise<McpGrant[]>;
|
|
89
|
+
revokeGrant(grantId: string): Promise<void>;
|
|
90
|
+
deleteClient(clientKey: string): Promise<void>;
|
|
91
|
+
getSettings(): Promise<McpAccessSettingsResponse>;
|
|
92
|
+
saveSettings(settings: McpAccessSettingsForm): Promise<McpAccessSettingsForm>;
|
|
93
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { get, post } from "./serviceHelper";
|
|
2
|
+
function fail(result, fallback) {
|
|
3
|
+
throw new Error(result.details || result.summary || fallback);
|
|
4
|
+
}
|
|
5
|
+
export const mcpAccessService = {
|
|
6
|
+
async getStatus() {
|
|
7
|
+
const result = await get("/parhelia/mcp-access/status");
|
|
8
|
+
if (result.type !== "success" || !result.data)
|
|
9
|
+
fail(result, "Failed to load the MCP status");
|
|
10
|
+
return result.data;
|
|
11
|
+
},
|
|
12
|
+
async getGrants(all = false) {
|
|
13
|
+
const result = await get(`/parhelia/mcp-access/grants${all ? "?all=true" : ""}`);
|
|
14
|
+
if (result.type !== "success")
|
|
15
|
+
fail(result, "Failed to load MCP connections");
|
|
16
|
+
return result.data ?? [];
|
|
17
|
+
},
|
|
18
|
+
async revokeGrant(grantId) {
|
|
19
|
+
const result = await post("/parhelia/mcp-access/revoke", { grantId });
|
|
20
|
+
if (result.type !== "success")
|
|
21
|
+
fail(result, "Failed to revoke the connection");
|
|
22
|
+
},
|
|
23
|
+
async deleteClient(clientKey) {
|
|
24
|
+
const result = await post("/parhelia/mcp-access/deleteClient", { clientKey });
|
|
25
|
+
if (result.type !== "success")
|
|
26
|
+
fail(result, "Failed to delete the client");
|
|
27
|
+
},
|
|
28
|
+
async getSettings() {
|
|
29
|
+
const result = await get("/parhelia/mcp-access/settings");
|
|
30
|
+
if (result.type !== "success" || !result.data)
|
|
31
|
+
fail(result, "Failed to load the MCP settings");
|
|
32
|
+
return result.data;
|
|
33
|
+
},
|
|
34
|
+
async saveSettings(settings) {
|
|
35
|
+
const result = await post("/parhelia/mcp-access/saveSettings", settings);
|
|
36
|
+
if (result.type !== "success" || !result.data)
|
|
37
|
+
fail(result, "Failed to save the MCP settings");
|
|
38
|
+
return result.data.settings;
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=mcpAccessService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpAccessService.js","sourceRoot":"","sources":["../../../src/editor/services/mcpAccessService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AA8F5C,SAAS,IAAI,CAAC,MAA8C,EAAE,QAAgB;IAC5E,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,GAAG,CAAY,6BAA6B,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,IAAI,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;QAC7F,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK;QACzB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAa,8BAA8B,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7F,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QAC9E,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAuB,6BAA6B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5F,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAuB,mCAAmC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpG,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,MAAM,GAAG,CAA4B,+BAA+B,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,IAAI,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;QAC/F,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAA+B;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAA4B,mCAAmC,EAAE,QAAQ,CAAC,CAAC;QACpG,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,IAAI,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;QAC/F,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC9B,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type InteractivePreviewPage, type PreviewTokenResponse } from "../page-viewer/interactivePreview";
|
|
2
|
+
export type PreviewTokenResult = {
|
|
3
|
+
ok: true;
|
|
4
|
+
data: PreviewTokenResponse;
|
|
5
|
+
} | {
|
|
6
|
+
ok: false;
|
|
7
|
+
message: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Mints a preview token for the page (cookie-authenticated GET on the CM).
|
|
11
|
+
* The token authorizes the sandboxed interactive preview frame, which has no
|
|
12
|
+
* cookies of its own.
|
|
13
|
+
*/
|
|
14
|
+
export declare function fetchPreviewToken(page: InteractivePreviewPage, signal?: AbortSignal): Promise<PreviewTokenResult>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { buildPreviewTokenUrl, isPreviewTokenResponse, } from "../page-viewer/interactivePreview";
|
|
2
|
+
import { getServerMessage } from "./renderingsService";
|
|
3
|
+
import { get, PARHELIA_REQUEST_HEADER, PARHELIA_REQUEST_HEADER_VALUE, } from "./serviceHelper";
|
|
4
|
+
const FALLBACK_MESSAGE = "The preview token could not be created.";
|
|
5
|
+
/**
|
|
6
|
+
* Mints a preview token for the page (cookie-authenticated GET on the CM).
|
|
7
|
+
* The token authorizes the sandboxed interactive preview frame, which has no
|
|
8
|
+
* cookies of its own.
|
|
9
|
+
*/
|
|
10
|
+
export async function fetchPreviewToken(page, signal) {
|
|
11
|
+
let result;
|
|
12
|
+
try {
|
|
13
|
+
result = await get(buildPreviewTokenUrl(page), undefined, signal, {
|
|
14
|
+
[PARHELIA_REQUEST_HEADER]: PARHELIA_REQUEST_HEADER_VALUE,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
return {
|
|
19
|
+
ok: false,
|
|
20
|
+
message: error instanceof Error ? error.message : FALLBACK_MESSAGE,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if (result.type !== "success") {
|
|
24
|
+
return { ok: false, message: getServerMessage(result, FALLBACK_MESSAGE) };
|
|
25
|
+
}
|
|
26
|
+
if (!isPreviewTokenResponse(result.data)) {
|
|
27
|
+
return {
|
|
28
|
+
ok: false,
|
|
29
|
+
message: "The server returned an unexpected preview token response.",
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return { ok: true, data: result.data };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=previewTokenService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"previewTokenService.js","sourceRoot":"","sources":["../../../src/editor/services/previewTokenService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,GAAG,EACH,uBAAuB,EACvB,6BAA6B,GAE9B,MAAM,iBAAiB,CAAC;AAKzB,MAAM,gBAAgB,GAAG,yCAAyC,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAA4B,EAC5B,MAAoB;IAEpB,IAAI,MAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,GAAG,CAAU,oBAAoB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE;YACzE,CAAC,uBAAuB,CAAC,EAAE,6BAA6B;SACzD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;SACnE,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,2DAA2D;SACrE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC"}
|