@fivepixels-js/react 0.1.0
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/LICENSE +21 -0
- package/README.md +648 -0
- package/dist/components/ShortcutHint.d.ts +8 -0
- package/dist/components/ShortcutHint.d.ts.map +1 -0
- package/dist/components/ShortcutHint.js +9 -0
- package/dist/components/ShortcutHint.js.map +1 -0
- package/dist/components/icons/Icons.d.ts +70 -0
- package/dist/components/icons/Icons.d.ts.map +1 -0
- package/dist/components/icons/Icons.js +127 -0
- package/dist/components/icons/Icons.js.map +1 -0
- package/dist/components/icons/MaterialIcon.d.ts +8 -0
- package/dist/components/icons/MaterialIcon.d.ts.map +1 -0
- package/dist/components/icons/MaterialIcon.js +5 -0
- package/dist/components/icons/MaterialIcon.js.map +1 -0
- package/dist/components/motion/index.d.ts +48 -0
- package/dist/components/motion/index.d.ts.map +1 -0
- package/dist/components/motion/index.js +910 -0
- package/dist/components/motion/index.js.map +1 -0
- package/dist/components/overlay/ReportOverlayLayer.d.ts +7 -0
- package/dist/components/overlay/ReportOverlayLayer.d.ts.map +1 -0
- package/dist/components/overlay/ReportOverlayLayer.js +14 -0
- package/dist/components/overlay/ReportOverlayLayer.js.map +1 -0
- package/dist/components/overlay/TargetHighlights.d.ts +9 -0
- package/dist/components/overlay/TargetHighlights.d.ts.map +1 -0
- package/dist/components/overlay/TargetHighlights.js +24 -0
- package/dist/components/overlay/TargetHighlights.js.map +1 -0
- package/dist/components/panel/PanelDockGuides.d.ts +8 -0
- package/dist/components/panel/PanelDockGuides.d.ts.map +1 -0
- package/dist/components/panel/PanelDockGuides.js +15 -0
- package/dist/components/panel/PanelDockGuides.js.map +1 -0
- package/dist/components/panel/PanelDropdownMenu.d.ts +19 -0
- package/dist/components/panel/PanelDropdownMenu.d.ts.map +1 -0
- package/dist/components/panel/PanelDropdownMenu.js +132 -0
- package/dist/components/panel/PanelDropdownMenu.js.map +1 -0
- package/dist/components/panel/PanelMoreMenu.d.ts +20 -0
- package/dist/components/panel/PanelMoreMenu.d.ts.map +1 -0
- package/dist/components/panel/PanelMoreMenu.js +20 -0
- package/dist/components/panel/PanelMoreMenu.js.map +1 -0
- package/dist/components/panel/PanelOptionSwitch.d.ts +14 -0
- package/dist/components/panel/PanelOptionSwitch.d.ts.map +1 -0
- package/dist/components/panel/PanelOptionSwitch.js +10 -0
- package/dist/components/panel/PanelOptionSwitch.js.map +1 -0
- package/dist/components/panel/ReportCommandPanel.d.ts +18 -0
- package/dist/components/panel/ReportCommandPanel.d.ts.map +1 -0
- package/dist/components/panel/ReportCommandPanel.js +43 -0
- package/dist/components/panel/ReportCommandPanel.js.map +1 -0
- package/dist/components/panel/ReportCommandReplaceConfirmDialog.d.ts +9 -0
- package/dist/components/panel/ReportCommandReplaceConfirmDialog.d.ts.map +1 -0
- package/dist/components/panel/ReportCommandReplaceConfirmDialog.js +7 -0
- package/dist/components/panel/ReportCommandReplaceConfirmDialog.js.map +1 -0
- package/dist/components/panel/ReportControlPanel.d.ts +2 -0
- package/dist/components/panel/ReportControlPanel.d.ts.map +1 -0
- package/dist/components/panel/ReportControlPanel.js +119 -0
- package/dist/components/panel/ReportControlPanel.js.map +1 -0
- package/dist/components/panel/ReportDraftForm.d.ts +2 -0
- package/dist/components/panel/ReportDraftForm.d.ts.map +1 -0
- package/dist/components/panel/ReportDraftForm.js +33 -0
- package/dist/components/panel/ReportDraftForm.js.map +1 -0
- package/dist/components/panel/ReportFeedbackList.d.ts +2 -0
- package/dist/components/panel/ReportFeedbackList.d.ts.map +1 -0
- package/dist/components/panel/ReportFeedbackList.js +165 -0
- package/dist/components/panel/ReportFeedbackList.js.map +1 -0
- package/dist/components/panel/ReportImportConfirmDialog.d.ts +8 -0
- package/dist/components/panel/ReportImportConfirmDialog.d.ts.map +1 -0
- package/dist/components/panel/ReportImportConfirmDialog.js +7 -0
- package/dist/components/panel/ReportImportConfirmDialog.js.map +1 -0
- package/dist/components/panel/ReportImportProjectMismatchDialog.d.ts +12 -0
- package/dist/components/panel/ReportImportProjectMismatchDialog.d.ts.map +1 -0
- package/dist/components/panel/ReportImportProjectMismatchDialog.js +19 -0
- package/dist/components/panel/ReportImportProjectMismatchDialog.js.map +1 -0
- package/dist/components/panel/ReportPersonalKeyDialog.d.ts +8 -0
- package/dist/components/panel/ReportPersonalKeyDialog.d.ts.map +1 -0
- package/dist/components/panel/ReportPersonalKeyDialog.js +60 -0
- package/dist/components/panel/ReportPersonalKeyDialog.js.map +1 -0
- package/dist/components/panel/ReportRouteDetails.d.ts +2 -0
- package/dist/components/panel/ReportRouteDetails.d.ts.map +1 -0
- package/dist/components/panel/ReportRouteDetails.js +18 -0
- package/dist/components/panel/ReportRouteDetails.js.map +1 -0
- package/dist/components/panel/feedback/AuthorSelector.d.ts +9 -0
- package/dist/components/panel/feedback/AuthorSelector.d.ts.map +1 -0
- package/dist/components/panel/feedback/AuthorSelector.js +17 -0
- package/dist/components/panel/feedback/AuthorSelector.js.map +1 -0
- package/dist/components/panel/feedback/FeedbackComposer.d.ts +23 -0
- package/dist/components/panel/feedback/FeedbackComposer.d.ts.map +1 -0
- package/dist/components/panel/feedback/FeedbackComposer.js +48 -0
- package/dist/components/panel/feedback/FeedbackComposer.js.map +1 -0
- package/dist/components/panel/feedback/FeedbackCreatorBadge.d.ts +2 -0
- package/dist/components/panel/feedback/FeedbackCreatorBadge.d.ts.map +1 -0
- package/dist/components/panel/feedback/FeedbackCreatorBadge.js +7 -0
- package/dist/components/panel/feedback/FeedbackCreatorBadge.js.map +1 -0
- package/dist/components/panel/feedback/FeedbackFieldTags.d.ts +9 -0
- package/dist/components/panel/feedback/FeedbackFieldTags.d.ts.map +1 -0
- package/dist/components/panel/feedback/FeedbackFieldTags.js +8 -0
- package/dist/components/panel/feedback/FeedbackFieldTags.js.map +1 -0
- package/dist/components/panel/feedback/FeedbackHoverCard.d.ts +11 -0
- package/dist/components/panel/feedback/FeedbackHoverCard.d.ts.map +1 -0
- package/dist/components/panel/feedback/FeedbackHoverCard.js +14 -0
- package/dist/components/panel/feedback/FeedbackHoverCard.js.map +1 -0
- package/dist/components/panel/feedback/FeedbackIssueHeader.d.ts +12 -0
- package/dist/components/panel/feedback/FeedbackIssueHeader.d.ts.map +1 -0
- package/dist/components/panel/feedback/FeedbackIssueHeader.js +10 -0
- package/dist/components/panel/feedback/FeedbackIssueHeader.js.map +1 -0
- package/dist/components/panel/feedback/FeedbackStatusBadge.d.ts +8 -0
- package/dist/components/panel/feedback/FeedbackStatusBadge.d.ts.map +1 -0
- package/dist/components/panel/feedback/FeedbackStatusBadge.js +10 -0
- package/dist/components/panel/feedback/FeedbackStatusBadge.js.map +1 -0
- package/dist/components/panel/feedback/FeedbackThread.d.ts +21 -0
- package/dist/components/panel/feedback/FeedbackThread.d.ts.map +1 -0
- package/dist/components/panel/feedback/FeedbackThread.js +90 -0
- package/dist/components/panel/feedback/FeedbackThread.js.map +1 -0
- package/dist/components/panel/feedback/FieldTagSelector.d.ts +9 -0
- package/dist/components/panel/feedback/FieldTagSelector.d.ts.map +1 -0
- package/dist/components/panel/feedback/FieldTagSelector.js +15 -0
- package/dist/components/panel/feedback/FieldTagSelector.js.map +1 -0
- package/dist/components/panel/feedback/GitIssueButton.d.ts +12 -0
- package/dist/components/panel/feedback/GitIssueButton.d.ts.map +1 -0
- package/dist/components/panel/feedback/GitIssueButton.js +43 -0
- package/dist/components/panel/feedback/GitIssueButton.js.map +1 -0
- package/dist/components/panel/feedback/GitIssuedThreadEntry.d.ts +8 -0
- package/dist/components/panel/feedback/GitIssuedThreadEntry.d.ts.map +1 -0
- package/dist/components/panel/feedback/GitIssuedThreadEntry.js +25 -0
- package/dist/components/panel/feedback/GitIssuedThreadEntry.js.map +1 -0
- package/dist/components/point/ReportDraftMarker.d.ts +2 -0
- package/dist/components/point/ReportDraftMarker.d.ts.map +1 -0
- package/dist/components/point/ReportDraftMarker.js +28 -0
- package/dist/components/point/ReportDraftMarker.js.map +1 -0
- package/dist/components/point/ReportMarkersLayer.d.ts +2 -0
- package/dist/components/point/ReportMarkersLayer.d.ts.map +1 -0
- package/dist/components/point/ReportMarkersLayer.js +129 -0
- package/dist/components/point/ReportMarkersLayer.js.map +1 -0
- package/dist/components/report/FivePixels.d.ts +50 -0
- package/dist/components/report/FivePixels.d.ts.map +1 -0
- package/dist/components/report/FivePixels.js +15 -0
- package/dist/components/report/FivePixels.js.map +1 -0
- package/dist/components/report/ReportView.d.ts +2 -0
- package/dist/components/report/ReportView.d.ts.map +1 -0
- package/dist/components/report/ReportView.js +14 -0
- package/dist/components/report/ReportView.js.map +1 -0
- package/dist/components/report/ShadowReportRoot.d.ts +9 -0
- package/dist/components/report/ShadowReportRoot.d.ts.map +1 -0
- package/dist/components/report/ShadowReportRoot.js +80 -0
- package/dist/components/report/ShadowReportRoot.js.map +1 -0
- package/dist/components/report/index.d.ts +13 -0
- package/dist/components/report/index.d.ts.map +1 -0
- package/dist/components/report/index.js +9 -0
- package/dist/components/report/index.js.map +1 -0
- package/dist/components/ui/HoverTooltip.d.ts +10 -0
- package/dist/components/ui/HoverTooltip.d.ts.map +1 -0
- package/dist/components/ui/HoverTooltip.js +64 -0
- package/dist/components/ui/HoverTooltip.js.map +1 -0
- package/dist/components/ui/IconTooltipButton.d.ts +12 -0
- package/dist/components/ui/IconTooltipButton.d.ts.map +1 -0
- package/dist/components/ui/IconTooltipButton.js +7 -0
- package/dist/components/ui/IconTooltipButton.js.map +1 -0
- package/dist/constants/feedbackStatus.d.ts +6 -0
- package/dist/constants/feedbackStatus.d.ts.map +1 -0
- package/dist/constants/feedbackStatus.js +27 -0
- package/dist/constants/feedbackStatus.js.map +1 -0
- package/dist/constants/project.d.ts +2 -0
- package/dist/constants/project.d.ts.map +1 -0
- package/dist/constants/project.js +2 -0
- package/dist/constants/project.js.map +1 -0
- package/dist/constants/report.d.ts +7 -0
- package/dist/constants/report.d.ts.map +1 -0
- package/dist/constants/report.js +14 -0
- package/dist/constants/report.js.map +1 -0
- package/dist/constants/reportShortcuts.d.ts +31 -0
- package/dist/constants/reportShortcuts.d.ts.map +1 -0
- package/dist/constants/reportShortcuts.js +9 -0
- package/dist/constants/reportShortcuts.js.map +1 -0
- package/dist/constants/storageKeys.d.ts +5 -0
- package/dist/constants/storageKeys.d.ts.map +1 -0
- package/dist/constants/storageKeys.js +16 -0
- package/dist/constants/storageKeys.js.map +1 -0
- package/dist/hooks/report.api.d.ts +8 -0
- package/dist/hooks/report.api.d.ts.map +1 -0
- package/dist/hooks/report.api.js +20 -0
- package/dist/hooks/report.api.js.map +1 -0
- package/dist/hooks/report.query.d.ts +27 -0
- package/dist/hooks/report.query.d.ts.map +1 -0
- package/dist/hooks/report.query.js +137 -0
- package/dist/hooks/report.query.js.map +1 -0
- package/dist/hooks/useAppearancePreference.d.ts +6 -0
- package/dist/hooks/useAppearancePreference.d.ts.map +1 -0
- package/dist/hooks/useAppearancePreference.js +40 -0
- package/dist/hooks/useAppearancePreference.js.map +1 -0
- package/dist/hooks/useCurrentPathname.d.ts +2 -0
- package/dist/hooks/useCurrentPathname.d.ts.map +1 -0
- package/dist/hooks/useCurrentPathname.js +18 -0
- package/dist/hooks/useCurrentPathname.js.map +1 -0
- package/dist/hooks/useIsMobileViewport.d.ts +2 -0
- package/dist/hooks/useIsMobileViewport.d.ts.map +1 -0
- package/dist/hooks/useIsMobileViewport.js +12 -0
- package/dist/hooks/useIsMobileViewport.js.map +1 -0
- package/dist/hooks/useLocalePreference.d.ts +6 -0
- package/dist/hooks/useLocalePreference.d.ts.map +1 -0
- package/dist/hooks/useLocalePreference.js +40 -0
- package/dist/hooks/useLocalePreference.js.map +1 -0
- package/dist/hooks/useNativeHover.d.ts +7 -0
- package/dist/hooks/useNativeHover.d.ts.map +1 -0
- package/dist/hooks/useNativeHover.js +28 -0
- package/dist/hooks/useNativeHover.js.map +1 -0
- package/dist/hooks/usePanelDock.d.ts +29 -0
- package/dist/hooks/usePanelDock.d.ts.map +1 -0
- package/dist/hooks/usePanelDock.js +279 -0
- package/dist/hooks/usePanelDock.js.map +1 -0
- package/dist/hooks/usePanelFeedbackTransfer.d.ts +59 -0
- package/dist/hooks/usePanelFeedbackTransfer.d.ts.map +1 -0
- package/dist/hooks/usePanelFeedbackTransfer.js +250 -0
- package/dist/hooks/usePanelFeedbackTransfer.js.map +1 -0
- package/dist/hooks/usePersonalKey.d.ts +30 -0
- package/dist/hooks/usePersonalKey.d.ts.map +1 -0
- package/dist/hooks/usePersonalKey.js +72 -0
- package/dist/hooks/usePersonalKey.js.map +1 -0
- package/dist/hooks/useReportPersistence.d.ts +63 -0
- package/dist/hooks/useReportPersistence.d.ts.map +1 -0
- package/dist/hooks/useReportPersistence.js +142 -0
- package/dist/hooks/useReportPersistence.js.map +1 -0
- package/dist/hooks/useReportShortcuts.d.ts +5 -0
- package/dist/hooks/useReportShortcuts.d.ts.map +1 -0
- package/dist/hooks/useReportShortcuts.js +117 -0
- package/dist/hooks/useReportShortcuts.js.map +1 -0
- package/dist/hooks/useReportState.d.ts +177 -0
- package/dist/hooks/useReportState.d.ts.map +1 -0
- package/dist/hooks/useReportState.js +904 -0
- package/dist/hooks/useReportState.js.map +1 -0
- package/dist/hooks/useResolvedAppearance.d.ts +4 -0
- package/dist/hooks/useResolvedAppearance.d.ts.map +1 -0
- package/dist/hooks/useResolvedAppearance.js +23 -0
- package/dist/hooks/useResolvedAppearance.js.map +1 -0
- package/dist/hooks/useTooltipLayout.d.ts +21 -0
- package/dist/hooks/useTooltipLayout.d.ts.map +1 -0
- package/dist/hooks/useTooltipLayout.js +45 -0
- package/dist/hooks/useTooltipLayout.js.map +1 -0
- package/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +277 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +20 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +77 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/ko.d.ts +3 -0
- package/dist/i18n/ko.d.ts.map +1 -0
- package/dist/i18n/ko.js +277 -0
- package/dist/i18n/ko.js.map +1 -0
- package/dist/i18n/types.d.ts +267 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +2 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/ReportProvider.d.ts +52 -0
- package/dist/providers/ReportProvider.d.ts.map +1 -0
- package/dist/providers/ReportProvider.js +49 -0
- package/dist/providers/ReportProvider.js.map +1 -0
- package/dist/providers/reportContext.d.ts +286 -0
- package/dist/providers/reportContext.d.ts.map +1 -0
- package/dist/providers/reportContext.js +11 -0
- package/dist/providers/reportContext.js.map +1 -0
- package/dist/storage/local/localStorageAdapter.d.ts +12 -0
- package/dist/storage/local/localStorageAdapter.d.ts.map +1 -0
- package/dist/storage/local/localStorageAdapter.js +187 -0
- package/dist/storage/local/localStorageAdapter.js.map +1 -0
- package/dist/styles/reportStylesheet.d.ts +2 -0
- package/dist/styles/reportStylesheet.d.ts.map +1 -0
- package/dist/styles/reportStylesheet.js +3 -0
- package/dist/styles/reportStylesheet.js.map +1 -0
- package/dist/types/report-ui.d.ts +47 -0
- package/dist/types/report-ui.d.ts.map +1 -0
- package/dist/types/report-ui.js +2 -0
- package/dist/types/report-ui.js.map +1 -0
- package/dist/types/report.d.ts +177 -0
- package/dist/types/report.d.ts.map +1 -0
- package/dist/types/report.js +8 -0
- package/dist/types/report.js.map +1 -0
- package/dist/utils/coordinates.d.ts +63 -0
- package/dist/utils/coordinates.d.ts.map +1 -0
- package/dist/utils/coordinates.js +236 -0
- package/dist/utils/coordinates.js.map +1 -0
- package/dist/utils/dom.d.ts +14 -0
- package/dist/utils/dom.d.ts.map +1 -0
- package/dist/utils/dom.js +104 -0
- package/dist/utils/dom.js.map +1 -0
- package/dist/utils/env.d.ts +6 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +18 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/feedbackDataTransfer.d.ts +31 -0
- package/dist/utils/feedbackDataTransfer.d.ts.map +1 -0
- package/dist/utils/feedbackDataTransfer.js +195 -0
- package/dist/utils/feedbackDataTransfer.js.map +1 -0
- package/dist/utils/feedbackThread.d.ts +14 -0
- package/dist/utils/feedbackThread.d.ts.map +1 -0
- package/dist/utils/feedbackThread.js +57 -0
- package/dist/utils/feedbackThread.js.map +1 -0
- package/dist/utils/feedbackTransferSchema.d.ts +37 -0
- package/dist/utils/feedbackTransferSchema.d.ts.map +1 -0
- package/dist/utils/feedbackTransferSchema.js +162 -0
- package/dist/utils/feedbackTransferSchema.js.map +1 -0
- package/dist/utils/fields.d.ts +11 -0
- package/dist/utils/fields.d.ts.map +1 -0
- package/dist/utils/fields.js +43 -0
- package/dist/utils/fields.js.map +1 -0
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +46 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/formatStatCount.d.ts +2 -0
- package/dist/utils/formatStatCount.d.ts.map +1 -0
- package/dist/utils/formatStatCount.js +4 -0
- package/dist/utils/formatStatCount.js.map +1 -0
- package/dist/utils/githubIntegration.d.ts +12 -0
- package/dist/utils/githubIntegration.d.ts.map +1 -0
- package/dist/utils/githubIntegration.js +56 -0
- package/dist/utils/githubIntegration.js.map +1 -0
- package/dist/utils/hoverTooltipLayout.d.ts +8 -0
- package/dist/utils/hoverTooltipLayout.d.ts.map +1 -0
- package/dist/utils/hoverTooltipLayout.js +30 -0
- package/dist/utils/hoverTooltipLayout.js.map +1 -0
- package/dist/utils/locateFeedback.d.ts +11 -0
- package/dist/utils/locateFeedback.d.ts.map +1 -0
- package/dist/utils/locateFeedback.js +16 -0
- package/dist/utils/locateFeedback.js.map +1 -0
- package/dist/utils/panelTypography.d.ts +4 -0
- package/dist/utils/panelTypography.d.ts.map +1 -0
- package/dist/utils/panelTypography.js +4 -0
- package/dist/utils/panelTypography.js.map +1 -0
- package/dist/utils/pathname.d.ts +2 -0
- package/dist/utils/pathname.d.ts.map +1 -0
- package/dist/utils/pathname.js +10 -0
- package/dist/utils/pathname.js.map +1 -0
- package/dist/utils/pathnameNavigation.d.ts +4 -0
- package/dist/utils/pathnameNavigation.d.ts.map +1 -0
- package/dist/utils/pathnameNavigation.js +52 -0
- package/dist/utils/pathnameNavigation.js.map +1 -0
- package/dist/utils/personalKey.d.ts +45 -0
- package/dist/utils/personalKey.d.ts.map +1 -0
- package/dist/utils/personalKey.js +180 -0
- package/dist/utils/personalKey.js.map +1 -0
- package/dist/utils/projectId.d.ts +2 -0
- package/dist/utils/projectId.d.ts.map +1 -0
- package/dist/utils/projectId.js +14 -0
- package/dist/utils/projectId.js.map +1 -0
- package/dist/utils/reportCallbacks.d.ts +20 -0
- package/dist/utils/reportCallbacks.d.ts.map +1 -0
- package/dist/utils/reportCallbacks.js +42 -0
- package/dist/utils/reportCallbacks.js.map +1 -0
- package/dist/utils/reportProject.d.ts +17 -0
- package/dist/utils/reportProject.d.ts.map +1 -0
- package/dist/utils/reportProject.js +9 -0
- package/dist/utils/reportProject.js.map +1 -0
- package/dist/utils/reportTeam.d.ts +15 -0
- package/dist/utils/reportTeam.d.ts.map +1 -0
- package/dist/utils/reportTeam.js +8 -0
- package/dist/utils/reportTeam.js.map +1 -0
- package/dist/utils/reportUi.d.ts +24 -0
- package/dist/utils/reportUi.d.ts.map +1 -0
- package/dist/utils/reportUi.js +19 -0
- package/dist/utils/reportUi.js.map +1 -0
- package/dist/utils/reportVisibility.d.ts +19 -0
- package/dist/utils/reportVisibility.d.ts.map +1 -0
- package/dist/utils/reportVisibility.js +12 -0
- package/dist/utils/reportVisibility.js.map +1 -0
- package/dist/utils/reportVisual.d.ts +12 -0
- package/dist/utils/reportVisual.d.ts.map +1 -0
- package/dist/utils/reportVisual.js +31 -0
- package/dist/utils/reportVisual.js.map +1 -0
- package/dist/utils/routeDetailStatus.d.ts +7 -0
- package/dist/utils/routeDetailStatus.d.ts.map +1 -0
- package/dist/utils/routeDetailStatus.js +29 -0
- package/dist/utils/routeDetailStatus.js.map +1 -0
- package/dist/utils/shortcuts.d.ts +12 -0
- package/dist/utils/shortcuts.d.ts.map +1 -0
- package/dist/utils/shortcuts.js +59 -0
- package/dist/utils/shortcuts.js.map +1 -0
- package/dist/utils/storage.d.ts +17 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +36 -0
- package/dist/utils/storage.js.map +1 -0
- package/dist/utils/validateFeedbackImport.d.ts +4 -0
- package/dist/utils/validateFeedbackImport.d.ts.map +1 -0
- package/dist/utils/validateFeedbackImport.js +187 -0
- package/dist/utils/validateFeedbackImport.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { panelAnchorSide, placementToCollapsedPanelStyle, usePanelDock } from "../../hooks/usePanelDock.js";
|
|
4
|
+
import { usePanelFeedbackTransfer } from "../../hooks/usePanelFeedbackTransfer.js";
|
|
5
|
+
import { useReport } from "../../providers/reportContext.js";
|
|
6
|
+
import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, EyeOpenIcon, LogoIcon, RouteWaitStatusIcon, SelectIcon } from "../../components/icons/Icons.js";
|
|
7
|
+
import { IconTooltipButton } from "../../components/ui/IconTooltipButton.js";
|
|
8
|
+
import { HoverTooltip } from "../../components/ui/HoverTooltip.js";
|
|
9
|
+
import { PanelDockGuides } from "./PanelDockGuides.js";
|
|
10
|
+
import { ReportFeedbackList } from "./ReportFeedbackList.js";
|
|
11
|
+
import { ReportRouteDetails } from "./ReportRouteDetails.js";
|
|
12
|
+
import { ReportCommandPanel } from "./ReportCommandPanel.js";
|
|
13
|
+
import { ReportCommandReplaceConfirmDialog } from "./ReportCommandReplaceConfirmDialog.js";
|
|
14
|
+
import { ReportImportConfirmDialog } from "./ReportImportConfirmDialog.js";
|
|
15
|
+
import { ReportImportProjectMismatchDialog } from "./ReportImportProjectMismatchDialog.js";
|
|
16
|
+
import { ReportPersonalKeyDialog } from "./ReportPersonalKeyDialog.js";
|
|
17
|
+
import { PanelMoreMenu } from "./PanelMoreMenu.js";
|
|
18
|
+
import { formatStatCount } from "../../utils/formatStatCount.js";
|
|
19
|
+
import { panelNumericClassName } from "../../utils/panelTypography.js";
|
|
20
|
+
function PanelCollapseTab({ collapsed, anchorSide, onClick, messages }) {
|
|
21
|
+
const hideIcon = anchorSide === "right" ? _jsx(ChevronRightIcon, { className: "h-4 w-4" }) : _jsx(ChevronLeftIcon, { className: "h-4 w-4" });
|
|
22
|
+
const expandIcon = anchorSide === "right" ? _jsx(ChevronLeftIcon, { className: "h-4 w-4" }) : _jsx(ChevronRightIcon, { className: "h-4 w-4" });
|
|
23
|
+
return (_jsx(HoverTooltip, { label: collapsed ? messages.panel.expand : messages.panel.collapse, children: _jsx("button", { type: "button", onClick: onClick, "aria-expanded": !collapsed, "aria-label": collapsed ? messages.panel.expand : messages.panel.collapse, className: collapsed
|
|
24
|
+
? anchorSide === "right"
|
|
25
|
+
? "flex h-[105px] w-[32px] items-center justify-center rounded-l-[12px] rounded-r-none bg-[var(--adaptive-black200)] text-[var(--adaptive-blue500)] shadow-[0_0_24px_0_rgba(0,0,0,0.35)]"
|
|
26
|
+
: "flex h-[105px] w-[32px] items-center justify-center rounded-r-[12px] rounded-l-none bg-[var(--adaptive-black200)] text-[var(--adaptive-blue500)] shadow-[0_0_24px_0_rgba(0,0,0,0.35)]"
|
|
27
|
+
: "flex items-center justify-center px-[4px] py-[8px] text-[var(--adaptive-text-muted)]", children: collapsed ? expandIcon : hideIcon }) }));
|
|
28
|
+
}
|
|
29
|
+
function PanelTabButton({ label, active, onClick }) {
|
|
30
|
+
return (_jsxs("button", { type: "button", onClick: onClick, className: `flex flex-1 items-center justify-center gap-[6px] px-[10px] py-[2px] ${active ? "bg-[var(--adaptive-black100)] text-[var(--adaptive-black900)]" : "text-[var(--adaptive-black600)]"}`, children: [_jsx("p", { className: "font-[500]", children: label }), _jsx(ChevronDownIcon, { className: `h-4 w-4 shrink-0 transition-transform ${active ? "rotate-180" : ""}` })] }));
|
|
31
|
+
}
|
|
32
|
+
function EnvironmentBadge({ environment }) {
|
|
33
|
+
if (!environment) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return (_jsxs("span", { className: "inline-flex items-center gap-[4px] rounded-full border border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-black50)] px-[4px] py-[2px]", children: [_jsx("span", { className: "text-[12px] text-[var(--adaptive-black500)]", children: environment }), _jsx("span", { className: "inline-flex h-[4px] w-[4px] rounded-full bg-[var(--adaptive-green500)]", "aria-hidden": true })] }));
|
|
37
|
+
}
|
|
38
|
+
const RECORDING_STATUS_SHADOW = "drop-shadow(0 1px 2px rgba(0,0,0,0.95)) drop-shadow(0 2px 6px rgba(0,0,0,0.9)) drop-shadow(0 4px 16px rgba(0,0,0,0.85)) drop-shadow(0 0 24px rgba(0,0,0,0.75))";
|
|
39
|
+
export function ReportControlPanel() {
|
|
40
|
+
const { mode, targetStats, statusText, errorMessage, environment, projectId, appVersion, showFeedbackList, showTargetPreview, isMobileViewport, panelTab, appearance, setAppearance, canTransferFeedback, personalKey, publicKey, personalKeyRequired, personalKeyPendingRegistration, messages, toggleReportMode, toggleTargetPreview, toggleIssueMode, openPanelTab, setErrorMessage, refetch, } = useReport();
|
|
41
|
+
const [panelCollapsed, setPanelCollapsed] = useState(false);
|
|
42
|
+
const [moreMenuOpen, setMoreMenuOpen] = useState(false);
|
|
43
|
+
const [personalKeyStep, setPersonalKeyStep] = useState("none");
|
|
44
|
+
const [personalKeyNotice, setPersonalKeyNotice] = useState("");
|
|
45
|
+
const isRecording = mode === "report";
|
|
46
|
+
const isIssueMode = mode === "view";
|
|
47
|
+
const transferScope = { projectId, environment, appVersion };
|
|
48
|
+
const { isDragOver, pendingImport, importStep, pendingCommand, commandConflicts, commandStep, commandNotice, setCommandNotice, handleExport, handleImportFromMenu, handleOpenCommand, handleCloseCommand, handleCommandExecute, handleCancelCommandReplace, handleConfirmCommandReplace, handleCancelImport, handleProceedImportAfterMismatch, handleApplyImport, handleBackupAndApplyImport, handleDragEnter, handleDragLeave, handleDragOver, handleDrop, } = usePanelFeedbackTransfer({
|
|
49
|
+
transferScope,
|
|
50
|
+
canTransferFeedback,
|
|
51
|
+
messages,
|
|
52
|
+
setErrorMessage,
|
|
53
|
+
refetch,
|
|
54
|
+
openPanelTab,
|
|
55
|
+
onMoreMenuClose: () => setMoreMenuOpen(false),
|
|
56
|
+
isRecording,
|
|
57
|
+
});
|
|
58
|
+
const { panelRef, panelStyle, placementCorner, isDragging, activeCorner, handleDragHandlePointerDown } = usePanelDock({
|
|
59
|
+
enabled: !isMobileViewport,
|
|
60
|
+
measureKey: `${panelCollapsed}-${isRecording}-${panelTab ?? "none"}-${isIssueMode}-${importStep !== "none" ? "import" : "none"}-${commandStep !== "none" ? "command" : "none"}`,
|
|
61
|
+
});
|
|
62
|
+
const anchorSide = panelAnchorSide(placementCorner);
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
if (personalKeyRequired && !personalKey) {
|
|
65
|
+
setPersonalKeyStep("required");
|
|
66
|
+
}
|
|
67
|
+
}, [personalKey, personalKeyRequired]);
|
|
68
|
+
const handleKeyCopy = async () => {
|
|
69
|
+
if (!personalKey) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
await navigator.clipboard.writeText(personalKey);
|
|
74
|
+
setPersonalKeyNotice(messages.personalKey.copySuccess);
|
|
75
|
+
setMoreMenuOpen(false);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
setErrorMessage(messages.errors.clipboardCopyFailed);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const handlePublicKeyCopy = async () => {
|
|
82
|
+
if (!publicKey) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
await navigator.clipboard.writeText(publicKey);
|
|
87
|
+
setPersonalKeyNotice(messages.personalKey.publicKeyCopied);
|
|
88
|
+
setMoreMenuOpen(false);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
setErrorMessage(messages.errors.clipboardCopyFailed);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const handlePanelTabClick = (tab) => {
|
|
95
|
+
openPanelTab(tab);
|
|
96
|
+
};
|
|
97
|
+
const handleTogglePanelCollapsed = () => {
|
|
98
|
+
setMoreMenuOpen(false);
|
|
99
|
+
setPanelCollapsed((current) => !current);
|
|
100
|
+
};
|
|
101
|
+
const resolvedPanelStyle = panelCollapsed && !isRecording ? placementToCollapsedPanelStyle({ corner: placementCorner }) : panelStyle;
|
|
102
|
+
return (_jsxs(_Fragment, { children: [_jsx(PanelDockGuides, { visible: isDragging, activeCorner: activeCorner }), _jsx("div", { ref: panelRef, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, onDragOver: handleDragOver, onDrop: handleDrop, className: `pointer-events-auto fixed z-[1000000] flex ${isRecording
|
|
103
|
+
? "min-h-[40px] bg-[var(--adaptive-surface-overlay)] p-[4px] backdrop-blur-[50px] rounded-[12px] shadow-[0_0_120px_0_var(--adaptive-blackOpacity500)]"
|
|
104
|
+
: panelCollapsed
|
|
105
|
+
? ""
|
|
106
|
+
: "max-h-[calc(100svh-(16px*2))] max-w-[calc(100svw-(16px*2))] bg-[var(--adaptive-surface-overlay)] backdrop-blur-[50px] rounded-[12px] shadow-[0_0_120px_0_var(--adaptive-blackOpacity500)]"}`, style: { ...resolvedPanelStyle, fontSize: "14px" }, children: _jsx("div", { className: panelCollapsed && !isRecording ? "flex shrink-0" : "flex min-w-0 flex-1 flex-col w-full", children: isRecording ? (_jsxs("section", { className: "flex items-center justify-between gap-[16px] px-[12px] py-[8px]", children: [_jsx("section", { className: "flex items-center gap-[4px] justify-start shrink-0", children: _jsx(LogoIcon, { className: "w-[94px]" }) }), _jsx("button", { type: "button", onClick: toggleReportMode, className: "flex items-center shrink-0", children: _jsx("p", { className: "text-[14px] font-bold text-[var(--adaptive-blue500)]", children: messages.panel.stopFeedback }) })] })) : panelCollapsed ? (_jsx(PanelCollapseTab, { collapsed: panelCollapsed, anchorSide: anchorSide, onClick: handleTogglePanelCollapsed, messages: messages })) : (_jsx(_Fragment, { children: _jsxs("section", { className: "relative flex min-w-0 flex-1 flex-col h-full", children: [isDragOver ? (_jsx("div", { className: "pointer-events-none absolute inset-0 z-[30] flex items-center justify-center rounded-[12px] bg-[#dbeafe]/90 px-[16px] text-center backdrop-blur-[2px]", children: _jsx("p", { className: "text-[14px] font-bold text-[var(--adaptive-blue500)]", children: messages.panel.importDragOverlay }) })) : null, _jsxs("section", { className: "flex", children: [anchorSide === "left" ? (_jsx(PanelCollapseTab, { collapsed: panelCollapsed, anchorSide: anchorSide, onClick: handleTogglePanelCollapsed, messages: messages })) : null, _jsxs("div", { className: "flex flex-col gap-[8px] p-[8px_8px_8px_12px] flex-1", children: [_jsxs("section", { className: "flex items-center justify-between gap-[8px]", children: [_jsx("section", { className: "flex min-w-0 items-center gap-[4px]", children: _jsx(LogoIcon, { className: "w-[94px] shrink-0" }) }), _jsxs("section", { className: "flex shrink-0 items-center gap-[4px]", children: [_jsxs("button", { type: "button", onClick: toggleReportMode, className: "flex items-center gap-[4px] rounded-[8px] bg-[var(--adaptive-black100)] p-[0_8px] h-[24px]", children: [_jsx(SelectIcon, { className: "w-[16px]" }), _jsx("p", { className: "text-[12px] text-[var(--adaptive-black900)]", children: messages.panel.addFeedback })] }), _jsx(IconTooltipButton, { label: messages.panel.viewSelectableElements, active: showTargetPreview, disabled: mode !== "idle", onClick: toggleTargetPreview, children: _jsx(EyeOpenIcon, { className: "h-[16px] w-[16px]" }) }), _jsx(IconTooltipButton, { label: messages.panel.viewFeedbacks, active: isIssueMode, onClick: toggleIssueMode, children: _jsx(RouteWaitStatusIcon, { className: "h-[16px] w-[16px]" }) })] })] }), _jsx("section", { className: "flex gap-[12px]", children: _jsxs("section", { className: "flex cursor-move flex-1", onPointerDown: handleDragHandlePointerDown, "aria-label": messages.panel.repositionAriaLabel, title: messages.panel.repositionTitle, style: isDragging ? { opacity: 0.8 } : undefined, children: [_jsxs("section", { className: "flex flex-col items-start gap-[4px] flex-1", children: [_jsx("p", { className: "text-[12px] text-[var(--adaptive-black500)]", children: messages.panel.statsFound }), _jsx("p", { className: `text-[14px] font-semibold text-[var(--adaptive-black900)] ${panelNumericClassName}`, children: formatStatCount(targetStats.found) })] }), _jsxs("section", { className: "flex flex-col items-start gap-[4px] flex-1", children: [_jsx("p", { className: "text-[12px] text-[var(--adaptive-black500)]", children: messages.panel.statsGroup }), _jsx("p", { className: `text-[14px] font-semibold text-[var(--adaptive-black900)] ${panelNumericClassName}`, children: formatStatCount(targetStats.group) })] }), _jsxs("section", { className: "flex flex-col items-start gap-[4px] flex-1", children: [_jsx("p", { className: "text-[12px] text-[var(--adaptive-black500)]", children: messages.panel.statsItem }), _jsx("p", { className: `text-[14px] font-semibold text-[var(--adaptive-black900)] ${panelNumericClassName}`, children: formatStatCount(targetStats.item) })] })] }) })] }), anchorSide === "right" ? (_jsx(PanelCollapseTab, { collapsed: panelCollapsed, anchorSide: anchorSide, onClick: handleTogglePanelCollapsed, messages: messages })) : null] }), _jsxs("section", { className: "flex items-stretch border-t border-[var(--adaptive-border-subtle)]", children: [_jsxs("div", { className: "flex min-w-0 flex-1 overflow-hidden", children: [_jsx(PanelTabButton, { label: messages.panel.tabPageDetails, active: panelTab === "route-details", onClick: () => handlePanelTabClick("route-details") }), _jsx("div", { className: "h-full w-[1px] bg-[var(--adaptive-border-subtle)]" }), showFeedbackList ? (_jsx(PanelTabButton, { label: messages.panel.tabFeedbackList, active: panelTab === "feedback-list", onClick: () => handlePanelTabClick("feedback-list") })) : null] }), _jsx("div", { className: "h-full w-[1px] bg-[var(--adaptive-border-subtle)]" }), _jsx(PanelMoreMenu, { open: moreMenuOpen, transferDisabled: !canTransferFeedback, appearance: appearance, onAppearanceChange: setAppearance, onToggle: () => setMoreMenuOpen((current) => !current), onClose: () => setMoreMenuOpen(false), onExport: handleExport, onImport: handleImportFromMenu, onCommand: handleOpenCommand, hasPersonalKey: Boolean(personalKey), onKeyCopy: () => void handleKeyCopy(), onPublicKeyCopy: () => void handlePublicKeyCopy(), onKeyInsert: () => {
|
|
107
|
+
setMoreMenuOpen(false);
|
|
108
|
+
setPersonalKeyStep("insert");
|
|
109
|
+
setPersonalKeyNotice("");
|
|
110
|
+
}, onKeyRotate: () => {
|
|
111
|
+
setMoreMenuOpen(false);
|
|
112
|
+
setPersonalKeyStep("rotate");
|
|
113
|
+
setPersonalKeyNotice("");
|
|
114
|
+
} })] }), errorMessage && importStep === "none" && commandStep === "none" ? _jsx("p", { className: "px-[8px] text-[12px] text-rose-700", children: errorMessage }) : null, personalKeyNotice ? _jsx("p", { className: "px-[8px] py-[4px] text-[12px] text-[var(--adaptive-green500)]", children: personalKeyNotice }) : null, personalKeyPendingRegistration ? _jsx("p", { className: "px-[8px] py-[4px] text-[12px] text-amber-700", children: messages.personalKey.registrationPending }) : null, personalKeyStep !== "none" ? (_jsx(ReportPersonalKeyDialog, { mode: personalKeyStep, onCancel: () => setPersonalKeyStep("none"), onComplete: (message) => {
|
|
115
|
+
setPersonalKeyNotice(message);
|
|
116
|
+
setPersonalKeyStep("none");
|
|
117
|
+
} })) : null, personalKeyStep === "none" && importStep === "project-mismatch" && pendingImport ? (_jsx(ReportImportProjectMismatchDialog, { currentProject: transferScope, importedProject: pendingImport.project, exportedAt: pendingImport.exportedAt, onProceed: handleProceedImportAfterMismatch, onCancel: handleCancelImport })) : null, personalKeyStep === "none" && importStep === "confirm" && pendingImport ? (_jsx(ReportImportConfirmDialog, { onApply: handleApplyImport, onCancel: handleCancelImport, onBackupAndApply: handleBackupAndApplyImport })) : null, personalKeyStep === "none" && panelTab === "route-details" && importStep === "none" && commandStep === "none" ? _jsx(ReportRouteDetails, {}) : null, personalKeyStep === "none" && panelTab === "feedback-list" && showFeedbackList && importStep === "none" && commandStep === "none" ? _jsx(ReportFeedbackList, {}) : null, personalKeyStep === "none" && commandStep === "replace-confirm" && pendingCommand ? (_jsx(ReportCommandReplaceConfirmDialog, { conflicts: commandConflicts, onConfirm: handleConfirmCommandReplace, onCancel: handleCancelCommandReplace })) : null, personalKeyStep === "none" && panelTab === "command" && importStep === "none" && commandStep === "none" ? (_jsx(ReportCommandPanel, { onExecute: handleCommandExecute, onClose: handleCloseCommand, notice: commandNotice, onNoticeClear: () => setCommandNotice(null) })) : null] }) })) }) })] }));
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=ReportControlPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportControlPanel.js","sourceRoot":"","sources":["../../../src/components/panel/ReportControlPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportDraftForm.d.ts","sourceRoot":"","sources":["../../../src/components/panel/ReportDraftForm.tsx"],"names":[],"mappings":"AASA,wBAAgB,eAAe,mDAsC9B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useTooltipLayout } from "../../hooks/useTooltipLayout.js";
|
|
4
|
+
import { useReport } from "../../providers/reportContext.js";
|
|
5
|
+
import { getDraftMarkerPosition } from "../../utils/coordinates.js";
|
|
6
|
+
import { FeedbackComposer } from "./feedback/FeedbackComposer.js";
|
|
7
|
+
const TOOLTIP_SURFACE_CLASS = "overflow-hidden rounded-[12px] border border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-black50)] shadow-[var(--adaptive-popup-shadow)] backdrop-blur-[20px]";
|
|
8
|
+
const EXPANDED_TOOLTIP_ANCHOR_CLASS = "pointer-events-auto fixed z-[1000001]";
|
|
9
|
+
export function ReportDraftForm() {
|
|
10
|
+
const { draft, fields, authors, isCreating, selectedTarget, updateDraftMessage, updateDraftField, handleCreateSubmit, handleCreateSubmitWithGitHubIssue, canCreateGitHubIssueOnCreate, isDraftGitHubIssueSubmitting, draftAuthorName, setDraftAuthorName, } = useReport();
|
|
11
|
+
if (!draft) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
return (_jsx(ReportDraftFormContent, { draft: draft, fields: fields, authors: authors, isCreating: isCreating, selectedTarget: selectedTarget, updateDraftMessage: updateDraftMessage, updateDraftField: updateDraftField, handleCreateSubmit: handleCreateSubmit, handleCreateSubmitWithGitHubIssue: handleCreateSubmitWithGitHubIssue, canCreateGitHubIssueOnCreate: canCreateGitHubIssueOnCreate, isDraftGitHubIssueSubmitting: isDraftGitHubIssueSubmitting, draftAuthorName: draftAuthorName, setDraftAuthorName: setDraftAuthorName }));
|
|
15
|
+
}
|
|
16
|
+
function ReportDraftFormContent({ draft, fields, authors, isCreating, selectedTarget, updateDraftMessage, updateDraftField, handleCreateSubmit, handleCreateSubmitWithGitHubIssue, canCreateGitHubIssueOnCreate, isDraftGitHubIssueSubmitting, draftAuthorName, setDraftAuthorName, }) {
|
|
17
|
+
const anchor = useMemo(() => getDraftMarkerPosition(draft, selectedTarget), [draft, selectedTarget]);
|
|
18
|
+
const { layout: tooltipLayout, setTooltipElement } = useTooltipLayout(anchor, true, true);
|
|
19
|
+
const tooltipPosition = tooltipLayout?.position ?? null;
|
|
20
|
+
const tooltipAnchorStyle = tooltipLayout?.anchorStyle;
|
|
21
|
+
if (!tooltipPosition || !tooltipAnchorStyle) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return (_jsx("div", { ref: setTooltipElement, "data-fivepixels-interactive": "", onClick: (event) => event.stopPropagation(), className: EXPANDED_TOOLTIP_ANCHOR_CLASS, style: {
|
|
25
|
+
left: tooltipPosition.left,
|
|
26
|
+
top: tooltipPosition.top,
|
|
27
|
+
width: tooltipPosition.width,
|
|
28
|
+
...tooltipAnchorStyle,
|
|
29
|
+
}, children: _jsx("div", { className: TOOLTIP_SURFACE_CLASS, style: {
|
|
30
|
+
pointerEvents: "auto",
|
|
31
|
+
}, children: _jsx(FeedbackComposer, { message: draft.message, onMessageChange: updateDraftMessage, authorName: draftAuthorName, onAuthorNameChange: setDraftAuthorName, authors: authors, fields: fields, fieldValues: draft.fieldValues, onFieldChange: updateDraftField, showTags: true, onSubmit: () => void handleCreateSubmit(), isSubmitting: isCreating, showGitHubIssueOnCreate: canCreateGitHubIssueOnCreate, onGitHubIssueSubmit: () => void handleCreateSubmitWithGitHubIssue(), isGitHubIssueSubmitting: isDraftGitHubIssueSubmitting, autoFocus: true }) }) }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ReportDraftForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportDraftForm.js","sourceRoot":"","sources":["../../../src/components/panel/ReportDraftForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportFeedbackList.d.ts","sourceRoot":"","sources":["../../../src/components/panel/ReportFeedbackList.tsx"],"names":[],"mappings":"AAsIA,wBAAgB,kBAAkB,4CA2VjC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { REPORT_SHORTCUTS } from "../../constants/reportShortcuts.js";
|
|
4
|
+
import { useReport } from "../../providers/reportContext.js";
|
|
5
|
+
import { formatDateOnly, formatTimeOnly } from "../../utils/format.js";
|
|
6
|
+
import { getFieldTags } from "../../utils/fields.js";
|
|
7
|
+
import { getFeedbackDisplayStatus } from "../../utils/feedbackThread.js";
|
|
8
|
+
import { ShortcutHint } from "../../components/ShortcutHint.js";
|
|
9
|
+
import { HoverTooltip } from "../../components/ui/HoverTooltip.js";
|
|
10
|
+
import { FeedbackFieldTags } from "./feedback/FeedbackFieldTags.js";
|
|
11
|
+
import { FeedbackStatusBadge } from "./feedback/FeedbackStatusBadge.js";
|
|
12
|
+
import { SearchIcon, CopyIcon, TrashIcon, ChevronDownIcon } from "../../components/icons/Icons.js";
|
|
13
|
+
import { copyTextToClipboard, serializeFeedbackItem } from "../../utils/feedbackDataTransfer.js";
|
|
14
|
+
import { PanelDropdownMenu, PanelDropdownMenuItem } from "./PanelDropdownMenu.js";
|
|
15
|
+
import { GitIssueButton } from "./feedback/GitIssueButton.js";
|
|
16
|
+
const FEEDBACK_PAGE_SIZE = 20;
|
|
17
|
+
function getDateGroupKey(value) {
|
|
18
|
+
const date = new Date(value);
|
|
19
|
+
const year = date.getFullYear();
|
|
20
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
21
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
22
|
+
return `${year}-${month}-${day}`;
|
|
23
|
+
}
|
|
24
|
+
function groupReportsByDate(reports, locale) {
|
|
25
|
+
const groups = [];
|
|
26
|
+
const groupMap = new Map();
|
|
27
|
+
for (const report of reports) {
|
|
28
|
+
const dateKey = getDateGroupKey(report.created_at);
|
|
29
|
+
const existing = groupMap.get(dateKey);
|
|
30
|
+
if (existing) {
|
|
31
|
+
existing.push(report);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
groupMap.set(dateKey, [report]);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const [dateKey, groupedReports] of groupMap) {
|
|
38
|
+
groups.push({
|
|
39
|
+
dateKey,
|
|
40
|
+
label: formatDateOnly(groupedReports[0].created_at, locale),
|
|
41
|
+
reports: groupedReports,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return groups;
|
|
45
|
+
}
|
|
46
|
+
function FeedbackListDeleteButton({ report, onDelete, disabled = false, messages }) {
|
|
47
|
+
const [confirming, setConfirming] = useState(false);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (!confirming) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const timer = window.setTimeout(() => setConfirming(false), 1500);
|
|
53
|
+
return () => {
|
|
54
|
+
window.clearTimeout(timer);
|
|
55
|
+
};
|
|
56
|
+
}, [confirming]);
|
|
57
|
+
const handleDelete = (event) => {
|
|
58
|
+
event.stopPropagation();
|
|
59
|
+
if (!confirming) {
|
|
60
|
+
setConfirming(true);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
void onDelete(report.id).finally(() => {
|
|
64
|
+
setConfirming(false);
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
return (_jsx(HoverTooltip, { label: confirming ? messages.feedbackList.deleteConfirmTitle : messages.feedbackList.deleteTitle, children: _jsxs("button", { type: "button", "data-fivepixels-interactive": "", onClick: handleDelete, disabled: disabled, "aria-label": confirming ? messages.feedbackList.deleteConfirmAriaLabel : messages.feedbackList.deleteAriaLabel, className: `flex shrink-0 items-center justify-center gap-[2px] self-start rounded-[6px] p-[6px] disabled:opacity-50 ${confirming ? "text-rose-700 hover:bg-rose-50" : "text-[var(--adaptive-black500)] hover:bg-[var(--adaptive-black100)] hover:text-rose-700"}`, children: [_jsx(TrashIcon, { className: "h-[16px] w-[16px]" }), confirming ? _jsx("span", { className: "text-[10px] font-semibold", children: messages.feedbackList.deleteConfirmLabel }) : null] }) }));
|
|
68
|
+
}
|
|
69
|
+
function FeedbackListCopyButton({ report, messages }) {
|
|
70
|
+
const [copied, setCopied] = useState(false);
|
|
71
|
+
const handleCopy = (event) => {
|
|
72
|
+
event.stopPropagation();
|
|
73
|
+
void copyTextToClipboard(serializeFeedbackItem(report))
|
|
74
|
+
.then(() => {
|
|
75
|
+
setCopied(true);
|
|
76
|
+
window.setTimeout(() => setCopied(false), 1500);
|
|
77
|
+
})
|
|
78
|
+
.catch(() => {
|
|
79
|
+
setCopied(false);
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
return (_jsx(HoverTooltip, { label: copied ? messages.feedbackList.copiedTitle : messages.feedbackList.copyTitle, children: _jsx("button", { type: "button", "data-fivepixels-interactive": "", onClick: handleCopy, "aria-label": messages.feedbackList.copyAriaLabel, className: "flex shrink-0 items-center justify-center self-start rounded-[6px] p-[6px] text-[var(--adaptive-black500)] hover:bg-[var(--adaptive-black100)] hover:text-[var(--adaptive-black800)]", children: copied ? _jsx("span", { className: "text-[10px] font-semibold text-[var(--adaptive-blue500)]", children: messages.common.ok }) : _jsx(CopyIcon, { className: "h-[16px] w-[16px]" }) }) }));
|
|
83
|
+
}
|
|
84
|
+
export function ReportFeedbackList() {
|
|
85
|
+
const { filters, setFilters, filteredReports, reports, listScope, setListScope, canListAllFeedback, fields, locale, messages, isError, isFetching, hasNextPage, isFetchingNextPage, fetchNextPage, isDeleting, queryErrorMessage, visibleShortcutKeys, searchInputRef, locateFeedback, refetch, handleDelete, canCreateGitHubIssueFromList, creatingGitHubIssueId, handleCreateGitHubIssue, } = useReport();
|
|
86
|
+
const [visibleCount, setVisibleCount] = useState(FEEDBACK_PAGE_SIZE);
|
|
87
|
+
const [expandedGroups, setExpandedGroups] = useState(() => new Set());
|
|
88
|
+
const [statusMenuOpen, setStatusMenuOpen] = useState(false);
|
|
89
|
+
const [reportTypeMenuOpen, setReportTypeMenuOpen] = useState(false);
|
|
90
|
+
const loadMoreRef = useRef(null);
|
|
91
|
+
const statusLabel = filters.status === "all" ? messages.feedbackList.filterStatusAll : messages.status.routeDetail[filters.status];
|
|
92
|
+
const reportTypeLabel = filters.reportType === "all" ? messages.feedbackList.filterTypeAll : filters.reportType === "item" ? messages.feedbackList.reportTypeItem : messages.feedbackList.reportTypeGroup;
|
|
93
|
+
const visibleReports = useMemo(() => filteredReports.slice(0, visibleCount), [filteredReports, visibleCount]);
|
|
94
|
+
const groupedReports = useMemo(() => groupReportsByDate(visibleReports, locale), [locale, visibleReports]);
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
setVisibleCount(FEEDBACK_PAGE_SIZE);
|
|
97
|
+
}, [filters.keyword, filters.reportType, filters.status, listScope, reports.length]);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
const firstGroupKey = groupedReports[0]?.dateKey;
|
|
100
|
+
if (firstGroupKey) {
|
|
101
|
+
setExpandedGroups(new Set([firstGroupKey]));
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
setExpandedGroups(new Set());
|
|
105
|
+
}
|
|
106
|
+
}, [filters.keyword, filters.reportType, filters.status, listScope, reports.length]);
|
|
107
|
+
const toggleGroup = (dateKey) => {
|
|
108
|
+
setExpandedGroups((current) => {
|
|
109
|
+
const next = new Set(current);
|
|
110
|
+
if (next.has(dateKey)) {
|
|
111
|
+
next.delete(dateKey);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
next.add(dateKey);
|
|
115
|
+
}
|
|
116
|
+
return next;
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
const node = loadMoreRef.current;
|
|
121
|
+
if (!node || (visibleCount >= filteredReports.length && !hasNextPage)) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const observer = new IntersectionObserver((entries) => {
|
|
125
|
+
if (entries.some((entry) => entry.isIntersecting)) {
|
|
126
|
+
if (visibleCount < filteredReports.length) {
|
|
127
|
+
setVisibleCount((current) => Math.min(current + FEEDBACK_PAGE_SIZE, filteredReports.length));
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
void fetchNextPage();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}, { root: node.parentElement, rootMargin: "120px" });
|
|
134
|
+
observer.observe(node);
|
|
135
|
+
return () => {
|
|
136
|
+
observer.disconnect();
|
|
137
|
+
};
|
|
138
|
+
}, [fetchNextPage, filteredReports.length, hasNextPage, visibleCount]);
|
|
139
|
+
return (_jsxs("section", { className: "flex min-h-0 flex-1 flex-col bg-[var(--adaptive-black50)] rounded-[0_0_24px_24px]", children: [canListAllFeedback ? (_jsx("div", { className: "flex border-t border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-black50)] p-[4px]", role: "group", "aria-label": messages.feedbackList.scopeAriaLabel, children: ["current", "all"].map((scope) => (_jsx("button", { type: "button", "aria-pressed": listScope === scope, onClick: () => setListScope(scope), className: `flex-1 rounded-[6px] px-[8px] py-[4px] text-[12px] font-[600] ${listScope === scope ? "bg-[var(--adaptive-black200)] text-[var(--adaptive-black900)]" : "text-[var(--adaptive-black500)] hover:bg-[var(--adaptive-black100)]"}`, children: scope === "current" ? messages.feedbackList.scopeCurrentPage : messages.feedbackList.scopeAllPages }, scope))) })) : null, _jsxs("div", { className: "flex bg-[var(--adaptive-black50)] border-y border-y-[var(--adaptive-border-subtle)]", children: [_jsxs("section", { className: "flex flex-1 items-center gap-[4px]", children: [_jsxs(PanelDropdownMenu, { open: statusMenuOpen, onClose: () => setStatusMenuOpen(false), align: "left", trigger: _jsxs("button", { type: "button", onClick: () => setStatusMenuOpen((current) => !current), "aria-expanded": statusMenuOpen, "aria-haspopup": "menu", "aria-label": messages.feedbackList.filterStatusAriaLabel, className: "flex items-center gap-[4px] px-[8px] text-[12px] text-[var(--adaptive-black800)] outline-none", children: [_jsx("span", { children: statusLabel }), _jsx(ChevronDownIcon, { className: `h-[14px] w-[14px] text-[var(--adaptive-black600)] transition-transform ${statusMenuOpen ? "rotate-180" : ""}` })] }), children: [_jsx(PanelDropdownMenuItem, { active: filters.status === "all", onClick: () => {
|
|
140
|
+
setStatusMenuOpen(false);
|
|
141
|
+
setFilters((current) => ({ ...current, status: "all" }));
|
|
142
|
+
}, children: messages.feedbackList.filterStatusAll }), Object.keys(messages.status.routeDetail).map((status) => (_jsx(PanelDropdownMenuItem, { active: filters.status === status, onClick: () => {
|
|
143
|
+
setStatusMenuOpen(false);
|
|
144
|
+
setFilters((current) => ({ ...current, status }));
|
|
145
|
+
}, children: messages.status.routeDetail[status] }, status)))] }), _jsxs(PanelDropdownMenu, { open: reportTypeMenuOpen, onClose: () => setReportTypeMenuOpen(false), align: "left", trigger: _jsxs("button", { type: "button", onClick: () => setReportTypeMenuOpen((current) => !current), "aria-expanded": reportTypeMenuOpen, "aria-haspopup": "menu", "aria-label": messages.feedbackList.filterTypeAriaLabel, className: "flex items-center gap-[4px] px-[8px] text-[12px] text-[var(--adaptive-black800)] outline-none", children: [_jsx("span", { children: reportTypeLabel }), _jsx(ChevronDownIcon, { className: `h-[14px] w-[14px] text-[var(--adaptive-black600)] transition-transform ${reportTypeMenuOpen ? "rotate-180" : ""}` })] }), children: [_jsx(PanelDropdownMenuItem, { active: filters.reportType === "all", onClick: () => {
|
|
146
|
+
setReportTypeMenuOpen(false);
|
|
147
|
+
setFilters((current) => ({ ...current, reportType: "all" }));
|
|
148
|
+
}, children: messages.feedbackList.filterTypeAll }), _jsx(PanelDropdownMenuItem, { active: filters.reportType === "item", onClick: () => {
|
|
149
|
+
setReportTypeMenuOpen(false);
|
|
150
|
+
setFilters((current) => ({ ...current, reportType: "item" }));
|
|
151
|
+
}, children: messages.feedbackList.reportTypeItem }), _jsx(PanelDropdownMenuItem, { active: filters.reportType === "group", onClick: () => {
|
|
152
|
+
setReportTypeMenuOpen(false);
|
|
153
|
+
setFilters((current) => ({ ...current, reportType: "group" }));
|
|
154
|
+
}, children: messages.feedbackList.reportTypeGroup })] })] }), _jsxs("section", { className: "flex-1 relative", children: [_jsx("input", { ref: searchInputRef, value: filters.keyword, onChange: (event) => setFilters((current) => ({ ...current, keyword: event.target.value })), placeholder: messages.feedbackList.searchPlaceholder, className: "h-[32px] w-full rounded-[8px] px-[8px] pr-[30px] text-[12px] text-[var(--adaptive-black800)] outline-none" }), _jsx(SearchIcon, { className: "pointer-events-none absolute right-[8px] top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--adaptive-black500)]" }), _jsx("div", { className: "absolute right-[30px] top-1/2 -translate-y-1/2", children: _jsx(ShortcutHint, { binding: REPORT_SHORTCUTS.focusSearch, visible: visibleShortcutKeys }) })] })] }), _jsxs("div", { className: "min-h-0 flex-1 overflow-y-auto bg-[var(--adaptive-black50)] rounded-[0_0_24px_24px]", children: [isError ? (_jsxs("div", { className: "space-y-1 rounded-md border border-[var(--adaptive-border-subtle)] bg-rose-50 p-2 text-xs text-rose-800", children: [_jsx("strong", { className: "text-sm font-semibold", children: messages.feedbackList.loadFailedTitle }), _jsx("p", { children: queryErrorMessage ?? messages.feedbackList.loadFailedRetry }), _jsx("button", { type: "button", onClick: () => void refetch(), className: "inline-flex items-center justify-center rounded-md border border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-surface)] px-3 py-1 text-xs font-medium text-[var(--adaptive-text-secondary)]", children: messages.common.retry })] })) : null, !isError && !isFetching && filteredReports.length === 0 ? (_jsxs("div", { className: "p-[12px] flex flex-col gap-[4px] bg-[var(--adaptive-black200)]", children: [_jsx("h6", { className: "font-semibold text-[var(--adaptive-black900)]", children: messages.feedbackList.emptyTitle }), _jsx("p", { className: "text-[12px] text-[var(--adaptive-black500)] whitespace-break-spaces leading-[1.5]", children: reports.length === 0 ? messages.feedbackList.emptyNoFeedback : messages.feedbackList.emptyNoMatch })] })) : null, _jsx("section", { className: "flex flex-col", children: groupedReports.map(({ dateKey, label, reports: groupReports }) => {
|
|
155
|
+
const isExpanded = expandedGroups.has(dateKey);
|
|
156
|
+
return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("button", { type: "button", onClick: () => toggleGroup(dateKey), "aria-expanded": isExpanded, className: "sticky z-10 flex w-full items-center justify-between bg-[var(--adaptive-black100)] p-[4px_8px]", children: [_jsx("p", { className: "text-[12px] font-[600] text-[var(--adaptive-black700)]", children: label }), _jsx(ChevronDownIcon, { className: `h-4 w-4 shrink-0 transition-transform ${isExpanded ? "rotate-180" : ""}` })] }), isExpanded
|
|
157
|
+
? groupReports.map((report) => {
|
|
158
|
+
const displayStatus = getFeedbackDisplayStatus(report, true);
|
|
159
|
+
const fieldTags = getFieldTags(fields, report.field_values);
|
|
160
|
+
return (_jsxs("div", { className: "flex w-full items-start gap-[4px] border-b border-[var(--adaptive-border-subtle)] last:border-b-0", children: [_jsxs("button", { type: "button", onClick: () => locateFeedback(report.id), className: "flex min-w-0 flex-1 flex-col gap-[6px] p-[12px] text-left", children: [_jsxs("section", { className: "flex flex-col gap-[4px]", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-[6px]", children: [_jsx("strong", { className: "max-w-full truncate font-bold text-[var(--adaptive-black900)]", children: report.report_id }), _jsx(FeedbackFieldTags, { tags: fieldTags }), _jsx(FeedbackStatusBadge, { status: displayStatus })] }), _jsx("p", { className: "text-[var(--adaptive-black700)]", children: report.message }), listScope === "all" ? _jsx("p", { className: "truncate text-[11px] text-[var(--adaptive-black500)]", children: report.pathname }) : null] }), _jsx("p", { className: "text-[var(--adaptive-black500)] text-[12px]", children: formatTimeOnly(report.created_at, locale) })] }), _jsxs("div", { className: "flex shrink-0 items-start gap-[2px] p-[12px] pl-0", children: [_jsx(FeedbackListCopyButton, { report: report, messages: messages }), canCreateGitHubIssueFromList ? (_jsx(GitIssueButton, { report: report, messages: messages, disabled: isDeleting, isSubmitting: creatingGitHubIssueId === report.id, onCreateIssue: handleCreateGitHubIssue })) : null, _jsx(FeedbackListDeleteButton, { report: report, onDelete: handleDelete, disabled: isDeleting, messages: messages })] })] }, report.id));
|
|
161
|
+
})
|
|
162
|
+
: null] }, dateKey));
|
|
163
|
+
}) }), visibleCount < filteredReports.length || hasNextPage ? (_jsx("div", { ref: loadMoreRef, className: "py-[8px] text-center text-[12px] text-[var(--adaptive-black500)]", children: isFetchingNextPage ? messages.feedbackList.loadingMore : "" })) : null] })] }));
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=ReportFeedbackList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportFeedbackList.js","sourceRoot":"","sources":["../../../src/components/panel/ReportFeedbackList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type ReportImportConfirmDialogProps = {
|
|
2
|
+
onApply: () => void;
|
|
3
|
+
onCancel: () => void;
|
|
4
|
+
onBackupAndApply: () => void;
|
|
5
|
+
};
|
|
6
|
+
export declare function ReportImportConfirmDialog({ onApply, onCancel, onBackupAndApply }: ReportImportConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ReportImportConfirmDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportImportConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/components/panel/ReportImportConfirmDialog.tsx"],"names":[],"mappings":"AAEA,KAAK,8BAA8B,GAAG;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,8BAA8B,2CAqChH"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useReport } from "../../providers/reportContext.js";
|
|
3
|
+
export function ReportImportConfirmDialog({ onApply, onCancel, onBackupAndApply }) {
|
|
4
|
+
const { messages } = useReport();
|
|
5
|
+
return (_jsxs("section", { className: "bg-[var(--adaptive-grey100)] p-[16px]", children: [_jsx("p", { className: "text-[14px] font-bold text-[var(--adaptive-black900)]", children: messages.importConfirm.title }), _jsx("p", { className: "mt-[8px] leading-[1.4] text-[var(--adaptive-black700)]", children: messages.importConfirm.description }), _jsxs("div", { className: "mt-[14px] flex items-center justify-end gap-[10px]", children: [_jsx("button", { type: "button", onClick: onApply, className: "border border-[var(--adaptive-grey300)] p-[4px_8px] rounded-[8px] font-semibold text-[var(--adaptive-black700)]", children: messages.importConfirm.applyDirectly }), _jsx("div", { className: "w-[1px] h-[16px] bg-[var(--adaptive-black400)]" }), _jsxs("section", { className: "flex gap-[4px]", children: [_jsx("button", { type: "button", onClick: onCancel, className: "bg-[var(--adaptive-grey300)] p-[4px_8px] rounded-[8px] font-semibold text-[var(--adaptive-black700)] border border-transparent", children: messages.common.cancel }), _jsx("button", { type: "button", onClick: onBackupAndApply, className: "bg-[var(--adaptive-blue100)] p-[4px_8px] rounded-[8px] font-bold text-[var(--adaptive-blue500)] border border-transparent", children: messages.importConfirm.backupAndApply })] })] })] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=ReportImportConfirmDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportImportConfirmDialog.js","sourceRoot":"","sources":["../../../src/components/panel/ReportImportConfirmDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAQzD,MAAM,UAAU,yBAAyB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAkC;IAC7G,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC;IAEjC,OAAO,CACH,mBAAS,SAAS,EAAC,uCAAuC,aACtD,YAAG,SAAS,EAAC,uDAAuD,YAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAK,EACvG,YAAG,SAAS,EAAC,wDAAwD,YAAE,QAAQ,CAAC,aAAa,CAAC,WAAW,GAAK,EAC9G,eAAK,SAAS,EAAC,oDAAoD,aAC/D,iBACI,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,iHAAiH,YAE1H,QAAQ,CAAC,aAAa,CAAC,aAAa,GAChC,EAET,cAAK,SAAS,EAAC,gDAAgD,GAAG,EAElE,mBAAS,SAAS,EAAC,gBAAgB,aAC/B,iBACI,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,gIAAgI,YAEzI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAClB,EACT,iBACI,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAC,2HAA2H,YAEpI,QAAQ,CAAC,aAAa,CAAC,cAAc,GACjC,IACH,IACR,IACA,CACb,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReportProject } from "../../types/report.js";
|
|
2
|
+
import type { ResolvedReportProject } from "../../utils/reportProject.js";
|
|
3
|
+
type ReportImportProjectMismatchDialogProps = {
|
|
4
|
+
currentProject: ResolvedReportProject;
|
|
5
|
+
importedProject?: ReportProject;
|
|
6
|
+
exportedAt?: string;
|
|
7
|
+
onProceed: () => void;
|
|
8
|
+
onCancel: () => void;
|
|
9
|
+
};
|
|
10
|
+
export declare function ReportImportProjectMismatchDialog({ currentProject, importedProject, exportedAt, onProceed, onCancel }: ReportImportProjectMismatchDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=ReportImportProjectMismatchDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportImportProjectMismatchDialog.d.ts","sourceRoot":"","sources":["../../../src/components/panel/ReportImportProjectMismatchDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,KAAK,sCAAsC,GAAG;IAC1C,cAAc,EAAE,qBAAqB,CAAC;IACtC,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAgBF,wBAAgB,iCAAiC,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,sCAAsC,2CAiE7J"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useReport } from "../../providers/reportContext.js";
|
|
3
|
+
import { buildProjectComparisonLines } from "../../utils/feedbackTransferSchema.js";
|
|
4
|
+
function formatExportedAt(value, noneLabel, locale) {
|
|
5
|
+
if (!value) {
|
|
6
|
+
return noneLabel;
|
|
7
|
+
}
|
|
8
|
+
const date = new Date(value);
|
|
9
|
+
if (Number.isNaN(date.getTime())) {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
return date.toLocaleString(locale);
|
|
13
|
+
}
|
|
14
|
+
export function ReportImportProjectMismatchDialog({ currentProject, importedProject, exportedAt, onProceed, onCancel }) {
|
|
15
|
+
const { locale, messages } = useReport();
|
|
16
|
+
const comparisonLines = buildProjectComparisonLines(currentProject, importedProject);
|
|
17
|
+
return (_jsxs("article", { className: "bg-[var(--adaptive-grey100)]", children: [_jsxs("section", { className: "flex flex-col gap-[4px] p-[16px]", children: [_jsx("h6", { className: "text-[14px] font-bold text-[var(--adaptive-black900)]", children: messages.importMismatch.title }), _jsx("p", { className: "leading-[1.5] text-[var(--adaptive-black500)]", children: messages.importMismatch.description })] }), _jsxs("section", { className: "flex flex-col gap-[4px] p-[12px]", children: [_jsx("p", { className: "text-[12px] text-[var(--adaptive-black700)]", children: messages.importMismatch.currentData }), _jsx("dl", { className: "", children: comparisonLines.map((line) => (_jsxs("div", { className: "grid grid-cols-[112px_1fr] gap-[8px] text-[12px]", children: [_jsx("p", { className: "font-medium text-[var(--adaptive-black500)]", children: line.label }), _jsx("p", { className: `${line.differs ? "text-[var(--adaptive-blue500)]" : "text-[var(--adaptive-black800)]"}`, children: line.current })] }, line.label))) })] }), _jsxs("section", { className: "flex flex-col gap-[4px] p-[12px]", children: [_jsx("p", { className: "text-[12px] text-[var(--adaptive-black700)]", children: messages.importMismatch.updatedData }), _jsxs("dl", { className: "", children: [comparisonLines.map((line) => (_jsxs("div", { className: "grid grid-cols-[112px_1fr] gap-[8px] text-[12px]", children: [_jsx("p", { className: "font-medium text-[var(--adaptive-black500)]", children: line.label }), _jsx("p", { className: `${line.differs ? "text-rose-700" : "text-[var(--adaptive-black800)]"}`, children: line.imported })] }, line.label))), _jsxs("div", { className: "grid grid-cols-[112px_1fr] gap-[8px] text-[12px]", children: [_jsx("p", { className: "font-medium text-[var(--adaptive-black500)]", children: messages.importMismatch.exportedAtLabel }), _jsx("p", { className: "text-[var(--adaptive-black800)]", children: formatExportedAt(exportedAt, messages.common.none, locale === "ko" ? "ko-KR" : "en-US") })] })] })] }), _jsxs("section", { className: "flex items-center justify-end gap-[10px] p-[16px]", children: [_jsx("button", { type: "button", onClick: onCancel, className: "bg-[var(--adaptive-grey300)] p-[4px_8px] rounded-[8px] font-semibold text-[var(--adaptive-black700)] border border-transparent", children: messages.common.cancel }), _jsx("button", { type: "button", onClick: onProceed, className: "bg-[var(--adaptive-blue100)] p-[4px_8px] rounded-[8px] font-bold text-[var(--adaptive-blue500)] border border-transparent", children: messages.common.proceed })] })] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ReportImportProjectMismatchDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportImportProjectMismatchDialog.js","sourceRoot":"","sources":["../../../src/components/panel/ReportImportProjectMismatchDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type ReportPersonalKeyDialogProps = {
|
|
2
|
+
mode: "required" | "insert" | "rotate";
|
|
3
|
+
onCancel: () => void;
|
|
4
|
+
onComplete: (message: string) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare function ReportPersonalKeyDialog({ mode, onCancel, onComplete }: ReportPersonalKeyDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ReportPersonalKeyDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportPersonalKeyDialog.d.ts","sourceRoot":"","sources":["../../../src/components/panel/ReportPersonalKeyDialog.tsx"],"names":[],"mappings":"AAGA,KAAK,4BAA4B,GAAG;IAChC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,4BAA4B,2CA2HnG"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { useReport } from "../../providers/reportContext.js";
|
|
4
|
+
export function ReportPersonalKeyDialog({ mode, onCancel, onComplete }) {
|
|
5
|
+
const { issuePersonalKey, rotatePersonalKey, insertPersonalKey, personalKeyCandidates, messages } = useReport();
|
|
6
|
+
const [key, setKey] = useState("");
|
|
7
|
+
const [authorId, setAuthorId] = useState(personalKeyCandidates.length === 1 ? personalKeyCandidates[0].id : "");
|
|
8
|
+
const [error, setError] = useState("");
|
|
9
|
+
const handleConfirm = async () => {
|
|
10
|
+
if (mode === "rotate") {
|
|
11
|
+
const issuedKey = await rotatePersonalKey();
|
|
12
|
+
if (!issuedKey) {
|
|
13
|
+
setError(messages.personalKey.invalidKey);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
await navigator.clipboard.writeText(issuedKey.publicKey);
|
|
18
|
+
onComplete(messages.personalKey.publicKeyCopied);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
onComplete(messages.personalKey.registrationPending);
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (mode === "required") {
|
|
26
|
+
const issuedKey = await issuePersonalKey(authorId);
|
|
27
|
+
if (!issuedKey) {
|
|
28
|
+
setError(messages.personalKey.ownerRequired);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
await navigator.clipboard.writeText(issuedKey.publicKey);
|
|
33
|
+
onComplete(messages.personalKey.publicKeyCopied);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
onComplete(messages.personalKey.registrationPending);
|
|
37
|
+
}
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const inserted = await insertPersonalKey(key);
|
|
41
|
+
if (!inserted) {
|
|
42
|
+
setError(messages.personalKey.invalidKey);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
onComplete(inserted.authorized ? messages.personalKey.setupSuccess : messages.personalKey.registrationPending);
|
|
46
|
+
};
|
|
47
|
+
return (_jsxs("section", { className: "bg-[var(--adaptive-grey100)] p-[16px]", children: [_jsx("h6", { className: "text-[14px] font-bold text-[var(--adaptive-black900)]", children: mode === "required"
|
|
48
|
+
? messages.personalKey.requiredTitle
|
|
49
|
+
: mode === "rotate"
|
|
50
|
+
? messages.personalKey.rotateTitle
|
|
51
|
+
: messages.personalKey.insertTitle }), _jsx("p", { className: "mt-[8px] leading-[1.4] text-[var(--adaptive-black700)]", children: mode === "required"
|
|
52
|
+
? messages.personalKey.requiredDescription
|
|
53
|
+
: mode === "rotate"
|
|
54
|
+
? messages.personalKey.rotateDescription
|
|
55
|
+
: messages.personalKey.insertDescription }), mode === "required" ? (_jsxs(_Fragment, { children: [_jsxs("select", { value: authorId, onChange: (event) => setAuthorId(event.target.value), className: "mt-[12px] w-full rounded-[8px] border border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-surface)] px-[10px] py-[8px] text-[12px] text-[var(--adaptive-text-primary)] outline-none", children: [_jsx("option", { value: "", children: messages.personalKey.reviewerPlaceholder }), personalKeyCandidates.map((author) => (_jsx("option", { value: author.id, children: author.name }, author.id)))] }), _jsxs("ul", { className: "mt-[10px] list-disc space-y-[4px] pl-[18px] text-[12px] leading-[1.4] text-[var(--adaptive-black600)]", children: [_jsx("li", { children: messages.personalKey.backupWarning }), _jsx("li", { children: messages.personalKey.restoreGuide })] })] })) : mode === "insert" ? (_jsx("input", { autoFocus: true, value: key, onChange: (event) => {
|
|
56
|
+
setKey(event.target.value);
|
|
57
|
+
setError("");
|
|
58
|
+
}, placeholder: messages.personalKey.inputPlaceholder, className: "mt-[12px] w-full rounded-[8px] border border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-surface)] px-[10px] py-[8px] text-[12px] text-[var(--adaptive-text-primary)] outline-none" })) : (_jsx("p", { className: "mt-[10px] rounded-[8px] bg-amber-50 p-[10px] text-[12px] leading-[1.4] text-amber-800", children: messages.personalKey.rotateWarning })), error ? _jsx("p", { className: "mt-[8px] text-[12px] text-rose-700", children: error }) : null, _jsxs("div", { className: "mt-[14px] flex items-center justify-end gap-[10px]", children: [_jsx("button", { type: "button", onClick: onCancel, className: "rounded-[8px] bg-[var(--adaptive-grey300)] p-[4px_8px] font-semibold text-[var(--adaptive-black700)]", children: messages.common.cancel }), _jsx("button", { type: "button", disabled: mode === "required" ? !authorId : mode === "insert" ? !key.trim() : false, onClick: () => void handleConfirm(), className: "rounded-[8px] bg-[var(--adaptive-blue100)] p-[4px_8px] font-bold text-[var(--adaptive-blue500)] disabled:opacity-50", children: messages.common.confirm })] })] }));
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ReportPersonalKeyDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportPersonalKeyDialog.js","sourceRoot":"","sources":["../../../src/components/panel/ReportPersonalKeyDialog.tsx"],"names":[],"mappings":"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"}
|