@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,377 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, } from "react";
|
|
3
|
+
import { ChevronDown, ChevronsLeft, ChevronsRight, ChevronUp, PenLine, X, } from "lucide-react";
|
|
4
|
+
import { useEditContext, useFieldsEditContext } from "../client/editContext";
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
|
+
import { IframeOverlayProvider } from "../page-editor-chrome/overlay/IframeOverlayProvider";
|
|
7
|
+
import { getBridgeOverlayGeometryDetail } from "../page-editor-chrome/overlay/geometry";
|
|
8
|
+
import { beginAddComment, COMMENT_PICKER_IGNORE_ATTRIBUTE, } from "../reviews/commentTargetPicker";
|
|
9
|
+
import { CommentThreadCard } from "../reviews/CommentThreadCard";
|
|
10
|
+
import { FeedbackDraftsProvider } from "../reviews/feedbackDrafts";
|
|
11
|
+
import { FeedbackModeIntro } from "../reviews/FeedbackModeIntro";
|
|
12
|
+
import { FEEDBACK_SIDEBAR_TEXT_CLASS } from "../reviews/feedbackSidebarText";
|
|
13
|
+
import { clearHoveredFeedback, setHoveredFeedback, } from "../reviews/feedbackHoverState";
|
|
14
|
+
import { selectFeedbackComment, selectFeedbackSuggestedEdit, } from "../reviews/feedbackSelection";
|
|
15
|
+
import { resolveSelectedThreadId } from "../reviews/feedbackThreadSelection";
|
|
16
|
+
import { createSmoothWheelForwarder, findScrollableAncestor, } from "../reviews/feedbackWheelForwarding";
|
|
17
|
+
import { enterSuggestionsMode, exitSuggestionsMode, } from "../reviews/openCommentsFeedback";
|
|
18
|
+
import { FEEDBACK_SCROLLABLE_ATTRIBUTE, scrollElementIntoContainer, } from "../reviews/scrollWithin";
|
|
19
|
+
import { SuggestionThreadCard } from "../reviews/SuggestionThreadCard";
|
|
20
|
+
import { useFeedbackThreads } from "../reviews/useFeedbackThreads";
|
|
21
|
+
import { useMeasuredHeights } from "../reviews/useMeasuredHeights";
|
|
22
|
+
import { usePendingFeedbackFocus } from "../reviews/usePendingFeedbackFocus";
|
|
23
|
+
import { FEEDBACK_MARGIN_CARD_GAP, FEEDBACK_MARGIN_RAIL_BLEED, FEEDBACK_MARGIN_WIDTH, FeedbackMarginController, } from "./FeedbackMarginController";
|
|
24
|
+
import { FEEDBACK_MARGIN_MIN_CANVAS_WIDTH, getCardBodyMaxHeight, getFeedbackMarginRoom, } from "./feedbackMarginLayout";
|
|
25
|
+
import { FeedbackMarginMarker } from "./FeedbackMarginMarker";
|
|
26
|
+
import { FeedbackMarginResizeHandle } from "./FeedbackMarginResizeHandle";
|
|
27
|
+
import { FEEDBACK_MARGIN_MIN_WIDTH, setFeedbackMarginCollapsed, useFeedbackMarginPreferredWidth, } from "./feedbackMarginWidth";
|
|
28
|
+
import { useCanvasMarginSource, useFormMarginSource, } from "./feedbackMarginSources";
|
|
29
|
+
import { usePageViewState } from "./pageViewContext";
|
|
30
|
+
export { FEEDBACK_MARGIN_MIN_WIDTH, FEEDBACK_MARGIN_RAIL_WIDTH, FEEDBACK_MARGIN_WIDTH, } from "./FeedbackMarginController";
|
|
31
|
+
/**
|
|
32
|
+
* Word-style comment margin beside the canvas: a column where every
|
|
33
|
+
* comment/suggestion card sits level with the text it is about. It carries no
|
|
34
|
+
* controls; adding, suggesting and filtering live in the toolbar.
|
|
35
|
+
*
|
|
36
|
+
* In a narrow pane the column narrows, then collapses into a rail of markers
|
|
37
|
+
* (the canvas keeps its width); the rail can be expanded into the full column
|
|
38
|
+
* floating over the canvas edge. Dragging the column's edge past its minimum
|
|
39
|
+
* collapses it into the same rail where the pane has room for it.
|
|
40
|
+
*/
|
|
41
|
+
export function FeedbackMargin({ iframe, pageViewContext, height, size, maxResizeWidth, invalidationKey, deferredInvalidationMs, }) {
|
|
42
|
+
const bridgeGeometry = usePageViewState(pageViewContext, (state) => state.bridgeGeometry);
|
|
43
|
+
// The overlay provider reads its seed once, when it mounts.
|
|
44
|
+
const seedGeometry = useMemo(() => getBridgeOverlayGeometryDetail(bridgeGeometry), [bridgeGeometry]);
|
|
45
|
+
const isRail = size.presentation === "rail";
|
|
46
|
+
// A rail the user collapsed the column into has room beside it: expanding
|
|
47
|
+
// it docks the column again instead of floating it over the canvas.
|
|
48
|
+
const collapsedByUser = isRail && !!size.collapsed;
|
|
49
|
+
const [expanded, setExpanded] = useState(false);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (!isRail || collapsedByUser)
|
|
52
|
+
setExpanded(false);
|
|
53
|
+
}, [isRail, collapsedByUser]);
|
|
54
|
+
const floating = isRail && !collapsedByUser && expanded;
|
|
55
|
+
const presentation = isRail && !expanded ? "rail" : "full";
|
|
56
|
+
const width = floating ? FEEDBACK_MARGIN_WIDTH : size.width;
|
|
57
|
+
// The bridge only scrolls the canvas instantly; easing wheel notches here
|
|
58
|
+
// makes the margin scroll like the canvas itself.
|
|
59
|
+
const wheelForwarder = useMemo(() => createSmoothWheelForwarder((y) => !!pageViewContext.requestBridgeScrollBy?.({ y, behavior: "instant" }), () => !!pageViewContext.requestBridgeScrollBy), [pageViewContext]);
|
|
60
|
+
useEffect(() => () => wheelForwarder.cancel(), [wheelForwarder]);
|
|
61
|
+
// The slot keeps the width the pane gave the column, so expanding the rail
|
|
62
|
+
// floats the full column over the canvas instead of reflowing the page.
|
|
63
|
+
return (_jsx(FeedbackDraftsProvider, { children: _jsx("div", { "data-testid": "feedback-margin-slot", "data-feedback-margin-presentation": size.presentation, className: cn("relative shrink-0", isRail && "z-40"), style: { width: size.width, height }, children: _jsx(FeedbackMarginColumn, { layout: "overlay", height: "100%", width: width, presentation: presentation, floating: floating, resizable: !isRail || collapsedByUser, collapsible: true, maxResizeWidth: maxResizeWidth, onExpandedChange: !isRail
|
|
64
|
+
? undefined
|
|
65
|
+
: collapsedByUser
|
|
66
|
+
? (next) => next && setFeedbackMarginCollapsed(false)
|
|
67
|
+
: setExpanded, onWheelForward: wheelForwarder.forward, renderLayer: (layerProps) => iframe && (_jsx(IframeOverlayProvider, { iframe: iframe, mode: "scrolling", axis: "vertical", layerWidth: width, overflow: "clip", scrollScale: 1, visualScale: 1, invalidationKey: invalidationKey, deferredInvalidationMs: deferredInvalidationMs, seedGeometry: seedGeometry,
|
|
68
|
+
// Rail cards float over the canvas, left of the rail.
|
|
69
|
+
bleed: presentation === "rail"
|
|
70
|
+
? { left: FEEDBACK_MARGIN_RAIL_BLEED }
|
|
71
|
+
: 0, children: _jsx(CanvasMarginLayer, { ...layerProps, pageViewContext: pageViewContext }) })) }) }) }));
|
|
72
|
+
}
|
|
73
|
+
function CanvasMarginLayer({ pageViewContext, ...layerProps }) {
|
|
74
|
+
const source = useCanvasMarginSource(pageViewContext);
|
|
75
|
+
return _jsx(FeedbackMarginController, { ...layerProps, ...source });
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The same margin beside the item form (items without a canvas): it sits in
|
|
79
|
+
* the form's own scroll container, so the cards scroll natively with the
|
|
80
|
+
* fields they are anchored to.
|
|
81
|
+
*/
|
|
82
|
+
export function FormFeedbackMargin({ scroller, form, }) {
|
|
83
|
+
const viewportHeight = useElementHeight(scroller);
|
|
84
|
+
const scrollerWidth = useElementWidth(scroller);
|
|
85
|
+
const preferredWidth = useFeedbackMarginPreferredWidth();
|
|
86
|
+
// The form keeps as much room as the canvas does beside the column.
|
|
87
|
+
const room = scroller
|
|
88
|
+
? getFeedbackMarginRoom({
|
|
89
|
+
paneWidth: scrollerWidth,
|
|
90
|
+
reservedWidth: 0,
|
|
91
|
+
minCanvasWidth: FEEDBACK_MARGIN_MIN_CANVAS_WIDTH,
|
|
92
|
+
})
|
|
93
|
+
: undefined;
|
|
94
|
+
const width = room === undefined
|
|
95
|
+
? preferredWidth
|
|
96
|
+
: Math.max(FEEDBACK_MARGIN_MIN_WIDTH, Math.min(preferredWidth, room));
|
|
97
|
+
return (_jsx(FeedbackDraftsProvider, { children: _jsx(FeedbackMarginColumn, { layout: "flow", viewportHeight: viewportHeight, width: width, resizable: true, maxResizeWidth: room, renderLayer: (layerProps) => (_jsx("div", { className: "pointer-events-none absolute inset-0", children: _jsx(FormMarginLayer, { ...layerProps, scroller: scroller, form: form }) })) }) }));
|
|
98
|
+
}
|
|
99
|
+
function FormMarginLayer({ scroller, form, ...layerProps }) {
|
|
100
|
+
const source = useFormMarginSource(scroller, form, layerProps.threads);
|
|
101
|
+
return _jsx(FeedbackMarginController, { ...layerProps, ...source });
|
|
102
|
+
}
|
|
103
|
+
export function useElementWidth(element) {
|
|
104
|
+
const [width, setWidth] = useState(() => element?.clientWidth ?? 0);
|
|
105
|
+
useLayoutEffect(() => {
|
|
106
|
+
if (!element) {
|
|
107
|
+
setWidth(0);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
setWidth(element.clientWidth);
|
|
111
|
+
if (typeof ResizeObserver === "undefined")
|
|
112
|
+
return;
|
|
113
|
+
const observer = new ResizeObserver(() => setWidth(element.clientWidth));
|
|
114
|
+
observer.observe(element);
|
|
115
|
+
return () => observer.disconnect();
|
|
116
|
+
}, [element]);
|
|
117
|
+
return width;
|
|
118
|
+
}
|
|
119
|
+
export function useElementHeight(element) {
|
|
120
|
+
const [height, setHeight] = useState(() => element?.offsetHeight ?? 0);
|
|
121
|
+
useLayoutEffect(() => {
|
|
122
|
+
if (!element) {
|
|
123
|
+
setHeight(0);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
setHeight(element.offsetHeight);
|
|
127
|
+
if (typeof ResizeObserver === "undefined")
|
|
128
|
+
return;
|
|
129
|
+
const observer = new ResizeObserver((entries) => {
|
|
130
|
+
const entry = entries[0];
|
|
131
|
+
if (!entry)
|
|
132
|
+
return;
|
|
133
|
+
setHeight(entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height);
|
|
134
|
+
});
|
|
135
|
+
observer.observe(element, { box: "border-box" });
|
|
136
|
+
return () => observer.disconnect();
|
|
137
|
+
}, [element]);
|
|
138
|
+
return height;
|
|
139
|
+
}
|
|
140
|
+
const EMPTY_REPORT = {
|
|
141
|
+
mode: "anchored",
|
|
142
|
+
orderedIds: [],
|
|
143
|
+
unplacedIds: [],
|
|
144
|
+
};
|
|
145
|
+
function FeedbackMarginColumn({ layout, height, viewportHeight, width = FEEDBACK_MARGIN_WIDTH, presentation = "full", floating = false, resizable = false, collapsible = false, maxResizeWidth, onExpandedChange, renderLayer, onWheelForward, }) {
|
|
146
|
+
const editContext = useEditContext();
|
|
147
|
+
const fieldsContext = useFieldsEditContext();
|
|
148
|
+
usePendingFeedbackFocus();
|
|
149
|
+
const feedback = useFeedbackThreads();
|
|
150
|
+
const { threads } = feedback;
|
|
151
|
+
const isFlow = layout === "flow";
|
|
152
|
+
const isRail = presentation === "rail";
|
|
153
|
+
const pinnedId = resolveSelectedThreadId(threads, editContext?.selectedComment, editContext?.selectedSuggestedEdit);
|
|
154
|
+
const { heights, registerCard, prune, syncMeasurements, observeMutations } = useMeasuredHeights();
|
|
155
|
+
useEffect(() => {
|
|
156
|
+
prune(threads.map((thread) => thread.id));
|
|
157
|
+
}, [threads, prune]);
|
|
158
|
+
// Cards register their elements during commit; observe and seed their
|
|
159
|
+
// heights before paint so a new card never lingers hidden.
|
|
160
|
+
useLayoutEffect(() => {
|
|
161
|
+
syncMeasurements();
|
|
162
|
+
});
|
|
163
|
+
const columnRef = useRef(null);
|
|
164
|
+
const [columnElement, setColumnElement] = useState(null);
|
|
165
|
+
const [noticeElement, setNoticeElement] = useState(null);
|
|
166
|
+
const [footerElement, setFooterElement] = useState(null);
|
|
167
|
+
const columnHeight = useElementHeight(columnElement);
|
|
168
|
+
const noticeHeight = useElementHeight(noticeElement);
|
|
169
|
+
const footerHeight = useElementHeight(footerElement);
|
|
170
|
+
const visibleHeight = isFlow ? (viewportHeight ?? 0) : columnHeight;
|
|
171
|
+
const bodyMaxHeight = getCardBodyMaxHeight(visibleHeight);
|
|
172
|
+
const bindColumn = useCallback((element) => {
|
|
173
|
+
columnRef.current = element;
|
|
174
|
+
setColumnElement(element);
|
|
175
|
+
}, []);
|
|
176
|
+
// Cards grow and shrink through their own renders (composer, "Show more",
|
|
177
|
+
// replies); re-measure after any DOM change in the column.
|
|
178
|
+
useEffect(() => observeMutations(columnElement), [columnElement, observeMutations]);
|
|
179
|
+
const [report, setReport] = useState(EMPTY_REPORT);
|
|
180
|
+
const handleLayoutChange = useCallback((next) => setReport(next), []);
|
|
181
|
+
const [focusEpoch, setFocusEpoch] = useState(0);
|
|
182
|
+
const [footerExpanded, setFooterExpanded] = useState(false);
|
|
183
|
+
const pinnedIsUnplaced = !!pinnedId && report.unplacedIds.includes(pinnedId);
|
|
184
|
+
// The rail has no footer: a selected thread that is not on the page opens
|
|
185
|
+
// the floating column. Only a new selection does, so collapsing sticks.
|
|
186
|
+
const expandRef = useRef(undefined);
|
|
187
|
+
expandRef.current =
|
|
188
|
+
isRail && onExpandedChange ? () => onExpandedChange(true) : undefined;
|
|
189
|
+
useEffect(() => {
|
|
190
|
+
if (!pinnedIsUnplaced)
|
|
191
|
+
return;
|
|
192
|
+
setFooterExpanded(true);
|
|
193
|
+
expandRef.current?.();
|
|
194
|
+
}, [pinnedIsUnplaced, pinnedId]);
|
|
195
|
+
useEffect(() => {
|
|
196
|
+
if (report.unplacedIds.length === 0)
|
|
197
|
+
setFooterExpanded(false);
|
|
198
|
+
}, [report.unplacedIds.length]);
|
|
199
|
+
const threadsById = useMemo(() => new Map(threads.map((thread) => [thread.id, thread])), [threads]);
|
|
200
|
+
const clearSelection = useCallback(() => {
|
|
201
|
+
editContext?.setSelectedComment(undefined);
|
|
202
|
+
editContext?.setSelectedSuggestedEdit(undefined);
|
|
203
|
+
}, [editContext]);
|
|
204
|
+
const toggleThread = useCallback((id) => {
|
|
205
|
+
const thread = threadsById.get(id);
|
|
206
|
+
if (!thread)
|
|
207
|
+
return;
|
|
208
|
+
if (id === pinnedId) {
|
|
209
|
+
clearSelection();
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (thread.kind === "comment") {
|
|
213
|
+
void selectFeedbackComment(thread.root, editContext, fieldsContext);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
selectFeedbackSuggestedEdit(thread.suggestion, editContext, fieldsContext);
|
|
217
|
+
}
|
|
218
|
+
}, [threadsById, pinnedId, clearSelection, editContext, fieldsContext]);
|
|
219
|
+
// A floating card covers the canvas; Escape puts it away unless it is the
|
|
220
|
+
// key that ends typing in a field.
|
|
221
|
+
const railCardOpen = isRail && !!pinnedId;
|
|
222
|
+
useEffect(() => {
|
|
223
|
+
if (!railCardOpen)
|
|
224
|
+
return;
|
|
225
|
+
const onKeyDown = (event) => {
|
|
226
|
+
if (event.key !== "Escape" || event.defaultPrevented)
|
|
227
|
+
return;
|
|
228
|
+
const active = document.activeElement;
|
|
229
|
+
if (active instanceof HTMLElement &&
|
|
230
|
+
(active.tagName === "TEXTAREA" ||
|
|
231
|
+
active.tagName === "INPUT" ||
|
|
232
|
+
active.isContentEditable)) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
clearSelection();
|
|
236
|
+
};
|
|
237
|
+
document.addEventListener("keydown", onKeyDown);
|
|
238
|
+
return () => document.removeEventListener("keydown", onKeyDown);
|
|
239
|
+
}, [railCardOpen, clearSelection]);
|
|
240
|
+
const renderMarker = useCallback((id, { selected, hovered }) => {
|
|
241
|
+
const thread = threadsById.get(id);
|
|
242
|
+
if (!thread)
|
|
243
|
+
return null;
|
|
244
|
+
return (_jsx(FeedbackMarginMarker, { thread: thread, resolvedAuthorName: feedback.getAuthorName(thread.kind === "comment" ? thread.root : thread.suggestion), selected: selected, hovered: hovered, onToggle: () => toggleThread(id), onHoverChange: (hovering) => hovering
|
|
245
|
+
? setHoveredFeedback({ kind: thread.kind, id: thread.id })
|
|
246
|
+
: clearHoveredFeedback(thread.id) }));
|
|
247
|
+
}, [threadsById, feedback.getAuthorName, toggleThread]);
|
|
248
|
+
const renderCard = useCallback((id, { selected, dimmed, context = false, floating: floatingCard = false, }) => {
|
|
249
|
+
const thread = threadsById.get(id);
|
|
250
|
+
if (!thread)
|
|
251
|
+
return null;
|
|
252
|
+
const onHoverChange = (hovered) => hovered
|
|
253
|
+
? setHoveredFeedback({ kind: thread.kind, id: thread.id })
|
|
254
|
+
: clearHoveredFeedback(thread.id);
|
|
255
|
+
const card = thread.kind === "suggestion" ? (_jsx(SuggestionThreadCard, { thread: thread, getAuthorName: feedback.getAuthorName, resolvedAuthorNames: feedback.resolvedAuthorNames, navigation: "select", bodyMaxHeight: bodyMaxHeight, balloon: true, showContext: context, onHoverChange: onHoverChange, cardRef: registerCard(thread.id) })) : (_jsx(CommentThreadCard, { thread: thread, availableTags: feedback.availableTags, getAuthorName: feedback.getAuthorName, resolvedAuthorNames: feedback.resolvedAuthorNames, selected: selected, navigation: "select", bodyMaxHeight: bodyMaxHeight, balloon: true, showContext: context, onHoverChange: onHoverChange, cardRef: registerCard(thread.id) }));
|
|
256
|
+
if (floatingCard) {
|
|
257
|
+
// A draft closes through its own Cancel; a saved thread through the
|
|
258
|
+
// close button, its marker or Escape.
|
|
259
|
+
const isDraft = thread.kind === "comment" && !!thread.root.isNew;
|
|
260
|
+
return (_jsxs("div", { className: "relative rounded-md shadow-lg", children: [card, !isDraft && (_jsx("button", { type: "button", "data-testid": "feedback-margin-floating-close", "aria-label": "Close", title: "Close", className: "border-border-default text-neutral-grey-50 hover:text-neutral-grey-100 absolute -top-2 -left-2 z-10 flex size-5 cursor-pointer items-center justify-center rounded-full border bg-white shadow-sm", onClick: (event) => {
|
|
261
|
+
event.stopPropagation();
|
|
262
|
+
clearSelection();
|
|
263
|
+
}, children: _jsx(X, { size: 12, strokeWidth: 1.5 }) }))] }));
|
|
264
|
+
}
|
|
265
|
+
return (_jsx("div", { className: cn("transition-opacity duration-150", dimmed && "opacity-70"), children: card }));
|
|
266
|
+
}, [
|
|
267
|
+
threadsById,
|
|
268
|
+
feedback.getAuthorName,
|
|
269
|
+
feedback.resolvedAuthorNames,
|
|
270
|
+
feedback.availableTags,
|
|
271
|
+
bodyMaxHeight,
|
|
272
|
+
registerCard,
|
|
273
|
+
clearSelection,
|
|
274
|
+
]);
|
|
275
|
+
const handleWheel = (event) => {
|
|
276
|
+
const column = columnRef.current;
|
|
277
|
+
if (!column || !onWheelForward)
|
|
278
|
+
return;
|
|
279
|
+
// A popover portaled to the body (emoji picker, mention list) is still a
|
|
280
|
+
// React child of the column, so its wheel events bubble here; they scroll
|
|
281
|
+
// the popover, not the canvas.
|
|
282
|
+
if (!column.contains(event.target))
|
|
283
|
+
return;
|
|
284
|
+
const container = findScrollableAncestor(event.target, column, event.deltaY);
|
|
285
|
+
if (container)
|
|
286
|
+
return; // a card body or list scrolls natively
|
|
287
|
+
if (report.mode !== "anchored")
|
|
288
|
+
return;
|
|
289
|
+
if (onWheelForward(event.deltaY, event.deltaMode))
|
|
290
|
+
event.stopPropagation();
|
|
291
|
+
};
|
|
292
|
+
const handleAddComment = () => beginAddComment(editContext);
|
|
293
|
+
const handleStartSuggesting = () => enterSuggestionsMode(editContext, { reason: "sidebar" });
|
|
294
|
+
const handleStopSuggesting = () => exitSuggestionsMode(editContext, { reason: "sidebar" });
|
|
295
|
+
const showEmptyState = !isRail &&
|
|
296
|
+
threads.length === 0 &&
|
|
297
|
+
feedback.commentsLoaded &&
|
|
298
|
+
!feedback.isSuggestionsMode;
|
|
299
|
+
const minY = noticeHeight + FEEDBACK_MARGIN_CARD_GAP;
|
|
300
|
+
const mode = report.mode;
|
|
301
|
+
const showTopBar = !isRail && (floating || feedback.isSuggestionsMode);
|
|
302
|
+
return (_jsxs("div", { ref: bindColumn, "data-testid": "comments-suggestions-panel", "data-feedback-margin-mode": mode, "data-feedback-margin-layout": layout, "data-feedback-margin-presentation": floating ? "floating" : presentation, "data-feedback-margin-min-y": minY, className: cn(FEEDBACK_SIDEBAR_TEXT_CLASS, "border-border-default bg-neutral-grey-5 relative shrink-0 border-l select-text", isFlow && "flex flex-col", floating && "absolute top-0 right-0 shadow-xl"), style: { width, height }, onWheelCapture: onWheelForward ? handleWheel : undefined, onBlurCapture: () => setFocusEpoch((epoch) => epoch + 1), children: [resizable && !floating && (_jsx(FeedbackMarginResizeHandle, { width: width, maxWidth: maxResizeWidth, grip: !isFlow, collapsible: collapsible, collapsed: isRail })), showTopBar && (_jsxs("div", { ref: setNoticeElement, className: cn("bg-neutral-grey-5 z-20", isFlow ? "sticky top-0" : "absolute inset-x-0 top-0"), children: [floating && (_jsxs("div", { className: "flex items-center gap-1 pt-1.5 pr-1.5 pl-3", children: [_jsx("span", { className: "text-neutral-grey-100 min-w-0 flex-1 truncate font-medium", children: "Comments" }), _jsx("button", { type: "button", "data-testid": "feedback-margin-collapse", "aria-label": "Collapse comments", title: "Collapse comments", className: "text-neutral-grey-50 hover:bg-neutral-grey-10 hover:text-neutral-grey-100 flex size-6 cursor-pointer items-center justify-center rounded", onClick: () => onExpandedChange?.(false), children: _jsx(ChevronsRight, { size: 16, strokeWidth: 1.5 }) })] })), feedback.isSuggestionsMode && (_jsx(SuggestingNotice, { onStopSuggesting: handleStopSuggesting }))] })), isRail && (_jsxs("div", { ref: setNoticeElement, className: "bg-neutral-grey-5 absolute inset-x-0 top-0 z-20 flex flex-col items-center gap-1 pt-1.5", children: [onExpandedChange && (_jsx("button", { type: "button", "data-testid": "feedback-margin-expand", "aria-label": "Expand comments", title: "Expand comments", className: "text-neutral-grey-50 hover:bg-neutral-grey-10 hover:text-neutral-grey-100 flex size-6 cursor-pointer items-center justify-center rounded", onClick: () => onExpandedChange(true), children: _jsx(ChevronsLeft, { size: 16, strokeWidth: 1.5 }) })), feedback.isSuggestionsMode && (_jsx("span", { "data-testid": "feedback-margin-rail-suggesting", title: "Suggesting: page edits are saved as suggestions.", className: "text-highlight-100 flex size-6 items-center justify-center", children: _jsx(PenLine, { size: 14, strokeWidth: 1 }) }))] })), showEmptyState && (_jsx("div", { className: "relative z-10 px-2", style: { paddingTop: minY }, [COMMENT_PICKER_IGNORE_ATTRIBUTE]: "", children: _jsx(FeedbackModeIntro, { variant: "empty", canSuggest: feedback.suggestionsAvailable, onAddComment: handleAddComment, onStartSuggesting: handleStartSuggesting }) })), renderLayer({
|
|
303
|
+
threads,
|
|
304
|
+
heights,
|
|
305
|
+
width,
|
|
306
|
+
presentation,
|
|
307
|
+
minY,
|
|
308
|
+
footerHeight,
|
|
309
|
+
pinnedId,
|
|
310
|
+
focusEpoch,
|
|
311
|
+
columnRef,
|
|
312
|
+
onLayoutChange: handleLayoutChange,
|
|
313
|
+
renderCard,
|
|
314
|
+
renderMarker,
|
|
315
|
+
}), mode === "stacked" && (_jsx(FeedbackMarginStackedList, { className: isFlow ? "sticky top-0" : "absolute inset-x-0 bottom-0", style: isFlow
|
|
316
|
+
? { height: Math.max(0, visibleHeight) }
|
|
317
|
+
: { top: noticeHeight }, ids: [...report.orderedIds, ...report.unplacedIds], pinnedId: pinnedId, renderCard: renderCard })), isRail && report.unplacedIds.length > 0 && (_jsxs("button", { ref: setFooterElement, type: "button", "data-testid": "feedback-unplaced-rail-button", "aria-label": getUnplacedLabel(report.unplacedIds.length, layout), title: getUnplacedLabel(report.unplacedIds.length, layout), className: "border-border-default text-neutral-grey-100 hover:bg-neutral-grey-10 absolute inset-x-0 bottom-0 z-20 flex h-8 cursor-pointer items-center justify-center border-t bg-white text-xs font-medium", onClick: () => {
|
|
318
|
+
setFooterExpanded(true);
|
|
319
|
+
onExpandedChange?.(true);
|
|
320
|
+
}, children: ["+", report.unplacedIds.length] })), !isRail && mode === "anchored" && report.unplacedIds.length > 0 && (_jsx(FeedbackMarginUnplacedFooter, { ref: setFooterElement, layout: layout, className: isFlow ? "sticky bottom-0 mt-auto" : "absolute inset-x-0 bottom-0", ids: report.unplacedIds, expanded: footerExpanded, onToggle: () => setFooterExpanded((expanded) => !expanded), maxListHeight: Math.max(160, Math.round(visibleHeight * 0.5)), pinnedId: pinnedId, renderCard: renderCard }))] }));
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Suggestions mode changes what typing on the page does, so the margin says
|
|
324
|
+
* so where the suggestions appear. A notice card, not a header: the mode is
|
|
325
|
+
* switched from the toolbar.
|
|
326
|
+
*/
|
|
327
|
+
export const SuggestingNotice = forwardRef(function SuggestingNotice({ className, onStopSuggesting }, ref) {
|
|
328
|
+
return (_jsx("div", { ref: ref, "data-testid": "feedback-margin-suggesting-notice", className: cn("bg-neutral-grey-5 z-20 px-2.5 pt-2", className), children: _jsxs("div", { className: "border-border-default text-neutral-grey-100 flex items-center gap-2 rounded-md border bg-white py-1 pr-1 pl-2.5 text-xs", children: [_jsx(PenLine, { size: 14, strokeWidth: 1, className: "text-highlight-100 shrink-0" }), _jsx("span", { className: "min-w-0 flex-1", children: "Suggesting: page edits are saved as suggestions." }), _jsx("button", { type: "button", className: "text-neutral-grey-50 hover:bg-neutral-grey-5 hover:text-neutral-grey-100 shrink-0 rounded px-2 py-0.5", onClick: onStopSuggesting, children: "Turn off" })] }) }));
|
|
329
|
+
});
|
|
330
|
+
export function useRevealPinnedCard(listRef, pinnedId, enabled) {
|
|
331
|
+
useEffect(() => {
|
|
332
|
+
if (!enabled || !pinnedId)
|
|
333
|
+
return;
|
|
334
|
+
const list = listRef.current;
|
|
335
|
+
if (!list)
|
|
336
|
+
return;
|
|
337
|
+
const card = Array.from(list.querySelectorAll("[data-feedback-thread-id]")).find((element) => element.dataset.feedbackThreadId === pinnedId);
|
|
338
|
+
if (!card)
|
|
339
|
+
return;
|
|
340
|
+
scrollElementIntoContainer(card, list, { behavior: "smooth" });
|
|
341
|
+
}, [listRef, pinnedId, enabled]);
|
|
342
|
+
}
|
|
343
|
+
function FeedbackMarginStackedList({ className, style, ids, pinnedId, renderCard, }) {
|
|
344
|
+
const listRef = useRef(null);
|
|
345
|
+
useRevealPinnedCard(listRef, pinnedId, true);
|
|
346
|
+
return (_jsxs("div", { ref: listRef, "data-testid": "feedback-margin-stacked-list", className: cn("z-10 space-y-3 overflow-auto p-3", className), style: style, [FEEDBACK_SCROLLABLE_ATTRIBUTE]: "", children: [_jsx("p", { "data-testid": "feedback-margin-stacked-hint", className: "text-neutral-grey-50 px-0.5 leading-4", children: "Too many comments to show beside their text. Listed in page order; select one to find it on the page." }), ids.map((id) => (_jsx("div", { "data-feedback-margin-card": id, children: renderCard(id, {
|
|
347
|
+
selected: id === pinnedId,
|
|
348
|
+
dimmed: !!pinnedId && id !== pinnedId,
|
|
349
|
+
}) }, id)))] }));
|
|
350
|
+
}
|
|
351
|
+
const FeedbackMarginUnplacedFooter = forwardRef(function FeedbackMarginUnplacedFooter({ className, layout, ids, expanded, onToggle, maxListHeight, pinnedId, renderCard, }, ref) {
|
|
352
|
+
const listRef = useRef(null);
|
|
353
|
+
useRevealPinnedCard(listRef, pinnedId, expanded);
|
|
354
|
+
const listStyle = { maxHeight: maxListHeight };
|
|
355
|
+
// Only the toggle bar reserves room in the anchored layout. The expanded
|
|
356
|
+
// list overlays the cards: counting its height would shrink the column,
|
|
357
|
+
// push the layout into stacked mode, unmount this footer and flip back.
|
|
358
|
+
return (_jsxs("div", { "data-testid": "feedback-unplaced-footer", "data-expanded": expanded ? "true" : "false", className: cn("border-border-default z-20 border-t bg-white", className), children: [_jsxs("button", { ref: ref, type: "button", className: "text-neutral-grey-100 hover:bg-neutral-grey-5 flex w-full items-center gap-2 px-3 py-2 text-left text-xs font-medium", "aria-expanded": expanded, onClick: onToggle, children: [_jsx("span", { className: "min-w-0 flex-1 truncate", children: getUnplacedLabel(ids.length, layout) }), expanded ? (_jsx(ChevronDown, { className: "h-4 w-4 shrink-0", strokeWidth: 1 })) : (_jsx(ChevronUp, { className: "h-4 w-4 shrink-0", strokeWidth: 1 }))] }), expanded && (_jsx("div", { ref: listRef, className: "border-border-default space-y-3 overflow-auto border-t p-3", style: listStyle, [FEEDBACK_SCROLLABLE_ATTRIBUTE]: "", children: ids.map((id) => (_jsx("div", { "data-feedback-margin-card": id, children: renderCard(id, {
|
|
359
|
+
selected: id === pinnedId,
|
|
360
|
+
dimmed: !!pinnedId && id !== pinnedId,
|
|
361
|
+
// Not beside what they are about, so they name it.
|
|
362
|
+
context: true,
|
|
363
|
+
}) }, id))) }))] }));
|
|
364
|
+
});
|
|
365
|
+
/**
|
|
366
|
+
* What the footer holds depends on the surface. Beside the canvas it is
|
|
367
|
+
* feedback on things the page does not render. In a form it is feedback on
|
|
368
|
+
* fields the form does not show (hidden sections, fields of another item);
|
|
369
|
+
* feedback on the item as a whole sits at the top of the form instead.
|
|
370
|
+
*/
|
|
371
|
+
export function getUnplacedLabel(count, layout) {
|
|
372
|
+
const noun = count === 1 ? "comment" : "comments";
|
|
373
|
+
return layout === "flow"
|
|
374
|
+
? `${count} ${noun} on fields not shown here`
|
|
375
|
+
: `${count} ${noun} on content not shown`;
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=FeedbackMargin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackMargin.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/FeedbackMargin.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { type ReactNode, type RefObject } from "react";
|
|
2
|
+
import type { FeedbackAnchor } from "../page-editor-chrome/overlay/feedbackAnchorMeasurements";
|
|
3
|
+
import type { FeedbackThread } from "../reviews/feedbackThreads";
|
|
4
|
+
import { type FeedbackMarginPresentation, type MarginMode } from "./feedbackMarginLayout";
|
|
5
|
+
import { FEEDBACK_MARGIN_MIN_WIDTH, FEEDBACK_MARGIN_RAIL_WIDTH } from "./feedbackMarginWidth";
|
|
6
|
+
/**
|
|
7
|
+
* Width of the full column before the user resizes it, and of the column
|
|
8
|
+
* floating over the canvas from the rail (feedbackMarginWidth).
|
|
9
|
+
*/
|
|
10
|
+
export declare const FEEDBACK_MARGIN_WIDTH = 320;
|
|
11
|
+
export { FEEDBACK_MARGIN_MIN_WIDTH, FEEDBACK_MARGIN_RAIL_WIDTH };
|
|
12
|
+
export declare const FEEDBACK_MARGIN_CARD_GAP = 8;
|
|
13
|
+
/** Room left of the cards for the leader line's elbow. */
|
|
14
|
+
export declare const FEEDBACK_MARGIN_CARD_INSET_LEFT = 14;
|
|
15
|
+
export declare const FEEDBACK_MARGIN_CARD_INSET_RIGHT = 10;
|
|
16
|
+
/** How far the rail's layer reaches over the canvas (card plus its shadow). */
|
|
17
|
+
export declare const FEEDBACK_MARGIN_RAIL_BLEED: number;
|
|
18
|
+
export declare function getFeedbackMarginCardWidth(columnWidth: number): number;
|
|
19
|
+
export type MarginLayoutReport = {
|
|
20
|
+
mode: MarginMode;
|
|
21
|
+
/** Anchored threads, top to bottom. */
|
|
22
|
+
orderedIds: string[];
|
|
23
|
+
unplacedIds: string[];
|
|
24
|
+
};
|
|
25
|
+
export type FeedbackMarginCardRenderer = (id: string, options: {
|
|
26
|
+
selected: boolean;
|
|
27
|
+
dimmed: boolean;
|
|
28
|
+
floating?: boolean;
|
|
29
|
+
}) => ReactNode;
|
|
30
|
+
export type FeedbackMarginMarkerRenderer = (id: string, options: {
|
|
31
|
+
selected: boolean;
|
|
32
|
+
hovered: boolean;
|
|
33
|
+
}) => ReactNode;
|
|
34
|
+
/** Where the surface beside the column currently is, in layer coordinates. */
|
|
35
|
+
export type MarginLayerMetrics = {
|
|
36
|
+
layerHeight: number;
|
|
37
|
+
scrollTop: number;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* What the column is a margin of: the canvas (anchors measured by the canvas
|
|
41
|
+
* overlay) or the item form (anchors are the form fields). A source reports
|
|
42
|
+
* where each thread's target sits and how tall the surface is.
|
|
43
|
+
*/
|
|
44
|
+
export type FeedbackMarginSource = {
|
|
45
|
+
measure: (thread: FeedbackThread) => FeedbackAnchor | undefined;
|
|
46
|
+
layerMetrics: MarginLayerMetrics;
|
|
47
|
+
};
|
|
48
|
+
export type FeedbackMarginControllerProps = FeedbackMarginSource & {
|
|
49
|
+
threads: FeedbackThread[];
|
|
50
|
+
heights: Record<string, number>;
|
|
51
|
+
/** Width of the column the cards (or markers) sit in. */
|
|
52
|
+
width: number;
|
|
53
|
+
presentation: FeedbackMarginPresentation;
|
|
54
|
+
/** Top of the usable column (below the header), in layer coordinates. */
|
|
55
|
+
minY: number;
|
|
56
|
+
/** Height the fixed footer takes away at the bottom. */
|
|
57
|
+
footerHeight: number;
|
|
58
|
+
pinnedId: string | undefined;
|
|
59
|
+
/** Bumped when focus leaves the column; deferred mode switches resume. */
|
|
60
|
+
focusEpoch: number;
|
|
61
|
+
columnRef: RefObject<HTMLDivElement | null>;
|
|
62
|
+
onLayoutChange: (report: MarginLayoutReport) => void;
|
|
63
|
+
renderCard: FeedbackMarginCardRenderer;
|
|
64
|
+
renderMarker: FeedbackMarginMarkerRenderer;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Measures where every thread's text sits on the canvas, lays the cards out
|
|
68
|
+
* as balloons beside it and decides whether that layout fits. Stays mounted
|
|
69
|
+
* in both modes (in stacked mode it renders no cards) so the column can
|
|
70
|
+
* return to anchored mode when the page or the cards change.
|
|
71
|
+
*
|
|
72
|
+
* In the rail presentation the balloons are small markers, which never
|
|
73
|
+
* switch to the stacked list; the selected thread and any unsent draft float
|
|
74
|
+
* as full cards over the canvas, left of the rail and level with their marker.
|
|
75
|
+
*/
|
|
76
|
+
export declare function FeedbackMarginController({ measure, layerMetrics, threads, heights, width, presentation, minY, footerHeight, pinnedId, focusEpoch, columnRef, onLayoutChange, renderCard, renderMarker, }: FeedbackMarginControllerProps): import("react").JSX.Element | null;
|