@parhelia/core 0.3.12831 → 0.3.12833
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/emoji/EmojiPicker.d.ts +18 -0
- package/dist/components/emoji/EmojiPicker.js +102 -0
- package/dist/components/emoji/EmojiPicker.js.map +1 -0
- package/dist/components/emoji/EmojiText.d.ts +19 -0
- package/dist/components/emoji/EmojiText.js +30 -0
- package/dist/components/emoji/EmojiText.js.map +1 -0
- package/dist/components/emoji/emojiData.generated.d.ts +2 -0
- package/dist/components/emoji/emojiData.generated.js +1878 -0
- package/dist/components/emoji/emojiData.generated.js.map +1 -0
- package/dist/components/emoji/emojiIndex.d.ts +46 -0
- package/dist/components/emoji/emojiIndex.js +173 -0
- package/dist/components/emoji/emojiIndex.js.map +1 -0
- package/dist/components/emoji/emoticons.d.ts +21 -0
- package/dist/components/emoji/emoticons.js +167 -0
- package/dist/components/emoji/emoticons.js.map +1 -0
- package/dist/components/emoji/textareaInsert.d.ts +19 -0
- package/dist/components/emoji/textareaInsert.js +29 -0
- package/dist/components/emoji/textareaInsert.js.map +1 -0
- package/dist/components/emoji/twemoji.d.ts +30 -0
- package/dist/components/emoji/twemoji.js +84 -0
- package/dist/components/emoji/twemoji.js.map +1 -0
- package/dist/editor/agent-changes/agentChangeTargets.d.ts +58 -0
- package/dist/editor/agent-changes/agentChangeTargets.js +180 -0
- package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +101 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.js +167 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
- package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
- package/dist/editor/ai/AgentImagePreview.js +41 -0
- package/dist/editor/ai/AgentImagePreview.js.map +1 -0
- package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
- package/dist/editor/ai/activityRowNavigation.js +53 -0
- package/dist/editor/ai/activityRowNavigation.js.map +1 -0
- package/dist/editor/ai/terminal/activeReasoningModel.d.ts +9 -0
- package/dist/editor/ai/terminal/activeReasoningModel.js +20 -0
- package/dist/editor/ai/terminal/activeReasoningModel.js.map +1 -0
- package/dist/editor/ai/terminal/agentDurations.d.ts +27 -0
- package/dist/editor/ai/terminal/agentDurations.js +89 -0
- package/dist/editor/ai/terminal/agentDurations.js.map +1 -0
- package/dist/editor/ai/terminal/agentTurnTiming.d.ts +35 -0
- package/dist/editor/ai/terminal/agentTurnTiming.js +128 -0
- package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
- package/dist/editor/ai/terminal/components/AgentProfileRecovery.d.ts +10 -0
- package/dist/editor/ai/terminal/components/AgentProfileRecovery.js +12 -0
- package/dist/editor/ai/terminal/components/AgentProfileRecovery.js.map +1 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.d.ts +15 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +62 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -0
- package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.d.ts +6 -0
- package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js +61 -0
- package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js.map +1 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
- package/dist/editor/ai/terminal/reasoningEffortLevels.d.ts +8 -0
- package/dist/editor/ai/terminal/reasoningEffortLevels.js +54 -0
- package/dist/editor/ai/terminal/reasoningEffortLevels.js.map +1 -0
- package/dist/editor/ai/terminal/requestUsage.d.ts +3 -0
- package/dist/editor/ai/terminal/requestUsage.js +22 -0
- package/dist/editor/ai/terminal/requestUsage.js.map +1 -0
- package/dist/editor/ai/terminal/toolCallDiagnostics.d.ts +34 -0
- package/dist/editor/ai/terminal/toolCallDiagnostics.js +218 -0
- package/dist/editor/ai/terminal/toolCallDiagnostics.js.map +1 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
- package/dist/editor/ai/terminal/useAgentReasoningEffortState.d.ts +5 -0
- package/dist/editor/ai/terminal/useAgentReasoningEffortState.js +10 -0
- package/dist/editor/ai/terminal/useAgentReasoningEffortState.js.map +1 -0
- package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
- package/dist/editor/bridge/bridgeKeys.js +8 -0
- package/dist/editor/bridge/bridgeKeys.js.map +1 -0
- package/dist/editor/bridge/linkDownload.d.ts +3 -0
- package/dist/editor/bridge/linkDownload.js +52 -0
- package/dist/editor/bridge/linkDownload.js.map +1 -0
- package/dist/editor/client/SessionsDialog.d.ts +2 -0
- package/dist/editor/client/SessionsDialog.js +27 -0
- package/dist/editor/client/SessionsDialog.js.map +1 -0
- package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
- package/dist/editor/client/agentLoadItemPolicy.js +60 -0
- package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
- package/dist/editor/client/clipboardStorage.d.ts +10 -0
- package/dist/editor/client/clipboardStorage.js +57 -0
- package/dist/editor/client/clipboardStorage.js.map +1 -0
- package/dist/editor/client/hooks/useRepositoryItemRefresh.d.ts +4 -0
- package/dist/editor/client/hooks/useRepositoryItemRefresh.js +62 -0
- package/dist/editor/client/hooks/useRepositoryItemRefresh.js.map +1 -0
- package/dist/editor/client/liveEditState.d.ts +16 -0
- package/dist/editor/client/liveEditState.js +25 -0
- package/dist/editor/client/liveEditState.js.map +1 -0
- package/dist/editor/client/liveSessionState.d.ts +6 -0
- package/dist/editor/client/liveSessionState.js +20 -0
- package/dist/editor/client/liveSessionState.js.map +1 -0
- package/dist/editor/client/localUserEditActivity.d.ts +3 -0
- package/dist/editor/client/localUserEditActivity.js +12 -0
- package/dist/editor/client/localUserEditActivity.js.map +1 -0
- package/dist/editor/client/valueStore.d.ts +22 -0
- package/dist/editor/client/valueStore.js +29 -0
- package/dist/editor/client/valueStore.js.map +1 -0
- package/dist/editor/commands/componentClipboardCommands.d.ts +35 -0
- package/dist/editor/commands/componentClipboardCommands.js +271 -0
- package/dist/editor/commands/componentClipboardCommands.js.map +1 -0
- package/dist/editor/commands/componentMenuGroups.d.ts +2 -0
- package/dist/editor/commands/componentMenuGroups.js +43 -0
- package/dist/editor/commands/componentMenuGroups.js.map +1 -0
- package/dist/editor/commands/mediaCommands.d.ts +5 -0
- package/dist/editor/commands/mediaCommands.js +59 -0
- package/dist/editor/commands/mediaCommands.js.map +1 -0
- package/dist/editor/component-conversion/ComponentTypePickerDialog.d.ts +12 -0
- package/dist/editor/component-conversion/ComponentTypePickerDialog.js +40 -0
- package/dist/editor/component-conversion/ComponentTypePickerDialog.js.map +1 -0
- package/dist/editor/component-conversion/ConversionAiDebugButton.d.ts +17 -0
- package/dist/editor/component-conversion/ConversionAiDebugButton.js +80 -0
- package/dist/editor/component-conversion/ConversionAiDebugButton.js.map +1 -0
- package/dist/editor/component-conversion/ConvertComponentDialog.d.ts +28 -0
- package/dist/editor/component-conversion/ConvertComponentDialog.js +633 -0
- package/dist/editor/component-conversion/ConvertComponentDialog.js.map +1 -0
- package/dist/editor/component-conversion/conversionModel.d.ts +109 -0
- package/dist/editor/component-conversion/conversionModel.js +519 -0
- package/dist/editor/component-conversion/conversionModel.js.map +1 -0
- package/dist/editor/component-conversion/conversionService.d.ts +12 -0
- package/dist/editor/component-conversion/conversionService.js +16 -0
- package/dist/editor/component-conversion/conversionService.js.map +1 -0
- package/dist/editor/component-conversion/conversionTypes.d.ts +214 -0
- package/dist/editor/component-conversion/conversionTypes.js +2 -0
- package/dist/editor/component-conversion/conversionTypes.js.map +1 -0
- package/dist/editor/component-conversion/convertComponentsCommand.d.ts +25 -0
- package/dist/editor/component-conversion/convertComponentsCommand.js +196 -0
- package/dist/editor/component-conversion/convertComponentsCommand.js.map +1 -0
- package/dist/editor/componentVisualMode.d.ts +14 -0
- package/dist/editor/componentVisualMode.js +43 -0
- package/dist/editor/componentVisualMode.js.map +1 -0
- package/dist/editor/field-types/FieldHistoryBoundary.d.ts +7 -0
- package/dist/editor/field-types/FieldHistoryBoundary.js +40 -0
- package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -0
- package/dist/editor/field-types/fieldStyles.d.ts +21 -0
- package/dist/editor/field-types/fieldStyles.js +22 -0
- package/dist/editor/field-types/fieldStyles.js.map +1 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +32 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.js +68 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
- package/dist/editor/field-types/richtext/utils/spellCheckText.d.ts +31 -0
- package/dist/editor/field-types/richtext/utils/spellCheckText.js +82 -0
- package/dist/editor/field-types/richtext/utils/spellCheckText.js.map +1 -0
- package/dist/editor/field-types/useFocusedFieldInput.d.ts +13 -0
- package/dist/editor/field-types/useFocusedFieldInput.js +50 -0
- package/dist/editor/field-types/useFocusedFieldInput.js.map +1 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +43 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.js +149 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
- package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
- package/dist/editor/find-replace/FindReplacePanel.js +311 -0
- package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
- package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
- package/dist/editor/find-replace/findReplaceCommand.js +25 -0
- package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
- package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
- package/dist/editor/find-replace/findReplaceMatches.js +66 -0
- package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
- package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
- package/dist/editor/find-replace/findReplaceStore.js +61 -0
- package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
- package/dist/editor/find-replace/findReplaceTargets.d.ts +51 -0
- package/dist/editor/find-replace/findReplaceTargets.js +110 -0
- package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
- package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
- package/dist/editor/find-replace/findReplaceText.js +189 -0
- package/dist/editor/find-replace/findReplaceText.js.map +1 -0
- package/dist/editor/itemContextMenuGroups.d.ts +16 -0
- package/dist/editor/itemContextMenuGroups.js +57 -0
- package/dist/editor/itemContextMenuGroups.js.map +1 -0
- package/dist/editor/media-selector/MediaDetailsView.d.ts +14 -0
- package/dist/editor/media-selector/MediaDetailsView.js +152 -0
- package/dist/editor/media-selector/MediaDetailsView.js.map +1 -0
- package/dist/editor/media-selector/UploadMediaFileDialog.d.ts +5 -0
- package/dist/editor/media-selector/UploadMediaFileDialog.js +14 -0
- package/dist/editor/media-selector/UploadMediaFileDialog.js.map +1 -0
- package/dist/editor/media-selector/useMediaFolderDrag.d.ts +26 -0
- package/dist/editor/media-selector/useMediaFolderDrag.js +153 -0
- package/dist/editor/media-selector/useMediaFolderDrag.js.map +1 -0
- package/dist/editor/menubar/OpenPublishedPageButton.d.ts +1 -0
- package/dist/editor/menubar/OpenPublishedPageButton.js +22 -0
- package/dist/editor/menubar/OpenPublishedPageButton.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.d.ts +11 -0
- package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js +65 -0
- package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.d.ts +5 -0
- package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js +16 -0
- package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js.map +1 -0
- package/dist/editor/mobileBottomPanel.d.ts +40 -0
- package/dist/editor/mobileBottomPanel.js +63 -0
- package/dist/editor/mobileBottomPanel.js.map +1 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +17 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +33 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.d.ts +6 -0
- package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js +100 -0
- package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js.map +1 -0
- package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.d.ts +9 -0
- package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js +32 -0
- package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js.map +1 -0
- package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.d.ts +14 -0
- package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js +110 -0
- package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js.map +1 -0
- package/dist/editor/page-editor-chrome/ConversionIndicators.d.ts +8 -0
- package/dist/editor/page-editor-chrome/ConversionIndicators.js +75 -0
- package/dist/editor/page-editor-chrome/ConversionIndicators.js.map +1 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +29 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +295 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
- package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.d.ts +15 -0
- package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js +31 -0
- package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js.map +1 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +120 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/SpellCheckHighlightings.d.ts +12 -0
- package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js +197 -0
- package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/ValidationRulerMarks.d.ts +11 -0
- package/dist/editor/page-editor-chrome/ValidationRulerMarks.js +56 -0
- package/dist/editor/page-editor-chrome/ValidationRulerMarks.js.map +1 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.d.ts +44 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js +89 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.d.ts +17 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js +53 -0
- package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.d.ts +11 -0
- package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js +84 -0
- package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.d.ts +34 -0
- package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js +229 -0
- package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.d.ts +9 -0
- package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js +34 -0
- package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.d.ts +49 -0
- package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js +241 -0
- package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js.map +1 -0
- package/dist/editor/page-viewer/CanvasOverviewRuler.d.ts +11 -0
- package/dist/editor/page-viewer/CanvasOverviewRuler.js +65 -0
- package/dist/editor/page-viewer/CanvasOverviewRuler.js.map +1 -0
- package/dist/editor/page-viewer/DynamicRenderingsBar.d.ts +23 -0
- package/dist/editor/page-viewer/DynamicRenderingsBar.js +28 -0
- package/dist/editor/page-viewer/DynamicRenderingsBar.js.map +1 -0
- package/dist/editor/page-viewer/DynamicRenderingsStrip.d.ts +18 -0
- package/dist/editor/page-viewer/DynamicRenderingsStrip.js +29 -0
- package/dist/editor/page-viewer/DynamicRenderingsStrip.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMargin.d.ts +57 -0
- package/dist/editor/page-viewer/FeedbackMargin.js +377 -0
- package/dist/editor/page-viewer/FeedbackMargin.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMarginController.d.ts +76 -0
- package/dist/editor/page-viewer/FeedbackMarginController.js +241 -0
- package/dist/editor/page-viewer/FeedbackMarginController.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMarginMarker.d.ts +16 -0
- package/dist/editor/page-viewer/FeedbackMarginMarker.js +24 -0
- package/dist/editor/page-viewer/FeedbackMarginMarker.js.map +1 -0
- package/dist/editor/page-viewer/FeedbackMarginResizeHandle.d.ts +23 -0
- package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js +105 -0
- package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js.map +1 -0
- package/dist/editor/page-viewer/InteractivePreviewBar.d.ts +24 -0
- package/dist/editor/page-viewer/InteractivePreviewBar.js +31 -0
- package/dist/editor/page-viewer/InteractivePreviewBar.js.map +1 -0
- package/dist/editor/page-viewer/MobileCommentsPanel.d.ts +16 -0
- package/dist/editor/page-viewer/MobileCommentsPanel.js +112 -0
- package/dist/editor/page-viewer/MobileCommentsPanel.js.map +1 -0
- package/dist/editor/page-viewer/PreviewModeNotice.d.ts +7 -0
- package/dist/editor/page-viewer/PreviewModeNotice.js +19 -0
- package/dist/editor/page-viewer/PreviewModeNotice.js.map +1 -0
- package/dist/editor/page-viewer/RenderingAiCheck.d.ts +18 -0
- package/dist/editor/page-viewer/RenderingAiCheck.js +45 -0
- package/dist/editor/page-viewer/RenderingAiCheck.js.map +1 -0
- package/dist/editor/page-viewer/RenderingApprovalDialog.d.ts +32 -0
- package/dist/editor/page-viewer/RenderingApprovalDialog.js +191 -0
- package/dist/editor/page-viewer/RenderingApprovalDialog.js.map +1 -0
- package/dist/editor/page-viewer/SealedClientCodePreview.d.ts +17 -0
- package/dist/editor/page-viewer/SealedClientCodePreview.js +38 -0
- package/dist/editor/page-viewer/SealedClientCodePreview.js.map +1 -0
- package/dist/editor/page-viewer/canvasFrameNavigation.d.ts +18 -0
- package/dist/editor/page-viewer/canvasFrameNavigation.js +36 -0
- package/dist/editor/page-viewer/canvasFrameNavigation.js.map +1 -0
- package/dist/editor/page-viewer/canvasLoadSettling.d.ts +42 -0
- package/dist/editor/page-viewer/canvasLoadSettling.js +46 -0
- package/dist/editor/page-viewer/canvasLoadSettling.js.map +1 -0
- package/dist/editor/page-viewer/canvasScrollHandoff.d.ts +34 -0
- package/dist/editor/page-viewer/canvasScrollHandoff.js +55 -0
- package/dist/editor/page-viewer/canvasScrollHandoff.js.map +1 -0
- package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
- package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
- package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
- package/dist/editor/page-viewer/feedbackMarginLayout.d.ts +119 -0
- package/dist/editor/page-viewer/feedbackMarginLayout.js +155 -0
- package/dist/editor/page-viewer/feedbackMarginLayout.js.map +1 -0
- package/dist/editor/page-viewer/feedbackMarginSources.d.ts +36 -0
- package/dist/editor/page-viewer/feedbackMarginSources.js +196 -0
- package/dist/editor/page-viewer/feedbackMarginSources.js.map +1 -0
- package/dist/editor/page-viewer/feedbackMarginWidth.d.ts +43 -0
- package/dist/editor/page-viewer/feedbackMarginWidth.js +107 -0
- package/dist/editor/page-viewer/feedbackMarginWidth.js.map +1 -0
- package/dist/editor/page-viewer/interactivePreview.d.ts +168 -0
- package/dist/editor/page-viewer/interactivePreview.js +344 -0
- package/dist/editor/page-viewer/interactivePreview.js.map +1 -0
- package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
- package/dist/editor/page-viewer/minimapViewport.js +34 -0
- package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
- package/dist/editor/page-viewer/openPageItems.d.ts +29 -0
- package/dist/editor/page-viewer/openPageItems.js +73 -0
- package/dist/editor/page-viewer/openPageItems.js.map +1 -0
- package/dist/editor/page-viewer/overviewRuler.d.ts +128 -0
- package/dist/editor/page-viewer/overviewRuler.js +226 -0
- package/dist/editor/page-viewer/overviewRuler.js.map +1 -0
- package/dist/editor/page-viewer/previewEditAttempt.d.ts +31 -0
- package/dist/editor/page-viewer/previewEditAttempt.js +68 -0
- package/dist/editor/page-viewer/previewEditAttempt.js.map +1 -0
- package/dist/editor/page-viewer/renderingApproval.d.ts +59 -0
- package/dist/editor/page-viewer/renderingApproval.js +186 -0
- package/dist/editor/page-viewer/renderingApproval.js.map +1 -0
- package/dist/editor/page-viewer/renderingChanges.d.ts +29 -0
- package/dist/editor/page-viewer/renderingChanges.js +40 -0
- package/dist/editor/page-viewer/renderingChanges.js.map +1 -0
- package/dist/editor/page-viewer/scrollIntoViewTextRanges.d.ts +23 -0
- package/dist/editor/page-viewer/scrollIntoViewTextRanges.js +26 -0
- package/dist/editor/page-viewer/scrollIntoViewTextRanges.js.map +1 -0
- package/dist/editor/page-viewer/useInteractivePreview.d.ts +77 -0
- package/dist/editor/page-viewer/useInteractivePreview.js +210 -0
- package/dist/editor/page-viewer/useInteractivePreview.js.map +1 -0
- package/dist/editor/reviews/CollapsibleText.d.ts +13 -0
- package/dist/editor/reviews/CollapsibleText.js +41 -0
- package/dist/editor/reviews/CollapsibleText.js.map +1 -0
- package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
- package/dist/editor/reviews/CommentImageAttachments.js +19 -0
- package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
- package/dist/editor/reviews/CommentQuote.d.ts +13 -0
- package/dist/editor/reviews/CommentQuote.js +35 -0
- package/dist/editor/reviews/CommentQuote.js.map +1 -0
- package/dist/editor/reviews/CommentTargetOutline.d.ts +13 -0
- package/dist/editor/reviews/CommentTargetOutline.js +21 -0
- package/dist/editor/reviews/CommentTargetOutline.js.map +1 -0
- package/dist/editor/reviews/CommentTargetPickerDomLayer.d.ts +7 -0
- package/dist/editor/reviews/CommentTargetPickerDomLayer.js +117 -0
- package/dist/editor/reviews/CommentTargetPickerDomLayer.js.map +1 -0
- package/dist/editor/reviews/CommentThreadAgentLink.d.ts +28 -0
- package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
- package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
- package/dist/editor/reviews/CommentThreadCard.d.ts +34 -0
- package/dist/editor/reviews/CommentThreadCard.js +156 -0
- package/dist/editor/reviews/CommentThreadCard.js.map +1 -0
- package/dist/editor/reviews/SuggestionThreadCard.d.ts +19 -0
- package/dist/editor/reviews/SuggestionThreadCard.js +25 -0
- package/dist/editor/reviews/SuggestionThreadCard.js.map +1 -0
- package/dist/editor/reviews/addCommentOnTarget.d.ts +22 -0
- package/dist/editor/reviews/addCommentOnTarget.js +32 -0
- package/dist/editor/reviews/addCommentOnTarget.js.map +1 -0
- package/dist/editor/reviews/balloonLayout.d.ts +51 -0
- package/dist/editor/reviews/balloonLayout.js +101 -0
- package/dist/editor/reviews/balloonLayout.js.map +1 -0
- package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
- package/dist/editor/reviews/commentAgentAttachments.js +51 -0
- package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
- package/dist/editor/reviews/commentImages.d.ts +48 -0
- package/dist/editor/reviews/commentImages.js +128 -0
- package/dist/editor/reviews/commentImages.js.map +1 -0
- package/dist/editor/reviews/commentTargetPicker.d.ts +114 -0
- package/dist/editor/reviews/commentTargetPicker.js +153 -0
- package/dist/editor/reviews/commentTargetPicker.js.map +1 -0
- package/dist/editor/reviews/feedbackBalloonDate.d.ts +8 -0
- package/dist/editor/reviews/feedbackBalloonDate.js +22 -0
- package/dist/editor/reviews/feedbackBalloonDate.js.map +1 -0
- package/dist/editor/reviews/feedbackDrafts.d.ts +49 -0
- package/dist/editor/reviews/feedbackDrafts.js +74 -0
- package/dist/editor/reviews/feedbackDrafts.js.map +1 -0
- package/dist/editor/reviews/feedbackHoverState.d.ts +18 -0
- package/dist/editor/reviews/feedbackHoverState.js +35 -0
- package/dist/editor/reviews/feedbackHoverState.js.map +1 -0
- package/dist/editor/reviews/feedbackPersonFilter.d.ts +3 -0
- package/dist/editor/reviews/feedbackPersonFilter.js +32 -0
- package/dist/editor/reviews/feedbackPersonFilter.js.map +1 -0
- package/dist/editor/reviews/feedbackThreadSelection.d.ts +10 -0
- package/dist/editor/reviews/feedbackThreadSelection.js +31 -0
- package/dist/editor/reviews/feedbackThreadSelection.js.map +1 -0
- package/dist/editor/reviews/feedbackThreads.d.ts +50 -0
- package/dist/editor/reviews/feedbackThreads.js +135 -0
- package/dist/editor/reviews/feedbackThreads.js.map +1 -0
- package/dist/editor/reviews/feedbackWheelForwarding.d.ts +34 -0
- package/dist/editor/reviews/feedbackWheelForwarding.js +108 -0
- package/dist/editor/reviews/feedbackWheelForwarding.js.map +1 -0
- package/dist/editor/reviews/reviewUrlScope.d.ts +23 -0
- package/dist/editor/reviews/reviewUrlScope.js +86 -0
- package/dist/editor/reviews/reviewUrlScope.js.map +1 -0
- package/dist/editor/reviews/scrollWithin.d.ts +29 -0
- package/dist/editor/reviews/scrollWithin.js +87 -0
- package/dist/editor/reviews/scrollWithin.js.map +1 -0
- package/dist/editor/reviews/subtreeFeedback.d.ts +57 -0
- package/dist/editor/reviews/subtreeFeedback.js +137 -0
- package/dist/editor/reviews/subtreeFeedback.js.map +1 -0
- package/dist/editor/reviews/useCommentImagePaste.d.ts +80 -0
- package/dist/editor/reviews/useCommentImagePaste.js +252 -0
- package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
- package/dist/editor/reviews/useFeedbackThreads.d.ts +35 -0
- package/dist/editor/reviews/useFeedbackThreads.js +137 -0
- package/dist/editor/reviews/useFeedbackThreads.js.map +1 -0
- package/dist/editor/reviews/useMeasuredHeights.d.ts +25 -0
- package/dist/editor/reviews/useMeasuredHeights.js +176 -0
- package/dist/editor/reviews/useMeasuredHeights.js.map +1 -0
- package/dist/editor/reviews/usePendingFeedbackFocus.d.ts +7 -0
- package/dist/editor/reviews/usePendingFeedbackFocus.js +42 -0
- package/dist/editor/reviews/usePendingFeedbackFocus.js.map +1 -0
- package/dist/editor/services/mcpAccessService.d.ts +93 -0
- package/dist/editor/services/mcpAccessService.js +41 -0
- package/dist/editor/services/mcpAccessService.js.map +1 -0
- package/dist/editor/services/migrationService.d.ts +31 -0
- package/dist/editor/services/migrationService.js +22 -0
- package/dist/editor/services/migrationService.js.map +1 -0
- package/dist/editor/services/previewTokenService.d.ts +14 -0
- package/dist/editor/services/previewTokenService.js +34 -0
- package/dist/editor/services/previewTokenService.js.map +1 -0
- package/dist/editor/services/publicSiteService.d.ts +40 -0
- package/dist/editor/services/publicSiteService.js +5 -0
- package/dist/editor/services/publicSiteService.js.map +1 -0
- package/dist/editor/services/renderingsService.d.ts +117 -0
- package/dist/editor/services/renderingsService.js +245 -0
- package/dist/editor/services/renderingsService.js.map +1 -0
- package/dist/editor/services/spellCheckService.d.ts +13 -0
- package/dist/editor/services/spellCheckService.js +33 -0
- package/dist/editor/services/spellCheckService.js.map +1 -0
- package/dist/editor/settings/MigrationJournalCard.d.ts +12 -0
- package/dist/editor/settings/MigrationJournalCard.js +114 -0
- package/dist/editor/settings/MigrationJournalCard.js.map +1 -0
- package/dist/editor/settings/panels/McpAccessPanel.d.ts +7 -0
- package/dist/editor/settings/panels/McpAccessPanel.js +95 -0
- package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -0
- package/dist/editor/settings/panels/McpAccessSettingsView.d.ts +8 -0
- package/dist/editor/settings/panels/McpAccessSettingsView.js +221 -0
- package/dist/editor/settings/panels/McpAccessSettingsView.js.map +1 -0
- package/dist/editor/settings/panels/PublicSiteEntryDialog.d.ts +8 -0
- package/dist/editor/settings/panels/PublicSiteEntryDialog.js +113 -0
- package/dist/editor/settings/panels/PublicSiteEntryDialog.js.map +1 -0
- package/dist/editor/settings/panels/PublicSitesPanel.d.ts +1 -0
- package/dist/editor/settings/panels/PublicSitesPanel.js +153 -0
- package/dist/editor/settings/panels/PublicSitesPanel.js.map +1 -0
- package/dist/editor/settings/panels/SpellCheckPanel.d.ts +8 -0
- package/dist/editor/settings/panels/SpellCheckPanel.js +253 -0
- package/dist/editor/settings/panels/SpellCheckPanel.js.map +1 -0
- package/dist/editor/settings/panels/publicSiteHelpers.d.ts +6 -0
- package/dist/editor/settings/panels/publicSiteHelpers.js +30 -0
- package/dist/editor/settings/panels/publicSiteHelpers.js.map +1 -0
- package/dist/editor/sidebar/FeedbackSidebar.d.ts +7 -0
- package/dist/editor/sidebar/FeedbackSidebar.js +300 -0
- package/dist/editor/sidebar/FeedbackSidebar.js.map +1 -0
- package/dist/editor/sidebar/OperationDetailsContent.d.ts +14 -0
- package/dist/editor/sidebar/OperationDetailsContent.js +571 -0
- package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -0
- package/dist/editor/sidebar/liveComponentThumbnails.d.ts +66 -0
- package/dist/editor/sidebar/liveComponentThumbnails.js +225 -0
- package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
- package/dist/editor/spellcheck/canvasSpellCheckContextMenu.d.ts +30 -0
- package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js +69 -0
- package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js.map +1 -0
- package/dist/editor/spellcheck/htmlSpellDocument.d.ts +60 -0
- package/dist/editor/spellcheck/htmlSpellDocument.js +181 -0
- package/dist/editor/spellcheck/htmlSpellDocument.js.map +1 -0
- package/dist/editor/spellcheck/htmlSpellTokenizer.d.ts +45 -0
- package/dist/editor/spellcheck/htmlSpellTokenizer.js +277 -0
- package/dist/editor/spellcheck/htmlSpellTokenizer.js.map +1 -0
- package/dist/editor/spellcheck/replacementGuard.d.ts +27 -0
- package/dist/editor/spellcheck/replacementGuard.js +29 -0
- package/dist/editor/spellcheck/replacementGuard.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckCanvasStore.d.ts +17 -0
- package/dist/editor/spellcheck/spellCheckCanvasStore.js +37 -0
- package/dist/editor/spellcheck/spellCheckCanvasStore.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckCanvasTargets.d.ts +71 -0
- package/dist/editor/spellcheck/spellCheckCanvasTargets.js +126 -0
- package/dist/editor/spellcheck/spellCheckCanvasTargets.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckClient.d.ts +66 -0
- package/dist/editor/spellcheck/spellCheckClient.js +0 -0
- package/dist/editor/spellcheck/spellCheckClient.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckContextMenu.d.ts +52 -0
- package/dist/editor/spellcheck/spellCheckContextMenu.js +120 -0
- package/dist/editor/spellcheck/spellCheckContextMenu.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckReplace.d.ts +8 -0
- package/dist/editor/spellcheck/spellCheckReplace.js +20 -0
- package/dist/editor/spellcheck/spellCheckReplace.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckStyles.d.ts +11 -0
- package/dist/editor/spellcheck/spellCheckStyles.js +12 -0
- package/dist/editor/spellcheck/spellCheckStyles.js.map +1 -0
- package/dist/editor/spellcheck/spellCheckTypes.d.ts +94 -0
- package/dist/editor/spellcheck/spellCheckTypes.js +2 -0
- package/dist/editor/spellcheck/spellCheckTypes.js.map +1 -0
- package/dist/editor/spellcheck/textMarkHitTest.d.ts +14 -0
- package/dist/editor/spellcheck/textMarkHitTest.js +39 -0
- package/dist/editor/spellcheck/textMarkHitTest.js.map +1 -0
- package/dist/editor/spellcheck/useSpellCheck.d.ts +16 -0
- package/dist/editor/spellcheck/useSpellCheck.js +57 -0
- package/dist/editor/spellcheck/useSpellCheck.js.map +1 -0
- package/dist/editor/ui/DynamicRenderingsPublishWarning.d.ts +14 -0
- package/dist/editor/ui/DynamicRenderingsPublishWarning.js +40 -0
- package/dist/editor/ui/DynamicRenderingsPublishWarning.js.map +1 -0
- package/dist/editor/ui/ParheliaMark.d.ts +15 -0
- package/dist/editor/ui/ParheliaMark.js +12 -0
- package/dist/editor/ui/ParheliaMark.js.map +1 -0
- package/dist/editor/ui/PublishReadinessSummary.d.ts +12 -0
- package/dist/editor/ui/PublishReadinessSummary.js +34 -0
- package/dist/editor/ui/PublishReadinessSummary.js.map +1 -0
- package/dist/editor/ui/RootItemPicker.d.ts +18 -0
- package/dist/editor/ui/RootItemPicker.js +112 -0
- package/dist/editor/ui/RootItemPicker.js.map +1 -0
- package/dist/editor/ui/publishReadiness.d.ts +98 -0
- package/dist/editor/ui/publishReadiness.js +307 -0
- package/dist/editor/ui/publishReadiness.js.map +1 -0
- package/dist/editor/ui/usePublishingItem.d.ts +8 -0
- package/dist/editor/ui/usePublishingItem.js +47 -0
- package/dist/editor/ui/usePublishingItem.js.map +1 -0
- package/dist/editor/undoEligibility.d.ts +2 -0
- package/dist/editor/undoEligibility.js +8 -0
- package/dist/editor/undoEligibility.js.map +1 -0
- package/dist/editor/utils/dataTransferImages.d.ts +7 -0
- package/dist/editor/utils/dataTransferImages.js +43 -0
- package/dist/editor/utils/dataTransferImages.js.map +1 -0
- package/dist/editor/utils/linkDisplay.d.ts +12 -0
- package/dist/editor/utils/linkDisplay.js +23 -0
- package/dist/editor/utils/linkDisplay.js.map +1 -0
- package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
- package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
- package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
- package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
- package/dist/editor/validation/navigateToValidationIssue.js +43 -0
- package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
- package/dist/editor/validation/validationFixAgent.d.ts +26 -0
- package/dist/editor/validation/validationFixAgent.js +124 -0
- package/dist/editor/validation/validationFixAgent.js.map +1 -0
- package/dist/editor/validation/validationRulerIssues.d.ts +17 -0
- package/dist/editor/validation/validationRulerIssues.js +44 -0
- package/dist/editor/validation/validationRulerIssues.js.map +1 -0
- package/dist/editor/validation/validationSeverity.d.ts +15 -0
- package/dist/editor/validation/validationSeverity.js +47 -0
- package/dist/editor/validation/validationSeverity.js.map +1 -0
- package/dist/lib/viewportClip.d.ts +18 -0
- package/dist/lib/viewportClip.js +22 -0
- package/dist/lib/viewportClip.js.map +1 -0
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
- package/dist/task-board/components/AttentionPromptDialog.js +45 -0
- package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
- package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
- package/dist/task-board/components/GoalFindingsTable.js +160 -0
- package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
- package/dist/task-board/components/IssuePanel.d.ts +31 -0
- package/dist/task-board/components/IssuePanel.js +268 -0
- package/dist/task-board/components/IssuePanel.js.map +1 -0
- package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
- package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
- package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
- package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
- package/dist/task-board/components/SubgoalFindings.js +88 -0
- package/dist/task-board/components/SubgoalFindings.js.map +1 -0
- package/dist/task-board/components/commentAuthor.d.ts +14 -0
- package/dist/task-board/components/commentAuthor.js +25 -0
- package/dist/task-board/components/commentAuthor.js.map +1 -0
- package/dist/task-board/services/issueService.d.ts +193 -0
- package/dist/task-board/services/issueService.js +97 -0
- package/dist/task-board/services/issueService.js.map +1 -0
- package/dist/task-board/taskBlockers.d.ts +10 -0
- package/dist/task-board/taskBlockers.js +66 -0
- package/dist/task-board/taskBlockers.js.map +1 -0
- package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
- package/dist/task-board/utils/projectDashboardModel.js +369 -0
- package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
- package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
- package/dist/task-board/views/ProjectDashboardView.js +308 -0
- package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
- package/dist/tour/TourInputBoundary.d.ts +6 -0
- package/dist/tour/TourInputBoundary.js +82 -0
- package/dist/tour/TourInputBoundary.js.map +1 -0
- package/dist/tour/sandbox-tour-copy.d.ts +8 -0
- package/dist/tour/sandbox-tour-copy.js +8 -0
- package/dist/tour/sandbox-tour-copy.js.map +1 -1
- package/dist/tour/sandbox-tour.d.ts +3 -0
- package/dist/tour/sandbox-tour.js +112 -6
- package/dist/tour/sandbox-tour.js.map +1 -1
- package/dist/tour/tour-utils.d.ts +6 -0
- package/dist/tour/tour-utils.js +10 -0
- package/dist/tour/tour-utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/editor/page-editor-chrome/bridgeLinkValue.d.ts +0 -10
- package/dist/editor/page-editor-chrome/bridgeLinkValue.js +0 -55
- package/dist/editor/page-editor-chrome/bridgeLinkValue.js.map +0 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState, } from "react";
|
|
3
|
+
import { Download, ExternalLink, FileIcon, Loader2, Pencil, Upload, X, } from "lucide-react";
|
|
4
|
+
import { Button } from "../../components/ui/button";
|
|
5
|
+
import { useEditContext } from "../client/editContext";
|
|
6
|
+
import { EditorWarnings } from "../EditorWarnings";
|
|
7
|
+
import { FieldListFieldWithFallbacks } from "../FieldListFieldWithFallbacks";
|
|
8
|
+
import { SimpleIconButton } from "../ui/SimpleIconButton";
|
|
9
|
+
import { formatDate } from "../utils";
|
|
10
|
+
import { parseSitecoreDate } from "../utils/sitecoreDate";
|
|
11
|
+
import { getMediaFileTypeLabel, isSelectableMedia } from "./mediaFileType";
|
|
12
|
+
const detailFields = [
|
|
13
|
+
"title",
|
|
14
|
+
"alt",
|
|
15
|
+
"description",
|
|
16
|
+
"keywords",
|
|
17
|
+
"copyright",
|
|
18
|
+
"artist",
|
|
19
|
+
];
|
|
20
|
+
export function MediaDetailsView({ media, language, busy, onClose, onOpenFullItem, onReplaceMedia, }) {
|
|
21
|
+
const editContext = useEditContext();
|
|
22
|
+
const repository = editContext?.itemsRepository;
|
|
23
|
+
const [item, setItem] = useState();
|
|
24
|
+
const [loading, setLoading] = useState(true);
|
|
25
|
+
const [error, setError] = useState(false);
|
|
26
|
+
const [retry, setRetry] = useState(0);
|
|
27
|
+
const [dragOver, setDragOver] = useState(false);
|
|
28
|
+
const [previewFailed, setPreviewFailed] = useState(false);
|
|
29
|
+
const fileInput = useRef(null);
|
|
30
|
+
const closeButton = useRef(null);
|
|
31
|
+
const itemLanguage = media.language || language;
|
|
32
|
+
const itemVersion = media.version ?? 0;
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
if (window.matchMedia("(max-width: 1023px)").matches)
|
|
35
|
+
closeButton.current?.focus();
|
|
36
|
+
}, []);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
let cancelled = false;
|
|
39
|
+
if (!repository)
|
|
40
|
+
return;
|
|
41
|
+
void repository
|
|
42
|
+
.getItem({ id: media.id, language: itemLanguage, version: itemVersion })
|
|
43
|
+
.then((loaded) => {
|
|
44
|
+
if (cancelled)
|
|
45
|
+
return;
|
|
46
|
+
setItem(loaded);
|
|
47
|
+
setError(!loaded);
|
|
48
|
+
})
|
|
49
|
+
.catch(() => {
|
|
50
|
+
if (!cancelled)
|
|
51
|
+
setError(true);
|
|
52
|
+
})
|
|
53
|
+
.finally(() => {
|
|
54
|
+
if (!cancelled)
|
|
55
|
+
setLoading(false);
|
|
56
|
+
});
|
|
57
|
+
return () => {
|
|
58
|
+
cancelled = true;
|
|
59
|
+
};
|
|
60
|
+
}, [
|
|
61
|
+
repository?.getItem,
|
|
62
|
+
repository?.revision,
|
|
63
|
+
media.id,
|
|
64
|
+
itemLanguage,
|
|
65
|
+
itemVersion,
|
|
66
|
+
retry,
|
|
67
|
+
]);
|
|
68
|
+
const fieldValue = (name) => {
|
|
69
|
+
const value = item?.fields.find((field) => field.name?.toLowerCase() === name.toLowerCase())?.value;
|
|
70
|
+
return typeof value === "string" || typeof value === "number"
|
|
71
|
+
? String(value)
|
|
72
|
+
: undefined;
|
|
73
|
+
};
|
|
74
|
+
const attachmentField = item?.fields.find((field) => field.type.toLowerCase() === "attachment");
|
|
75
|
+
const attachment = attachmentField?.value && typeof attachmentField.value === "object"
|
|
76
|
+
? attachmentField.value
|
|
77
|
+
: undefined;
|
|
78
|
+
const name = item?.name || media.name;
|
|
79
|
+
const extension = attachment?.extension || fieldValue("Extension") || media.extension;
|
|
80
|
+
const mimeType = attachment?.mimeType || fieldValue("Mime Type") || media.mimeType;
|
|
81
|
+
const fileName = attachment?.fileName || fieldValue("File Name") || name;
|
|
82
|
+
const source = attachment?.src || media.downloadUrl;
|
|
83
|
+
const mediaType = { ...media, extension, mimeType };
|
|
84
|
+
const typeLabel = getMediaFileTypeLabel(mediaType) || "File";
|
|
85
|
+
const isImage = isSelectableMedia(mediaType, "image");
|
|
86
|
+
const isVideo = isSelectableMedia(mediaType, "video");
|
|
87
|
+
const isAudio = mimeType?.startsWith("audio/") ||
|
|
88
|
+
["mp3", "wav", "ogg", "m4a", "aac", "flac"].includes(typeLabel);
|
|
89
|
+
const previewUrl = media.previewUrl || source || media.thumbUrl;
|
|
90
|
+
const canReplace = !!item?.canWriteItem &&
|
|
91
|
+
!!attachmentField?.canWrite &&
|
|
92
|
+
editContext?.mode !== "preview";
|
|
93
|
+
const fields = detailFields.flatMap((name) => item?.fields.filter((field) => field.name?.toLowerCase() === name) ?? []);
|
|
94
|
+
const validators = editContext?.validationResult?.find((result) => result.item.id === item?.id &&
|
|
95
|
+
result.item.language === item?.language &&
|
|
96
|
+
result.item.version === item?.version)?.results ?? [];
|
|
97
|
+
const width = fieldValue("Width") || media.width;
|
|
98
|
+
const height = fieldValue("Height") || media.height;
|
|
99
|
+
const size = Number(fieldValue("Size") ?? media.size);
|
|
100
|
+
const updated = parseSitecoreDate(fieldValue("__Updated") || media.updated);
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
setPreviewFailed(false);
|
|
103
|
+
}, [media.id, previewUrl, source]);
|
|
104
|
+
const handleDragOver = (event) => {
|
|
105
|
+
if (!Array.from(event.dataTransfer.types).includes("Files"))
|
|
106
|
+
return;
|
|
107
|
+
event.preventDefault();
|
|
108
|
+
event.stopPropagation();
|
|
109
|
+
event.dataTransfer.dropEffect = canReplace && !busy ? "move" : "none";
|
|
110
|
+
setDragOver(canReplace && !busy);
|
|
111
|
+
};
|
|
112
|
+
return (_jsxs("section", { "aria-label": "Media details", "data-testid": "media-details", className: "flex min-h-full flex-col bg-white", onDragEnter: handleDragOver, onDragOver: handleDragOver, onDragLeave: (event) => {
|
|
113
|
+
event.stopPropagation();
|
|
114
|
+
if (!(event.relatedTarget instanceof Node) ||
|
|
115
|
+
!event.currentTarget.contains(event.relatedTarget))
|
|
116
|
+
setDragOver(false);
|
|
117
|
+
}, onDrop: (event) => {
|
|
118
|
+
if (!Array.from(event.dataTransfer.types).includes("Files"))
|
|
119
|
+
return;
|
|
120
|
+
event.preventDefault();
|
|
121
|
+
event.stopPropagation();
|
|
122
|
+
setDragOver(false);
|
|
123
|
+
const file = event.dataTransfer.files[0];
|
|
124
|
+
if (file && canReplace && !busy)
|
|
125
|
+
onReplaceMedia(file);
|
|
126
|
+
}, children: [_jsxs("div", { className: "sticky top-0 z-10 flex items-center gap-2 border-b bg-white px-4 py-2", children: [_jsx("h3", { className: "min-w-0 flex-1 truncate text-sm font-medium", title: name, children: name }), item?.canRename && editContext?.mode !== "preview" && (_jsx(SimpleIconButton, { label: "Rename media", icon: _jsx(Pencil, { className: "h-4 w-4", strokeWidth: 1 }), disabled: busy, onClick: () => {
|
|
127
|
+
if (editContext)
|
|
128
|
+
void editContext.executeCommand({
|
|
129
|
+
command: editContext.configuration.commands.renameItem,
|
|
130
|
+
data: { items: [item] },
|
|
131
|
+
});
|
|
132
|
+
} })), _jsx(SimpleIconButton, { ref: closeButton, label: "Close media details", icon: _jsx(X, { className: "h-4 w-4", strokeWidth: 1 }), onClick: onClose })] }), _jsxs("div", { className: "bg-neutral-grey-5 relative flex min-h-44 items-center justify-center border-b p-4", children: [!previewFailed && isImage && previewUrl ? (_jsx("img", { src: previewUrl, alt: fieldValue("Alt") || name, className: "max-h-64 max-w-full object-contain", onError: () => setPreviewFailed(true) })) : !previewFailed && isVideo && source ? (_jsx("video", { src: source, controls: true, playsInline: true, preload: "metadata", "aria-label": `Video preview: ${name}`, className: "max-h-64 w-full", onError: () => setPreviewFailed(true) }, source)) : !previewFailed && isAudio && source ? (_jsx("audio", { src: source, controls: true, preload: "metadata", "aria-label": `Audio preview: ${name}`, className: "w-full", onError: () => setPreviewFailed(true) }, source)) : (_jsxs("div", { className: "text-neutral-grey-50 flex flex-col items-center gap-2 p-4 text-xs", children: [_jsx(FileIcon, { className: "h-12 w-12", strokeWidth: 1 }), _jsx("span", { children: previewFailed
|
|
133
|
+
? "Preview unavailable"
|
|
134
|
+
: `${typeLabel.toUpperCase()} file` }), source && (_jsx("a", { href: source, target: "_blank", rel: "noreferrer", className: "underline", children: "Open file" }))] })), dragOver && (_jsx("div", { className: "border-feedback-blue bg-feedback-blue-light/80 absolute inset-2 flex items-center justify-center rounded border-2 border-dashed text-xs", children: "Drop to replace this file" }))] }), _jsxs("div", { className: "flex flex-wrap items-center gap-2 border-b px-4 py-3", children: [_jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: (event) => onOpenFullItem(item?.descriptor ?? {
|
|
135
|
+
id: media.id,
|
|
136
|
+
language: itemLanguage,
|
|
137
|
+
version: itemVersion,
|
|
138
|
+
}, event), children: [_jsx(ExternalLink, { strokeWidth: 1 }), " Open full item"] }), source && (_jsx(Button, { asChild: true, variant: "ghost", size: "sm", children: _jsxs("a", { href: source, download: fileName, target: "_blank", rel: "noreferrer", children: [_jsx(Download, { strokeWidth: 1 }), " Download"] }) })), canReplace && (_jsxs(_Fragment, { children: [_jsx("input", { ref: fileInput, type: "file", className: "hidden", "aria-label": "Replace media file", disabled: busy, onChange: (event) => {
|
|
139
|
+
const file = event.target.files?.[0];
|
|
140
|
+
event.target.value = "";
|
|
141
|
+
if (file)
|
|
142
|
+
onReplaceMedia(file);
|
|
143
|
+
} }), _jsxs(Button, { type: "button", variant: "ghost", size: "sm", disabled: busy, onClick: () => fileInput.current?.click(), children: [_jsx(Upload, { strokeWidth: 1 }), " Replace file"] })] }))] }), loading ? (_jsxs("div", { role: "status", className: "text-neutral-grey-50 flex items-center gap-2 p-4 text-xs", children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), " Loading details\u2026"] })) : error ? (_jsxs("div", { role: "alert", className: "p-4 text-xs", children: ["Could not load media details.", " ", _jsx(Button, { variant: "link", size: "sm", onClick: () => {
|
|
144
|
+
setLoading(true);
|
|
145
|
+
setError(false);
|
|
146
|
+
setRetry((value) => value + 1);
|
|
147
|
+
}, children: "Retry" })] })) : (item && (_jsxs(_Fragment, { children: [_jsx(EditorWarnings, { item: item }), _jsxs("div", { className: "space-y-4 px-2 py-4", children: [fields.map((field) => (_jsx(FieldListFieldWithFallbacks, { fieldDescriptor: field.descriptor, title: field.name?.toLowerCase() === "alt" ? "Alt text" : undefined, validators: validators.filter((validator) => validator.itemId === item.id &&
|
|
148
|
+
validator.fieldId === field.id), simplified: true, readonly: editContext?.mode === "preview" }, field.id))), fields.length === 0 && (_jsx("p", { className: "text-neutral-grey-50 px-2 text-xs", children: "No editable details for this file. Open the full item for all fields." }))] })] }))), _jsxs("details", { className: "border-t px-4 py-3", open: true, children: [_jsx("summary", { className: "cursor-pointer text-xs font-medium", children: "File information" }), _jsxs("dl", { className: "mt-3 grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2 text-xs", children: [_jsx("dt", { className: "text-neutral-grey-50", children: "File name" }), _jsx("dd", { className: "break-words", children: fileName }), _jsx("dt", { className: "text-neutral-grey-50", children: "Type" }), _jsx("dd", { children: typeLabel.toUpperCase() }), width && height && (_jsxs(_Fragment, { children: [_jsx("dt", { className: "text-neutral-grey-50", children: "Dimensions" }), _jsxs("dd", { children: [width, " \u00D7 ", height, " px"] })] })), Number.isFinite(size) && size > 0 && (_jsxs(_Fragment, { children: [_jsx("dt", { className: "text-neutral-grey-50", children: "Size" }), _jsx("dd", { children: size >= 1024 * 1024
|
|
149
|
+
? `${(size / 1024 / 1024).toFixed(1)} MB`
|
|
150
|
+
: `${Math.max(1, Math.round(size / 1024))} KB` })] })), updated && (_jsxs(_Fragment, { children: [_jsx("dt", { className: "text-neutral-grey-50", children: "Modified" }), _jsx("dd", { children: formatDate(updated) })] })), (fieldValue("__Updated by") || media.updatedBy) && (_jsxs(_Fragment, { children: [_jsx("dt", { className: "text-neutral-grey-50", children: "Modified by" }), _jsx("dd", { className: "break-words", children: fieldValue("__Updated by") || media.updatedBy })] }))] })] })] }));
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=MediaDetailsView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaDetailsView.js","sourceRoot":"","sources":["../../../src/editor/media-selector/MediaDetailsView.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,MAAM,EACN,QAAQ,GAGT,MAAM,OAAO,CAAC;AACf,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,MAAM,EACN,MAAM,EACN,CAAC,GACF,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAI7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,MAAM,YAAY,GAAG;IACnB,OAAO;IACP,KAAK;IACL,aAAa;IACb,UAAU;IACV,WAAW;IACX,QAAQ;CACT,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,cAAc,EACd,cAAc,GAWf;IACC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,WAAW,EAAE,eAAe,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAY,CAAC;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,OAAO;YAClD,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,KAAK,UAAU;aACZ,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;aACvE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,SAAS;gBAAE,OAAO;YACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YAChB,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,SAAS;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS;gBAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,QAAQ;QACpB,KAAK,CAAC,EAAE;QACR,YAAY;QACZ,WAAW;QACX,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CAC7B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAC5D,EAAE,KAAK,CAAC;QACT,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;YAC3D,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACf,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CACvC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,CACrD,CAAC;IACF,MAAM,UAAU,GACd,eAAe,EAAE,KAAK,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,QAAQ;QACjE,CAAC,CAAE,eAAe,CAAC,KAAkC;QACrD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;IACtC,MAAM,SAAS,GACb,UAAU,EAAE,SAAS,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC;IACtE,MAAM,QAAQ,GACZ,UAAU,EAAE,QAAQ,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC;IACpE,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;IACzE,MAAM,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC;IACpD,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;IAC7D,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,OAAO,GACX,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;QAC9B,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC;IAChE,MAAM,UAAU,GACd,CAAC,CAAC,IAAI,EAAE,YAAY;QACpB,CAAC,CAAC,eAAe,EAAE,QAAQ;QAC3B,WAAW,EAAE,IAAI,KAAK,SAAS,CAAC;IAClC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CACjC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,CAC3E,CAAC;IACF,MAAM,UAAU,GACd,WAAW,EAAE,gBAAgB,EAAE,IAAI,CACjC,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE;QAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,QAAQ;QACvC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,OAAO,CACxC,EAAE,OAAO,IAAI,EAAE,CAAC;IACnB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5E,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnC,MAAM,cAAc,GAAG,CAAC,KAA6B,EAAE,EAAE;QACvD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO;QACpE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACtE,WAAW,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO,CACL,iCACa,eAAe,iBACd,eAAe,EAC3B,SAAS,EAAC,mCAAmC,EAC7C,WAAW,EAAE,cAAc,EAC3B,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IACE,CAAC,CAAC,KAAK,CAAC,aAAa,YAAY,IAAI,CAAC;gBACtC,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;gBAElD,WAAW,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,EACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO;YACpE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,IAAI,IAAI,UAAU,IAAI,CAAC,IAAI;gBAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,aAED,eAAK,SAAS,EAAC,uEAAuE,aACpF,aACE,SAAS,EAAC,6CAA6C,EACvD,KAAK,EAAE,IAAI,YAEV,IAAI,GACF,EACJ,IAAI,EAAE,SAAS,IAAI,WAAW,EAAE,IAAI,KAAK,SAAS,IAAI,CACrD,KAAC,gBAAgB,IACf,KAAK,EAAC,cAAc,EACpB,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,EACpD,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,WAAW;gCACb,KAAK,WAAW,CAAC,cAAc,CAAC;oCAC9B,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU;oCACtD,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;iCACxB,CAAC,CAAC;wBACP,CAAC,GACD,CACH,EACD,KAAC,gBAAgB,IACf,GAAG,EAAE,WAAW,EAChB,KAAK,EAAC,qBAAqB,EAC3B,IAAI,EAAE,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,EAC/C,OAAO,EAAE,OAAO,GAChB,IACE,EAEN,eAAK,SAAS,EAAC,mFAAmF,aAC/F,CAAC,aAAa,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CACzC,cACE,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,EAC9B,SAAS,EAAC,oCAAoC,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,GACrC,CACH,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CACxC,gBAEE,GAAG,EAAE,MAAM,EACX,QAAQ,QACR,WAAW,QACX,OAAO,EAAC,UAAU,gBACN,kBAAkB,IAAI,EAAE,EACpC,SAAS,EAAC,iBAAiB,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAPhC,MAAM,CAQX,CACH,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CACxC,gBAEE,GAAG,EAAE,MAAM,EACX,QAAQ,QACR,OAAO,EAAC,UAAU,gBACN,kBAAkB,IAAI,EAAE,EACpC,SAAS,EAAC,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IANhC,MAAM,CAOX,CACH,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,mEAAmE,aAChF,KAAC,QAAQ,IAAC,SAAS,EAAC,WAAW,EAAC,WAAW,EAAE,CAAC,GAAI,EAClD,yBACG,aAAa;oCACZ,CAAC,CAAC,qBAAqB;oCACvB,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,GAChC,EACN,MAAM,IAAI,CACT,YACE,IAAI,EAAE,MAAM,EACZ,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,SAAS,EAAC,WAAW,0BAGnB,CACL,IACG,CACP,EACA,QAAQ,IAAI,CACX,cAAK,SAAS,EAAC,yIAAyI,0CAElJ,CACP,IACG,EAEN,eAAK,SAAS,EAAC,sDAAsD,aACnE,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,cAAc,CACZ,IAAI,EAAE,UAAU,IAAI;4BAClB,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,QAAQ,EAAE,YAAY;4BACtB,OAAO,EAAE,WAAW;yBACrB,EACD,KAAK,CACN,aAGH,KAAC,YAAY,IAAC,WAAW,EAAE,CAAC,GAAI,uBACzB,EACR,MAAM,IAAI,CACT,KAAC,MAAM,IAAC,OAAO,QAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,YACvC,aACE,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,aAEhB,KAAC,QAAQ,IAAC,WAAW,EAAE,CAAC,GAAI,iBAC1B,GACG,CACV,EACA,UAAU,IAAI,CACb,8BACE,gBACE,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,QAAQ,gBACP,oBAAoB,EAC/B,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oCAClB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oCACrC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;oCACxB,IAAI,IAAI;wCAAE,cAAc,CAAC,IAAI,CAAC,CAAC;gCACjC,CAAC,GACD,EACF,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,aAEzC,KAAC,MAAM,IAAC,WAAW,EAAE,CAAC,GAAI,qBACnB,IACR,CACJ,IACG,EAEL,OAAO,CAAC,CAAC,CAAC,CACT,eACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0DAA0D,aAEpE,KAAC,OAAO,IAAC,SAAS,EAAC,sBAAsB,GAAG,8BACxC,CACP,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,eAAK,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,aAAa,8CACT,GAAG,EACjC,KAAC,MAAM,IACL,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE;4BACZ,UAAU,CAAC,IAAI,CAAC,CAAC;4BACjB,QAAQ,CAAC,KAAK,CAAC,CAAC;4BAChB,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;wBACjC,CAAC,sBAGM,IACL,CACP,CAAC,CAAC,CAAC,CACF,IAAI,IAAI,CACN,8BACE,KAAC,cAAc,IAAC,IAAI,EAAE,IAAI,GAAI,EAC9B,eAAK,SAAS,EAAC,qBAAqB,aACjC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,2BAA2B,IAE1B,eAAe,EAAE,KAAK,CAAC,UAAU,EACjC,KAAK,EACH,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAE9D,UAAU,EAAE,UAAU,CAAC,MAAM,CAC3B,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE;oCAC5B,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,CACjC,EACD,UAAU,QACV,QAAQ,EAAE,WAAW,EAAE,IAAI,KAAK,SAAS,IAXpC,KAAK,CAAC,EAAE,CAYb,CACH,CAAC,EACD,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CACtB,YAAG,SAAS,EAAC,mCAAmC,sFAG5C,CACL,IACG,IACL,CACJ,CACF,EAED,mBAAS,SAAS,EAAC,oBAAoB,EAAC,IAAI,mBAC1C,kBAAS,SAAS,EAAC,oCAAoC,iCAE7C,EACV,cAAI,SAAS,EAAC,kEAAkE,aAC9E,aAAI,SAAS,EAAC,sBAAsB,0BAAe,EACnD,aAAI,SAAS,EAAC,aAAa,YAAE,QAAQ,GAAM,EAC3C,aAAI,SAAS,EAAC,sBAAsB,qBAAU,EAC9C,uBAAK,SAAS,CAAC,WAAW,EAAE,GAAM,EACjC,KAAK,IAAI,MAAM,IAAI,CAClB,8BACE,aAAI,SAAS,EAAC,sBAAsB,2BAAgB,EACpD,yBACG,KAAK,cAAK,MAAM,WACd,IACJ,CACJ,EACA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CACpC,8BACE,aAAI,SAAS,EAAC,sBAAsB,qBAAU,EAC9C,uBACG,IAAI,IAAI,IAAI,GAAG,IAAI;4CAClB,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;4CACzC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,GAC7C,IACJ,CACJ,EACA,OAAO,IAAI,CACV,8BACE,aAAI,SAAS,EAAC,sBAAsB,yBAAc,EAClD,uBAAK,UAAU,CAAC,OAAO,CAAC,GAAM,IAC7B,CACJ,EACA,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAClD,8BACE,aAAI,SAAS,EAAC,sBAAsB,4BAAiB,EACrD,aAAI,SAAS,EAAC,aAAa,YACxB,UAAU,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,SAAS,GAC3C,IACJ,CACJ,IACE,IACG,IACF,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DialogProps } from "../client/editContext";
|
|
2
|
+
export type UploadMediaFileDialogProps = {
|
|
3
|
+
parentPath: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function UploadMediaFileDialog({ parentPath, onClose, }: UploadMediaFileDialogProps & DialogProps<File>): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Upload } from "lucide-react";
|
|
3
|
+
import { Dialog, DialogContent } from "../../components/ui/dialog";
|
|
4
|
+
import { StyledDialogTitle } from "../../components/ui/styled-dialog-title";
|
|
5
|
+
import { Button } from "../../components/ui/button";
|
|
6
|
+
import DialogButtons from "../ui/DialogButtons";
|
|
7
|
+
export function UploadMediaFileDialog({ parentPath, onClose, }) {
|
|
8
|
+
return (_jsx(Dialog, { open: true, onOpenChange: (open) => !open && onClose(null), children: _jsxs(DialogContent, { children: [_jsx(StyledDialogTitle, { icon: _jsx(Upload, { strokeWidth: 1 }), title: "Upload file", subtitle: `Upload to ${parentPath}` }), _jsx("div", { className: "px-8 py-6", children: _jsx("input", { type: "file", "aria-label": "File to upload", onChange: (event) => {
|
|
9
|
+
const file = event.target.files?.[0];
|
|
10
|
+
if (file)
|
|
11
|
+
onClose(file);
|
|
12
|
+
} }) }), _jsx(DialogButtons, { children: _jsx(Button, { variant: "outline", onClick: () => onClose(null), children: "Cancel" }) })] }) }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=UploadMediaFileDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadMediaFileDialog.js","sourceRoot":"","sources":["../../../src/editor/media-selector/UploadMediaFileDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAIhD,MAAM,UAAU,qBAAqB,CAAC,EACpC,UAAU,EACV,OAAO,GACwC;IAC/C,OAAO,CACL,KAAC,MAAM,IAAC,IAAI,QAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,YACzD,MAAC,aAAa,eACZ,KAAC,iBAAiB,IAChB,IAAI,EAAE,KAAC,MAAM,IAAC,WAAW,EAAE,CAAC,GAAI,EAChC,KAAK,EAAC,aAAa,EACnB,QAAQ,EAAE,aAAa,UAAU,EAAE,GACnC,EACF,cAAK,SAAS,EAAC,WAAW,YACxB,gBACE,IAAI,EAAC,MAAM,gBACA,gBAAgB,EAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4BAClB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;4BACrC,IAAI,IAAI;gCAAE,OAAO,CAAC,IAAI,CAAC,CAAC;wBAC1B,CAAC,GACD,GACE,EACN,KAAC,aAAa,cACZ,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,uBAE7C,GACK,IACF,GACT,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
import type { ItemDescriptor } from "../pageModel";
|
|
3
|
+
import type { Thumbnail } from "../services/contentService";
|
|
4
|
+
type MediaItem = Thumbnail & {
|
|
5
|
+
language?: string;
|
|
6
|
+
version?: number;
|
|
7
|
+
};
|
|
8
|
+
type FolderTarget = {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
language?: string;
|
|
12
|
+
version?: number;
|
|
13
|
+
};
|
|
14
|
+
export declare function useMediaFolderDrag({ language, images, selectedIds, disabled, onMoved, }: {
|
|
15
|
+
language: string;
|
|
16
|
+
images: MediaItem[];
|
|
17
|
+
selectedIds: string[];
|
|
18
|
+
disabled: boolean;
|
|
19
|
+
onMoved: (items: ItemDescriptor[]) => void;
|
|
20
|
+
}): {
|
|
21
|
+
getItemProps: (item: MediaItem, isFolder: boolean) => HTMLAttributes<HTMLElement>;
|
|
22
|
+
getDropProps: (target: FolderTarget) => HTMLAttributes<HTMLElement>;
|
|
23
|
+
dropTarget: string | undefined;
|
|
24
|
+
moving: boolean;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { useRef, useState } from "react";
|
|
2
|
+
import { toast } from "sonner";
|
|
3
|
+
import { useEditContext } from "../client/editContext";
|
|
4
|
+
import { beginMediaItemPointerDrag, cancelMediaItemPointerDrag, consumeMediaItemPointerDrag, MEDIA_ITEM_DRAG_MIME, readMediaItemDrag, startMediaItemDrag, toMediaItemDescriptor, } from "./mediaItemDrag";
|
|
5
|
+
export function useMediaFolderDrag({ language, images, selectedIds, disabled, onMoved, }) {
|
|
6
|
+
const editContext = useEditContext();
|
|
7
|
+
const [dropTarget, setDropTarget] = useState();
|
|
8
|
+
const [moving, setMoving] = useState(false);
|
|
9
|
+
const movingRef = useRef(false);
|
|
10
|
+
const draggedItems = useRef([]);
|
|
11
|
+
const suppressClick = useRef(false);
|
|
12
|
+
const normalize = (id) => id.toLowerCase();
|
|
13
|
+
const finishDrag = () => {
|
|
14
|
+
cancelMediaItemPointerDrag();
|
|
15
|
+
draggedItems.current = [];
|
|
16
|
+
setDropTarget(undefined);
|
|
17
|
+
editContext?.dragEnd();
|
|
18
|
+
// A pointer fallback can emit a click after pointerup.
|
|
19
|
+
window.setTimeout(() => {
|
|
20
|
+
suppressClick.current = false;
|
|
21
|
+
}, 0);
|
|
22
|
+
};
|
|
23
|
+
const move = async (target, items) => {
|
|
24
|
+
if (disabled || movingRef.current || !items.length || !editContext)
|
|
25
|
+
return;
|
|
26
|
+
movingRef.current = true;
|
|
27
|
+
setMoving(true);
|
|
28
|
+
try {
|
|
29
|
+
const ids = new Set(items.map((item) => normalize(item.id)));
|
|
30
|
+
const destination = await editContext.itemsRepository.getItem({
|
|
31
|
+
id: target.id,
|
|
32
|
+
language: target.language || language,
|
|
33
|
+
version: target.version ?? 0,
|
|
34
|
+
});
|
|
35
|
+
if (!destination?.canCreate) {
|
|
36
|
+
toast.error("You don't have permission to move items into this folder.");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Check ancestry as well as self-drops, including folders found via search.
|
|
40
|
+
let ancestor = destination;
|
|
41
|
+
const visited = new Set();
|
|
42
|
+
while (ancestor) {
|
|
43
|
+
const id = normalize(ancestor.id);
|
|
44
|
+
if (ids.has(id)) {
|
|
45
|
+
toast.error("A folder cannot be moved into itself or one of its subfolders.");
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (!ancestor.parentId || visited.has(id))
|
|
49
|
+
break;
|
|
50
|
+
visited.add(id);
|
|
51
|
+
ancestor = await editContext.itemsRepository.getItem({
|
|
52
|
+
id: ancestor.parentId,
|
|
53
|
+
language,
|
|
54
|
+
version: 0,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const moved = await editContext.operations.moveItems(items, destination.descriptor, -1);
|
|
58
|
+
if (moved) {
|
|
59
|
+
onMoved(items);
|
|
60
|
+
toast.success(items.length === 1
|
|
61
|
+
? `Moved "${items[0].name ?? "item"}" to ${target.name}`
|
|
62
|
+
: `Moved ${items.length} items to ${target.name}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
editContext.showErrorToast(error);
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
movingRef.current = false;
|
|
70
|
+
setMoving(false);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const getDropProps = (target) => ({
|
|
74
|
+
onDragOver: (event) => {
|
|
75
|
+
const items = draggedItems.current.length
|
|
76
|
+
? draggedItems.current
|
|
77
|
+
: editContext?.dragObject?.type === "items"
|
|
78
|
+
? (editContext.dragObject.items ?? [])
|
|
79
|
+
: [];
|
|
80
|
+
const isItemDrag = items.length > 0 ||
|
|
81
|
+
Array.from(event.dataTransfer.types).includes(MEDIA_ITEM_DRAG_MIME);
|
|
82
|
+
if (!isItemDrag)
|
|
83
|
+
return;
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
const allowed = !disabled &&
|
|
87
|
+
!movingRef.current &&
|
|
88
|
+
!items.some((item) => normalize(item.id) === normalize(target.id));
|
|
89
|
+
event.dataTransfer.dropEffect = allowed ? "move" : "none";
|
|
90
|
+
setDropTarget(allowed ? target.id : undefined);
|
|
91
|
+
},
|
|
92
|
+
onDragLeave: (event) => {
|
|
93
|
+
if (event.relatedTarget instanceof Node &&
|
|
94
|
+
event.currentTarget.contains(event.relatedTarget))
|
|
95
|
+
return;
|
|
96
|
+
setDropTarget(undefined);
|
|
97
|
+
},
|
|
98
|
+
onDrop: (event) => {
|
|
99
|
+
const drag = readMediaItemDrag(event.dataTransfer) ?? editContext?.dragObject;
|
|
100
|
+
if (drag?.type !== "items")
|
|
101
|
+
return;
|
|
102
|
+
event.preventDefault();
|
|
103
|
+
event.stopPropagation();
|
|
104
|
+
finishDrag();
|
|
105
|
+
void move(target, drag.items ?? []);
|
|
106
|
+
},
|
|
107
|
+
onPointerUp: (event) => {
|
|
108
|
+
const drag = consumeMediaItemPointerDrag(event.nativeEvent);
|
|
109
|
+
if (drag?.type !== "items")
|
|
110
|
+
return;
|
|
111
|
+
event.preventDefault();
|
|
112
|
+
event.stopPropagation();
|
|
113
|
+
suppressClick.current = true;
|
|
114
|
+
finishDrag();
|
|
115
|
+
void move(target, drag.items ?? []);
|
|
116
|
+
},
|
|
117
|
+
onClickCapture: (event) => {
|
|
118
|
+
if (!suppressClick.current)
|
|
119
|
+
return;
|
|
120
|
+
event.preventDefault();
|
|
121
|
+
event.stopPropagation();
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
const getItemProps = (item, isFolder) => {
|
|
125
|
+
const selection = selectedIds.includes(item.id)
|
|
126
|
+
? images.filter((image) => selectedIds.includes(image.id))
|
|
127
|
+
: [item];
|
|
128
|
+
return {
|
|
129
|
+
...(isFolder ? getDropProps(item) : {}),
|
|
130
|
+
draggable: !disabled && !moving,
|
|
131
|
+
onPointerDown: (event) => {
|
|
132
|
+
if (disabled || moving)
|
|
133
|
+
return;
|
|
134
|
+
beginMediaItemPointerDrag({
|
|
135
|
+
event: event.nativeEvent,
|
|
136
|
+
items: selection,
|
|
137
|
+
language,
|
|
138
|
+
});
|
|
139
|
+
},
|
|
140
|
+
onDragStart: (event) => {
|
|
141
|
+
if (disabled || movingRef.current) {
|
|
142
|
+
event.preventDefault();
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
draggedItems.current = selection.map((image) => toMediaItemDescriptor(image, language));
|
|
146
|
+
startMediaItemDrag({ event, editContext, items: selection, language });
|
|
147
|
+
},
|
|
148
|
+
onDragEnd: finishDrag,
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
return { getItemProps, getDropProps, dropTarget, moving };
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=useMediaFolderDrag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMediaFolderDrag.js","sourceRoot":"","sources":["../../../src/editor/media-selector/useMediaFolderDrag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function OpenPublishedPageButton(): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ExternalLink } from "lucide-react";
|
|
3
|
+
import { Button } from "../../components/ui/button";
|
|
4
|
+
import { Tooltip, TooltipContent, TooltipTrigger, } from "../../components/ui/tooltip";
|
|
5
|
+
import { useEditContext } from "../client/editContext";
|
|
6
|
+
import { usePageResolvedSignal } from "../page-viewer/pageViewContext";
|
|
7
|
+
import { publicSiteSourcePhrases } from "../settings/panels/publicSiteHelpers";
|
|
8
|
+
export function OpenPublishedPageButton() {
|
|
9
|
+
const editContext = useEditContext();
|
|
10
|
+
usePageResolvedSignal();
|
|
11
|
+
if (!editContext ||
|
|
12
|
+
editContext.workspaceId !== "editor" ||
|
|
13
|
+
editContext.isMobile)
|
|
14
|
+
return null;
|
|
15
|
+
const context = editContext.getActiveSlotContext()?.primaryPageViewContext;
|
|
16
|
+
const url = context?.publishedUrl;
|
|
17
|
+
if (!url)
|
|
18
|
+
return null;
|
|
19
|
+
const source = context.publicSite?.source;
|
|
20
|
+
return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { size: "iconSm", variant: "ghost", asChild: true, children: _jsx("a", { href: url, target: "_blank", rel: "noreferrer noopener", "aria-label": "Open published page", "data-testid": "open-published-page", "data-published-url": url, "data-public-site-source": source, children: _jsx(ExternalLink, { strokeWidth: 1, className: "h-4 w-4" }) }) }) }), _jsxs(TooltipContent, { children: [_jsxs("div", { children: ["Open published page", source ? ` — via ${publicSiteSourcePhrases[source] ?? source}` : ""] }), _jsx("div", { className: "mt-1 max-w-md font-mono text-xs break-all", dir: "ltr", children: url })] })] }));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=OpenPublishedPageButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenPublishedPageButton.js","sourceRoot":"","sources":["../../../src/editor/menubar/OpenPublishedPageButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,qBAAqB,EAAE,CAAC;IACxB,IACE,CAAC,WAAW;QACZ,WAAW,CAAC,WAAW,KAAK,QAAQ;QACpC,WAAW,CAAC,QAAQ;QAEpB,OAAO,IAAI,CAAC;IACd,MAAM,OAAO,GAAG,WAAW,CAAC,oBAAoB,EAAE,EAAE,sBAAsB,CAAC;IAC3E,MAAM,GAAG,GAAG,OAAO,EAAE,YAAY,CAAC;IAClC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;IAC1C,OAAO,CACL,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,kBAC3C,YACE,IAAI,EAAE,GAAG,EACT,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,gBACd,qBAAqB,iBACpB,qBAAqB,wBACb,GAAG,6BACE,MAAM,YAE/B,KAAC,YAAY,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,SAAS,GAAG,GAClD,GACG,GACM,EACjB,MAAC,cAAc,eACb,iDAEG,MAAM,CAAC,CAAC,CAAC,UAAU,uBAAuB,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAChE,EACN,cAAK,SAAS,EAAC,2CAA2C,EAAC,GAAG,EAAC,KAAK,YACjE,GAAG,GACA,IACS,IACT,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The comments split button: the left half shows and hides the comment
|
|
3
|
+
* margin, the right half (while the margin is shown) opens its filters. The
|
|
4
|
+
* margin itself carries no controls; it is the page's margin, not a panel.
|
|
5
|
+
*
|
|
6
|
+
* On a phone the left half drives the comments panel below the canvas: it
|
|
7
|
+
* opens the panel, brings it back when the edit form or a sidebar covers
|
|
8
|
+
* it, and closes it. Its pressed state is the panel's, not the persisted
|
|
9
|
+
* preference's, so it tells what a tap will do.
|
|
10
|
+
*/
|
|
11
|
+
export declare function CommentsToggleControl(): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDown, MessageCircleMore } from "lucide-react";
|
|
3
|
+
import { CountBadge } from "../../../components/ui/badge";
|
|
4
|
+
import { Popover, PopoverContent, PopoverTrigger, } from "../../../components/ui/popover";
|
|
5
|
+
import { Tooltip, TooltipContent, TooltipTrigger, } from "../../../components/ui/tooltip";
|
|
6
|
+
import { cn } from "../../../lib/utils";
|
|
7
|
+
import { useEditContext } from "../../client/editContext";
|
|
8
|
+
import { countActiveFeedbackFilters, FeedbackFiltersPanel, } from "../../reviews/FeedbackFilters";
|
|
9
|
+
import { useFeedbackPersonFilter } from "../../reviews/feedbackPersonFilter";
|
|
10
|
+
import { FEEDBACK_SIDEBAR_TEXT_CLASS } from "../../reviews/feedbackSidebarText";
|
|
11
|
+
import { useMobileBottomPanel } from "../../mobileBottomPanel";
|
|
12
|
+
import { closeCommentsFeedback, openCommentsFeedback, toggleCommentsFeedback, } from "../../reviews/openCommentsFeedback";
|
|
13
|
+
import { useFeedbackThreads } from "../../reviews/useFeedbackThreads";
|
|
14
|
+
import { SimpleIconButton } from "../../ui/SimpleIconButton";
|
|
15
|
+
/**
|
|
16
|
+
* The comments split button: the left half shows and hides the comment
|
|
17
|
+
* margin, the right half (while the margin is shown) opens its filters. The
|
|
18
|
+
* margin itself carries no controls; it is the page's margin, not a panel.
|
|
19
|
+
*
|
|
20
|
+
* On a phone the left half drives the comments panel below the canvas: it
|
|
21
|
+
* opens the panel, brings it back when the edit form or a sidebar covers
|
|
22
|
+
* it, and closes it. Its pressed state is the panel's, not the persisted
|
|
23
|
+
* preference's, so it tells what a tap will do.
|
|
24
|
+
*/
|
|
25
|
+
export function CommentsToggleControl() {
|
|
26
|
+
const editContext = useEditContext();
|
|
27
|
+
const selectedPeople = useFeedbackPersonFilter();
|
|
28
|
+
const bottomPanel = useMobileBottomPanel();
|
|
29
|
+
if (!editContext)
|
|
30
|
+
return null;
|
|
31
|
+
const isMobile = !!editContext.isMobile;
|
|
32
|
+
const panelOpen = !!editContext.mobileCommentsPanelOpen;
|
|
33
|
+
const panelShowing = bottomPanel === "comments";
|
|
34
|
+
const showComments = isMobile ? panelOpen : !!editContext.showComments;
|
|
35
|
+
const handleToggle = () => {
|
|
36
|
+
if (!isMobile) {
|
|
37
|
+
toggleCommentsFeedback(editContext);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (!panelOpen) {
|
|
41
|
+
openCommentsFeedback(editContext);
|
|
42
|
+
}
|
|
43
|
+
else if (!panelShowing) {
|
|
44
|
+
editContext.revealMobileCommentsPanel();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
closeCommentsFeedback(editContext);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const toggleLabel = isMobile && panelOpen && !panelShowing
|
|
51
|
+
? "Show comments panel"
|
|
52
|
+
: "Show comments";
|
|
53
|
+
const commentsCount = editContext.comments?.filter((comment) => !comment.isResolved).length || 0;
|
|
54
|
+
const activeFilterCount = countActiveFeedbackFilters(!!editContext.showResolvedComments, selectedPeople);
|
|
55
|
+
const filterLabel = activeFilterCount > 0
|
|
56
|
+
? `Filter comments (${activeFilterCount} active filters)`
|
|
57
|
+
: "Filter comments";
|
|
58
|
+
return (_jsxs("div", { className: "flex items-stretch", role: "group", "aria-label": "Comments", children: [_jsx(SimpleIconButton, { className: cn("relative", showComments && "rounded-r-none"), selected: showComments, icon: _jsx(MessageCircleMore, { className: "h-6 w-6 p-1", strokeWidth: 1 }), label: toggleLabel, size: "large", "data-testid": "toggle-comments-button", onClick: handleToggle, children: commentsCount > 0 && (_jsx(CountBadge, { className: "absolute -top-1 -right-1 z-10 min-w-[16px]", children: commentsCount > 99 ? "99+" : commentsCount })) }), showComments && (_jsxs(Tooltip, { delayDuration: 500, children: [_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(TooltipTrigger, { asChild: true, children: _jsx(SimpleIconButton, { "data-testid": "feedback-filter-button", showTooltip: false, selected: true, icon: _jsx(ChevronDown, { className: "h-3 w-3", strokeWidth: 1 }), label: filterLabel, className: "relative rounded-l-none px-0.5 py-0", onClick: () => { }, children: activeFilterCount > 0 && (_jsx("span", { "data-testid": "feedback-filter-active", className: "bg-highlight-100 absolute right-0.5 bottom-1 h-1.5 w-1.5 rounded-full" })) }) }) }), _jsx(PopoverContent, { className: `${FEEDBACK_SIDEBAR_TEXT_CLASS} w-72 p-3`, align: "end", "data-testid": "feedback-filter-popover", children: _jsx(CommentsFilterPopoverBody, {}) })] }), _jsx(TooltipContent, { children: filterLabel })] }))] }));
|
|
59
|
+
}
|
|
60
|
+
/** Mounted only while the popover is open: resolves the author names. */
|
|
61
|
+
function CommentsFilterPopoverBody() {
|
|
62
|
+
const feedback = useFeedbackThreads();
|
|
63
|
+
return (_jsx(FeedbackFiltersPanel, { showResolved: feedback.showResolved, selectedPeople: feedback.selectedPersonFilter, availableAuthors: feedback.availableAuthors, onShowResolvedChange: feedback.setShowResolved, onSelectedPeopleChange: feedback.setSelectedPersonFilter }));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=CommentsToggleControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommentsToggleControl.js","sourceRoot":"","sources":["../../../../src/editor/menubar/toolbar-sections/CommentsToggleControl.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toolbar entry point for "Find and replace" (also reachable with Ctrl+H).
|
|
3
|
+
* The popover is non-modal and stays open while the user scrolls or clicks
|
|
4
|
+
* the canvas, so the highlighted matches can be inspected one by one.
|
|
5
|
+
*/
|
|
6
|
+
export declare function FindReplaceControls(): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Popover, PopoverAnchor, PopoverContent, } from "../../../components/ui/popover";
|
|
3
|
+
import { useEditContext } from "../../client/editContext";
|
|
4
|
+
import { FindReplacePanel } from "../../find-replace/FindReplacePanel";
|
|
5
|
+
import { findReplaceCommand } from "../../find-replace/findReplaceCommand";
|
|
6
|
+
import { findReplaceStore, useFindReplaceState, } from "../../find-replace/findReplaceStore";
|
|
7
|
+
import { SimpleIconButton } from "../../ui/SimpleIconButton";
|
|
8
|
+
/**
|
|
9
|
+
* Toolbar entry point for "Find and replace" (also reachable with Ctrl+H).
|
|
10
|
+
* The popover is non-modal and stays open while the user scrolls or clicks
|
|
11
|
+
* the canvas, so the highlighted matches can be inspected one by one.
|
|
12
|
+
*/
|
|
13
|
+
export function FindReplaceControls() {
|
|
14
|
+
const editContext = useEditContext();
|
|
15
|
+
const { open } = useFindReplaceState();
|
|
16
|
+
if (!editContext)
|
|
17
|
+
return null;
|
|
18
|
+
const disabled = editContext.isCommandDisabled({
|
|
19
|
+
command: findReplaceCommand,
|
|
20
|
+
});
|
|
21
|
+
return (_jsxs(Popover, { open: open, onOpenChange: (next) => {
|
|
22
|
+
if (next)
|
|
23
|
+
findReplaceStore.open();
|
|
24
|
+
else
|
|
25
|
+
findReplaceStore.close();
|
|
26
|
+
}, enableIframeClickDetection: false, children: [_jsx(PopoverAnchor, { asChild: true, children: _jsx(SimpleIconButton, { icon: findReplaceCommand.icon, label: "Find and replace (Ctrl+H)", size: "large", selected: open, disabled: disabled, onClick: () => findReplaceStore.toggle(), "data-testid": "toolbar-find-replace-button" }) }), _jsx(PopoverContent, { align: "start", side: "bottom", sideOffset: 6, className: "w-[400px] max-w-[90vw] p-0",
|
|
27
|
+
// Clicking elsewhere in the editor must not dismiss the panel: it is
|
|
28
|
+
// a tool window, closed by its own button, Escape or the toolbar icon.
|
|
29
|
+
onInteractOutside: (event) => event.preventDefault(), onOpenAutoFocus: (event) => event.preventDefault(), "data-testid": "find-replace-popover", children: open && (_jsx(FindReplacePanel, { editContext: editContext, onClose: () => findReplaceStore.close() })) })] }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=FindReplaceControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FindReplaceControls.js","sourceRoot":"","sources":["../../../../src/editor/menubar/toolbar-sections/FindReplaceControls.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACvC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,CAAC;QAC7C,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,OAAO,IACN,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI;gBAAE,gBAAgB,CAAC,IAAI,EAAE,CAAC;;gBAC7B,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC,EACD,0BAA0B,EAAE,KAAK,aAEjC,KAAC,aAAa,IAAC,OAAO,kBACpB,KAAC,gBAAgB,IACf,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAC7B,KAAK,EAAC,2BAA2B,EACjC,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAC5B,6BAA6B,GACzC,GACY,EAChB,KAAC,cAAc,IACb,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,QAAQ,EACb,UAAU,EAAE,CAAC,EACb,SAAS,EAAC,4BAA4B;gBACtC,qEAAqE;gBACrE,uEAAuE;gBACvE,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EACpD,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,iBACtC,sBAAsB,YAEjC,IAAI,IAAI,CACP,KAAC,gBAAgB,IACf,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,GACvC,CACH,GACc,IACT,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SpellCheck } from "lucide-react";
|
|
3
|
+
import { useEditContext } from "../../client/editContext";
|
|
4
|
+
import { SimpleIconButton } from "../../ui/SimpleIconButton";
|
|
5
|
+
/**
|
|
6
|
+
* Switches the user's spell-check preference: the same setting as "Check
|
|
7
|
+
* spelling" under Settings > User Preferences, so both stay in sync.
|
|
8
|
+
*/
|
|
9
|
+
export function SpellCheckToggleControl() {
|
|
10
|
+
const editContext = useEditContext();
|
|
11
|
+
if (!editContext)
|
|
12
|
+
return null;
|
|
13
|
+
const enabled = editContext.userInfo?.preferences?.spellCheckEnabled !== false;
|
|
14
|
+
return (_jsx(SimpleIconButton, { icon: _jsx(SpellCheck, { className: "h-6 w-6 p-1", strokeWidth: 1 }), label: "Check spelling", size: "large", "data-testid": "toggle-spellcheck-button", selected: enabled, onClick: () => editContext.setUserPreferences({ spellCheckEnabled: !enabled }) }));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=SpellCheckToggleControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpellCheckToggleControl.js","sourceRoot":"","sources":["../../../../src/editor/menubar/toolbar-sections/SpellCheckToggleControl.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,KAAK,KAAK,CAAC;IAE/E,OAAO,CACL,KAAC,gBAAgB,IACf,IAAI,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,aAAa,EAAC,WAAW,EAAE,CAAC,GAAI,EAC5D,KAAK,EAAC,gBAAgB,EACtB,IAAI,EAAC,OAAO,iBACA,0BAA0B,EACtC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,GAAG,EAAE,CACZ,WAAW,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC,OAAO,EAAE,CAAC,GAEjE,CACH,CAAC;AACJ,CAAC"}
|