@fivepixels-js/react 0.2.6 → 0.2.8
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/icons/Icons.d.ts +12 -0
- package/dist/components/icons/Icons.d.ts.map +1 -1
- package/dist/components/icons/Icons.js +16 -0
- package/dist/components/icons/Icons.js.map +1 -1
- package/dist/components/overlay/DotWaveOverlay.d.ts.map +1 -1
- package/dist/components/overlay/DotWaveOverlay.js +3 -1
- package/dist/components/overlay/DotWaveOverlay.js.map +1 -1
- package/dist/components/overlay/FloatingPinRail.d.ts.map +1 -1
- package/dist/components/overlay/FloatingPinRail.js +22 -22
- package/dist/components/overlay/FloatingPinRail.js.map +1 -1
- package/dist/components/overlay/PickTargetContextMenu.js +1 -1
- package/dist/components/overlay/PickTargetContextMenu.js.map +1 -1
- package/dist/components/overlay/PickTargetHoverTooltip.d.ts.map +1 -1
- package/dist/components/overlay/PickTargetHoverTooltip.js +5 -2
- package/dist/components/overlay/PickTargetHoverTooltip.js.map +1 -1
- package/dist/components/panel/AppearanceThemePicker.d.ts +3 -1
- package/dist/components/panel/AppearanceThemePicker.d.ts.map +1 -1
- package/dist/components/panel/AppearanceThemePicker.js +7 -6
- package/dist/components/panel/AppearanceThemePicker.js.map +1 -1
- package/dist/components/panel/DiscreteScaleDial.d.ts.map +1 -1
- package/dist/components/panel/DiscreteScaleDial.js +7 -11
- package/dist/components/panel/DiscreteScaleDial.js.map +1 -1
- package/dist/components/panel/MarkerShapePicker.d.ts +4 -2
- package/dist/components/panel/MarkerShapePicker.d.ts.map +1 -1
- package/dist/components/panel/MarkerShapePicker.js +10 -13
- package/dist/components/panel/MarkerShapePicker.js.map +1 -1
- package/dist/components/panel/MarkerSizePreview.d.ts +4 -2
- package/dist/components/panel/MarkerSizePreview.d.ts.map +1 -1
- package/dist/components/panel/MarkerSizePreview.js +19 -21
- package/dist/components/panel/MarkerSizePreview.js.map +1 -1
- package/dist/components/panel/PanelAutoRefreshControl.d.ts +2 -0
- package/dist/components/panel/PanelAutoRefreshControl.d.ts.map +1 -0
- package/dist/components/panel/PanelAutoRefreshControl.js +42 -0
- package/dist/components/panel/PanelAutoRefreshControl.js.map +1 -0
- package/dist/components/panel/PanelDropdownMenu.d.ts.map +1 -1
- package/dist/components/panel/PanelDropdownMenu.js +2 -2
- package/dist/components/panel/PanelDropdownMenu.js.map +1 -1
- package/dist/components/panel/PanelKeyGate.d.ts.map +1 -1
- package/dist/components/panel/PanelKeyGate.js +7 -2
- package/dist/components/panel/PanelKeyGate.js.map +1 -1
- package/dist/components/panel/PanelMarkerDisplayControls.d.ts +3 -8
- package/dist/components/panel/PanelMarkerDisplayControls.d.ts.map +1 -1
- package/dist/components/panel/PanelMarkerDisplayControls.js +4 -4
- package/dist/components/panel/PanelMarkerDisplayControls.js.map +1 -1
- package/dist/components/panel/PanelOnboarding.d.ts.map +1 -1
- package/dist/components/panel/PanelOnboarding.js +26 -5
- package/dist/components/panel/PanelOnboarding.js.map +1 -1
- package/dist/components/panel/PanelProjectFooter.js +1 -1
- package/dist/components/panel/PanelProjectFooter.js.map +1 -1
- package/dist/components/panel/PanelRoleSwitch.js +1 -1
- package/dist/components/panel/PanelRoleSwitch.js.map +1 -1
- package/dist/components/panel/PanelSettings.d.ts.map +1 -1
- package/dist/components/panel/PanelSettings.js +54 -11
- package/dist/components/panel/PanelSettings.js.map +1 -1
- package/dist/components/panel/PanelStatusBanner.d.ts +26 -0
- package/dist/components/panel/PanelStatusBanner.d.ts.map +1 -0
- package/dist/components/panel/PanelStatusBanner.js +11 -0
- package/dist/components/panel/PanelStatusBanner.js.map +1 -0
- package/dist/components/panel/PanelStatusBannerStack.d.ts +5 -0
- package/dist/components/panel/PanelStatusBannerStack.d.ts.map +1 -0
- package/dist/components/panel/PanelStatusBannerStack.js +129 -0
- package/dist/components/panel/PanelStatusBannerStack.js.map +1 -0
- package/dist/components/panel/ReportControlPanel.d.ts.map +1 -1
- package/dist/components/panel/ReportControlPanel.js +5 -6
- package/dist/components/panel/ReportControlPanel.js.map +1 -1
- package/dist/components/panel/ReportDraftForm.js +2 -2
- package/dist/components/panel/ReportDraftForm.js.map +1 -1
- package/dist/components/panel/ReportFeedbackList.js +2 -2
- package/dist/components/panel/ReportFeedbackList.js.map +1 -1
- package/dist/components/panel/ThemePreviewSkeleton.d.ts +3 -1
- package/dist/components/panel/ThemePreviewSkeleton.d.ts.map +1 -1
- package/dist/components/panel/ThemePreviewSkeleton.js +60 -18
- package/dist/components/panel/ThemePreviewSkeleton.js.map +1 -1
- package/dist/components/panel/feedback/CaseAssigneeInfo.d.ts.map +1 -1
- package/dist/components/panel/feedback/CaseAssigneeInfo.js +1 -1
- package/dist/components/panel/feedback/CaseAssigneeInfo.js.map +1 -1
- package/dist/components/panel/feedback/DraftComposerToolbar.js +1 -1
- package/dist/components/panel/feedback/DraftComposerToolbar.js.map +1 -1
- package/dist/components/panel/feedback/FeedbackComposer.d.ts +2 -1
- package/dist/components/panel/feedback/FeedbackComposer.d.ts.map +1 -1
- package/dist/components/panel/feedback/FeedbackComposer.js +7 -6
- package/dist/components/panel/feedback/FeedbackComposer.js.map +1 -1
- package/dist/components/panel/feedback/FeedbackHoverCard.d.ts.map +1 -1
- package/dist/components/panel/feedback/FeedbackHoverCard.js +18 -9
- package/dist/components/panel/feedback/FeedbackHoverCard.js.map +1 -1
- package/dist/components/panel/feedback/FeedbackMineBadge.d.ts +2 -0
- package/dist/components/panel/feedback/FeedbackMineBadge.d.ts.map +1 -0
- package/dist/components/panel/feedback/FeedbackMineBadge.js +7 -0
- package/dist/components/panel/feedback/FeedbackMineBadge.js.map +1 -0
- package/dist/components/panel/feedback/FeedbackStatusBadge.js +1 -1
- package/dist/components/panel/feedback/FeedbackStatusBadge.js.map +1 -1
- package/dist/components/panel/feedback/FeedbackThread.d.ts.map +1 -1
- package/dist/components/panel/feedback/FeedbackThread.js +9 -9
- package/dist/components/panel/feedback/FeedbackThread.js.map +1 -1
- package/dist/components/panel/feedback/MentionComposerInput.d.ts.map +1 -1
- package/dist/components/panel/feedback/MentionComposerInput.js +1 -1
- package/dist/components/panel/feedback/MentionComposerInput.js.map +1 -1
- package/dist/components/panel/feedback/QuestionThreadGroup.d.ts +4 -2
- package/dist/components/panel/feedback/QuestionThreadGroup.d.ts.map +1 -1
- package/dist/components/panel/feedback/QuestionThreadGroup.js +2 -2
- package/dist/components/panel/feedback/QuestionThreadGroup.js.map +1 -1
- package/dist/components/panel/feedback/ThreadAuthorMeta.d.ts +7 -1
- package/dist/components/panel/feedback/ThreadAuthorMeta.d.ts.map +1 -1
- package/dist/components/panel/feedback/ThreadAuthorMeta.js +5 -2
- package/dist/components/panel/feedback/ThreadAuthorMeta.js.map +1 -1
- package/dist/components/panel/feedback/ThreadChildReply.d.ts +4 -2
- package/dist/components/panel/feedback/ThreadChildReply.d.ts.map +1 -1
- package/dist/components/panel/feedback/ThreadChildReply.js +3 -2
- package/dist/components/panel/feedback/ThreadChildReply.js.map +1 -1
- package/dist/components/panel/feedback/ThreadEntryActions.d.ts +1 -1
- package/dist/components/panel/feedback/ThreadEntryActions.d.ts.map +1 -1
- package/dist/components/panel/feedback/ThreadEntryActions.js +1 -1
- package/dist/components/panel/feedback/ThreadEntryActions.js.map +1 -1
- package/dist/components/panel/feedback/ThreadTimelineRow.js +1 -1
- package/dist/components/point/MarkerCaseSidebar.d.ts.map +1 -1
- package/dist/components/point/MarkerCaseSidebar.js +8 -5
- package/dist/components/point/MarkerCaseSidebar.js.map +1 -1
- package/dist/components/point/MarkerFeedbackWindow.d.ts.map +1 -1
- package/dist/components/point/MarkerFeedbackWindow.js +13 -5
- package/dist/components/point/MarkerFeedbackWindow.js.map +1 -1
- package/dist/components/point/MarkerReplyBadge.d.ts +9 -0
- package/dist/components/point/MarkerReplyBadge.d.ts.map +1 -0
- package/dist/components/point/MarkerReplyBadge.js +14 -0
- package/dist/components/point/MarkerReplyBadge.js.map +1 -0
- package/dist/components/point/MarkerShapeGlyph.d.ts +20 -0
- package/dist/components/point/MarkerShapeGlyph.d.ts.map +1 -0
- package/dist/components/point/MarkerShapeGlyph.js +17 -0
- package/dist/components/point/MarkerShapeGlyph.js.map +1 -0
- package/dist/components/point/ReportDraftMarker.d.ts.map +1 -1
- package/dist/components/point/ReportDraftMarker.js +8 -3
- package/dist/components/point/ReportDraftMarker.js.map +1 -1
- package/dist/components/point/ReportMarkersLayer.d.ts.map +1 -1
- package/dist/components/point/ReportMarkersLayer.js +67 -48
- package/dist/components/point/ReportMarkersLayer.js.map +1 -1
- package/dist/components/ui/IconTooltipButton.js +1 -1
- package/dist/components/ui/IconTooltipButton.js.map +1 -1
- package/dist/constants/accentColors.d.ts +32 -0
- package/dist/constants/accentColors.d.ts.map +1 -0
- package/dist/constants/accentColors.js +32 -0
- package/dist/constants/accentColors.js.map +1 -0
- package/dist/constants/appearance.d.ts +1 -1
- package/dist/constants/appearance.js +2 -2
- package/dist/constants/appearance.js.map +1 -1
- package/dist/constants/feedbackStatus.d.ts.map +1 -1
- package/dist/constants/feedbackStatus.js +8 -7
- package/dist/constants/feedbackStatus.js.map +1 -1
- package/dist/constants/markerAppearance.d.ts +24 -9
- package/dist/constants/markerAppearance.d.ts.map +1 -1
- package/dist/constants/markerAppearance.js +67 -16
- package/dist/constants/markerAppearance.js.map +1 -1
- package/dist/constants/markerShapePaths.d.ts +64 -0
- package/dist/constants/markerShapePaths.d.ts.map +1 -0
- package/dist/constants/markerShapePaths.js +63 -0
- package/dist/constants/markerShapePaths.js.map +1 -0
- package/dist/constants/markerShapeRegistry.d.ts +18 -0
- package/dist/constants/markerShapeRegistry.d.ts.map +1 -0
- package/dist/constants/markerShapeRegistry.js +35 -0
- package/dist/constants/markerShapeRegistry.js.map +1 -0
- package/dist/constants/panelAutoRefresh.d.ts +7 -0
- package/dist/constants/panelAutoRefresh.d.ts.map +1 -0
- package/dist/constants/panelAutoRefresh.js +8 -0
- package/dist/constants/panelAutoRefresh.js.map +1 -0
- package/dist/constants/report.d.ts +1 -1
- package/dist/constants/report.d.ts.map +1 -1
- package/dist/constants/report.js +3 -1
- package/dist/constants/report.js.map +1 -1
- package/dist/hooks/report/assembleReportContextValue.d.ts +6 -0
- package/dist/hooks/report/assembleReportContextValue.d.ts.map +1 -1
- package/dist/hooks/report/assembleReportContextValue.js +6 -0
- package/dist/hooks/report/assembleReportContextValue.js.map +1 -1
- package/dist/hooks/report/useReportMarkers.d.ts.map +1 -1
- package/dist/hooks/report/useReportMarkers.js +7 -1
- package/dist/hooks/report/useReportMarkers.js.map +1 -1
- package/dist/hooks/report/useReportPanelShell.d.ts +5 -0
- package/dist/hooks/report/useReportPanelShell.d.ts.map +1 -1
- package/dist/hooks/report/useReportPanelShell.js +13 -11
- package/dist/hooks/report/useReportPanelShell.js.map +1 -1
- package/dist/hooks/report/useReportState.d.ts +6 -0
- package/dist/hooks/report/useReportState.d.ts.map +1 -1
- package/dist/hooks/useDetachedMarkerVisibilityPreference.d.ts +8 -0
- package/dist/hooks/useDetachedMarkerVisibilityPreference.d.ts.map +1 -0
- package/dist/hooks/useDetachedMarkerVisibilityPreference.js +49 -0
- package/dist/hooks/useDetachedMarkerVisibilityPreference.js.map +1 -0
- package/dist/hooks/useMarkerAppearancePreference.d.ts +2 -1
- package/dist/hooks/useMarkerAppearancePreference.d.ts.map +1 -1
- package/dist/hooks/useMarkerAppearancePreference.js +9 -1
- package/dist/hooks/useMarkerAppearancePreference.js.map +1 -1
- package/dist/hooks/useNativeHover.d.ts.map +1 -1
- package/dist/hooks/useNativeHover.js +18 -6
- package/dist/hooks/useNativeHover.js.map +1 -1
- package/dist/hooks/usePanelAutoRefresh.d.ts +17 -0
- package/dist/hooks/usePanelAutoRefresh.d.ts.map +1 -0
- package/dist/hooks/usePanelAutoRefresh.js +180 -0
- package/dist/hooks/usePanelAutoRefresh.js.map +1 -0
- package/dist/hooks/usePanelDock.d.ts.map +1 -1
- package/dist/hooks/usePanelDock.js +5 -1
- package/dist/hooks/usePanelDock.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +50 -8
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +55 -13
- package/dist/i18n/ko.js.map +1 -1
- package/dist/i18n/types.d.ts +43 -1
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/providers/reportContext.d.ts +31 -1
- package/dist/providers/reportContext.d.ts.map +1 -1
- package/dist/providers/reportContextPartitions.d.ts +1 -1
- package/dist/providers/reportContextPartitions.d.ts.map +1 -1
- package/dist/providers/reportContextPartitions.js +6 -0
- package/dist/providers/reportContextPartitions.js.map +1 -1
- package/dist/styles/reportStylesheet.d.ts +1 -1
- package/dist/styles/reportStylesheet.d.ts.map +1 -1
- package/dist/styles/reportStylesheet.js +1 -1
- package/dist/styles/reportStylesheet.js.map +1 -1
- package/dist/utils/feedback/feedbackThread.d.ts +4 -0
- package/dist/utils/feedback/feedbackThread.d.ts.map +1 -1
- package/dist/utils/feedback/feedbackThread.js +20 -0
- package/dist/utils/feedback/feedbackThread.js.map +1 -1
- package/dist/utils/marker/markerContext.d.ts +5 -1
- package/dist/utils/marker/markerContext.d.ts.map +1 -1
- package/dist/utils/marker/markerContext.js +18 -15
- package/dist/utils/marker/markerContext.js.map +1 -1
- package/dist/utils/marker/markerRuntime.d.ts +1 -0
- package/dist/utils/marker/markerRuntime.d.ts.map +1 -1
- package/dist/utils/marker/markerRuntime.js +8 -5
- package/dist/utils/marker/markerRuntime.js.map +1 -1
- package/dist/utils/marker/markerShape.d.ts +13 -7
- package/dist/utils/marker/markerShape.d.ts.map +1 -1
- package/dist/utils/marker/markerShape.js +25 -45
- package/dist/utils/marker/markerShape.js.map +1 -1
- package/dist/utils/panel/formatStatCount.js +1 -1
- package/dist/utils/panel/formatStatCount.js.map +1 -1
- package/dist/utils/panel/panelAutoRefresh.d.ts +9 -0
- package/dist/utils/panel/panelAutoRefresh.d.ts.map +1 -0
- package/dist/utils/panel/panelAutoRefresh.js +37 -0
- package/dist/utils/panel/panelAutoRefresh.js.map +1 -0
- package/dist/utils/panel/panelRoleStats.d.ts +3 -5
- package/dist/utils/panel/panelRoleStats.d.ts.map +1 -1
- package/dist/utils/panel/panelRoleStats.js +26 -54
- package/dist/utils/panel/panelRoleStats.js.map +1 -1
- package/dist/utils/panel/panelTypography.d.ts +2 -2
- package/dist/utils/panel/panelTypography.d.ts.map +1 -1
- package/dist/utils/panel/panelTypography.js +2 -2
- package/dist/utils/panel/panelTypography.js.map +1 -1
- package/dist/utils/report/reportVisual.d.ts +2 -1
- package/dist/utils/report/reportVisual.d.ts.map +1 -1
- package/dist/utils/report/reportVisual.js +4 -4
- package/dist/utils/report/reportVisual.js.map +1 -1
- package/dist/utils/shared/format.d.ts +15 -0
- package/dist/utils/shared/format.d.ts.map +1 -1
- package/dist/utils/shared/format.js +71 -0
- package/dist/utils/shared/format.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/panel/ProbeEditModeBanner.d.ts +0 -2
- package/dist/components/panel/ProbeEditModeBanner.d.ts.map +0 -1
- package/dist/components/panel/ProbeEditModeBanner.js +0 -23
- package/dist/components/panel/ProbeEditModeBanner.js.map +0 -1
|
@@ -18,7 +18,11 @@ export declare function isModalReportId(reportId: string): boolean;
|
|
|
18
18
|
export declare function usesViewportDetachedCoords(report: Pick<ReportFeedback, "position">): boolean;
|
|
19
19
|
export declare function resolveDetachedKind(report: Pick<ReportFeedback, "report_id" | "position">, targetElement: HTMLElement | null, detached: boolean): MarkerDetachedKind;
|
|
20
20
|
export declare function formatModalReportLabel(reportId: string): string;
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Renders a consistent centered modal silhouette. Saved viewport ratios are
|
|
23
|
+
* intentionally ignored — they drift after scroll/resize and confuse users.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getModalGhostFrame(_report?: Pick<ReportFeedback, "position">): ModalGhostFrame;
|
|
22
26
|
export declare function getDetachedMarkerHint(detachedKind: MarkerDetachedKind, messages: {
|
|
23
27
|
detachedHint: string;
|
|
24
28
|
detachedModalHint: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markerContext.d.ts","sourceRoot":"","sources":["../../../src/utils/marker/markerContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM/D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;CACL,CAAC;
|
|
1
|
+
{"version":3,"file":"markerContext.d.ts","sourceRoot":"","sources":["../../../src/utils/marker/markerContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM/D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;CACL,CAAC;AAOF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,WAE/C;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,WAGlF;AAED,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,UAAU,CAAC,EACtD,aAAa,EAAE,WAAW,GAAG,IAAI,EACjC,QAAQ,EAAE,OAAO,GAClB,kBAAkB,CAkBpB;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,UAUtD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG,eAAe,CAoB9F;AAED,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC7B,iBAWJ;AAED,wBAAgB,0BAA0B,CACtC,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE;IACN,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;CAClC,UAWJ"}
|
|
@@ -4,6 +4,7 @@ const MODAL_REPORT_ID_PATTERN = /(?:^|-)(modal|overlay|dialog)(?:-|$)/i;
|
|
|
4
4
|
const MODAL_GHOST_DIALOG_WIDTH = 480;
|
|
5
5
|
const MODAL_GHOST_DIALOG_HEIGHT = 280;
|
|
6
6
|
const MODAL_GHOST_DIALOG_MAX_WIDTH_RATIO = 0.92;
|
|
7
|
+
const MODAL_GHOST_DIALOG_MAX_HEIGHT_RATIO = 0.7;
|
|
7
8
|
export function isModalReportId(reportId) {
|
|
8
9
|
return MODAL_REPORT_ID_PATTERN.test(reportId);
|
|
9
10
|
}
|
|
@@ -15,12 +16,13 @@ export function resolveDetachedKind(report, targetElement, detached) {
|
|
|
15
16
|
if (!detached) {
|
|
16
17
|
return null;
|
|
17
18
|
}
|
|
19
|
+
// Only treat as modal when the report itself looks like an overlay/dialog,
|
|
20
|
+
// or the target still lives under a fixed-position ancestor (closed modal shell).
|
|
21
|
+
// Viewport-coordinate fallback alone must not imply modal — that mislabels
|
|
22
|
+
// ordinary page markers that scrolled out of view.
|
|
18
23
|
if (isModalReportId(report.report_id)) {
|
|
19
24
|
return "modal";
|
|
20
25
|
}
|
|
21
|
-
if (usesViewportDetachedCoords(report)) {
|
|
22
|
-
return "modal";
|
|
23
|
-
}
|
|
24
26
|
if (targetElement && hasFixedPositionAncestor(targetElement)) {
|
|
25
27
|
return "modal";
|
|
26
28
|
}
|
|
@@ -36,24 +38,25 @@ export function formatModalReportLabel(reportId) {
|
|
|
36
38
|
.join(" ");
|
|
37
39
|
return name ? `${name} modal` : "Modal";
|
|
38
40
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
41
|
+
/**
|
|
42
|
+
* Renders a consistent centered modal silhouette. Saved viewport ratios are
|
|
43
|
+
* intentionally ignored — they drift after scroll/resize and confuse users.
|
|
44
|
+
*/
|
|
45
|
+
export function getModalGhostFrame(_report) {
|
|
46
|
+
const viewportWidth = typeof window !== "undefined" ? window.innerWidth : 1000;
|
|
47
|
+
const viewportHeight = typeof window !== "undefined" ? window.innerHeight : 800;
|
|
48
|
+
const dialogWidth = Math.min(MODAL_GHOST_DIALOG_WIDTH, viewportWidth * MODAL_GHOST_DIALOG_MAX_WIDTH_RATIO);
|
|
49
|
+
const dialogHeight = Math.min(MODAL_GHOST_DIALOG_HEIGHT, viewportHeight * MODAL_GHOST_DIALOG_MAX_HEIGHT_RATIO);
|
|
47
50
|
return {
|
|
48
51
|
backdrop: {
|
|
49
52
|
left: 0,
|
|
50
53
|
top: 0,
|
|
51
|
-
width:
|
|
52
|
-
height:
|
|
54
|
+
width: viewportWidth,
|
|
55
|
+
height: viewportHeight,
|
|
53
56
|
},
|
|
54
57
|
dialog: {
|
|
55
|
-
left:
|
|
56
|
-
top:
|
|
58
|
+
left: (viewportWidth - dialogWidth) / 2,
|
|
59
|
+
top: (viewportHeight - dialogHeight) / 2,
|
|
57
60
|
width: dialogWidth,
|
|
58
61
|
height: dialogHeight,
|
|
59
62
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markerContext.js","sourceRoot":"","sources":["../../../src/utils/marker/markerContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,MAAM,uBAAuB,GAAG,uCAAuC,CAAC;AAiBxE,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,kCAAkC,GAAG,IAAI,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC5C,OAAO,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAwC;IAC/E,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,MAAsD,EACtD,aAAiC,EACjC,QAAiB;IAEjB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"markerContext.js","sourceRoot":"","sources":["../../../src/utils/marker/markerContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type AppearanceScale } from "../../constants/markerAppearance.js";
|
|
2
2
|
export declare function setMarkerDotSizeFromScale(scale: AppearanceScale): void;
|
|
3
|
+
export declare function getMarkerScaleFactorValue(): number;
|
|
3
4
|
export declare function getMarkerDotSize(): number;
|
|
4
5
|
export declare function resetMarkerDotSize(): void;
|
|
5
6
|
//# sourceMappingURL=markerRuntime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markerRuntime.d.ts","sourceRoot":"","sources":["../../../src/utils/marker/markerRuntime.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"markerRuntime.d.ts","sourceRoot":"","sources":["../../../src/utils/marker/markerRuntime.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAI7F,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,QAE/D;AAED,wBAAgB,yBAAyB,WAExC;AAED,wBAAgB,gBAAgB,WAE/B;AAED,wBAAgB,kBAAkB,SAEjC"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { DOT_SIZE } from "../../constants/report.js";
|
|
2
|
-
import {
|
|
3
|
-
let
|
|
2
|
+
import { getMarkerScaleFactor } from "../../constants/markerAppearance.js";
|
|
3
|
+
let currentScaleFactor = 1;
|
|
4
4
|
export function setMarkerDotSizeFromScale(scale) {
|
|
5
|
-
|
|
5
|
+
currentScaleFactor = getMarkerScaleFactor(scale);
|
|
6
|
+
}
|
|
7
|
+
export function getMarkerScaleFactorValue() {
|
|
8
|
+
return currentScaleFactor;
|
|
6
9
|
}
|
|
7
10
|
export function getMarkerDotSize() {
|
|
8
|
-
return
|
|
11
|
+
return DOT_SIZE * currentScaleFactor;
|
|
9
12
|
}
|
|
10
13
|
export function resetMarkerDotSize() {
|
|
11
|
-
|
|
14
|
+
currentScaleFactor = 1;
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=markerRuntime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markerRuntime.js","sourceRoot":"","sources":["../../../src/utils/marker/markerRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"markerRuntime.js","sourceRoot":"","sources":["../../../src/utils/marker/markerRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAwB,MAAM,iCAAiC,CAAC;AAE7F,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAE3B,MAAM,UAAU,yBAAyB,CAAC,KAAsB;IAC5D,kBAAkB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,yBAAyB;IACrC,OAAO,kBAAkB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC5B,OAAO,QAAQ,GAAG,kBAAkB,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAC9B,kBAAkB,GAAG,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import type { MarkerShape } from "../../constants/markerAppearance.js";
|
|
1
|
+
import type { MarkerFillStyle, MarkerShape } from "../../constants/markerAppearance.js";
|
|
2
|
+
import { MARKER_SHAPE_STROKE_WIDTH_PX } from "../../constants/markerShapeRegistry.js";
|
|
2
3
|
type MarkerShapeStyle = {
|
|
3
4
|
anchorClass: string;
|
|
4
|
-
shapeClass: string;
|
|
5
|
-
ringClass: string;
|
|
6
5
|
width: number;
|
|
7
6
|
height: number;
|
|
8
|
-
|
|
9
|
-
paddingX?: number;
|
|
7
|
+
strokeWidthPx: number;
|
|
10
8
|
};
|
|
11
|
-
export
|
|
12
|
-
|
|
9
|
+
export type MarkerGlyphPaint = {
|
|
10
|
+
fill: string;
|
|
11
|
+
stroke: string;
|
|
12
|
+
strokeWidthPx: number;
|
|
13
|
+
labelColor: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function resolveMarkerShapeStyle(shape: MarkerShape, dotSize: number): MarkerShapeStyle;
|
|
16
|
+
export declare function resolveMarkerGlyphPaint(color: string, fillStyle: MarkerFillStyle, strokeWidthPx: number): MarkerGlyphPaint;
|
|
17
|
+
export declare function getMarkerReplyBadgeSize(dotSize: number): number;
|
|
18
|
+
export { MARKER_SHAPE_STROKE_WIDTH_PX };
|
|
13
19
|
//# sourceMappingURL=markerShape.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markerShape.d.ts","sourceRoot":"","sources":["../../../src/utils/marker/markerShape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"markerShape.d.ts","sourceRoot":"","sources":["../../../src/utils/marker/markerShape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAA4B,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAE5G,KAAK,gBAAgB,GAAG;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAU7F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,GAAG,gBAAgB,CAgB1H;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,UAEtD;AAED,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
|
|
@@ -1,52 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (
|
|
14
|
-
return {
|
|
15
|
-
anchorClass: "-translate-x-1/2 -translate-y-1/2",
|
|
16
|
-
shapeClass: "rounded-[4px]",
|
|
17
|
-
ringClass: "rounded-[6px]",
|
|
18
|
-
width: baseSize,
|
|
19
|
-
height: baseSize,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
if (shape === "pill") {
|
|
23
|
-
return {
|
|
24
|
-
anchorClass: "-translate-x-1/2 -translate-y-1/2",
|
|
25
|
-
shapeClass: "rounded-full",
|
|
26
|
-
ringClass: "rounded-full",
|
|
27
|
-
width: hasBadge ? Math.max(baseSize + 10, dotSize + 12) : baseSize + 4,
|
|
28
|
-
height: baseSize,
|
|
29
|
-
paddingX: hasBadge ? 8 : 0,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
if (shape === "pin") {
|
|
33
|
-
const pinHeight = baseSize + 6;
|
|
34
|
-
const pinWidth = Math.round(baseSize * 0.85);
|
|
1
|
+
import { getMarkerShapeDefinition, MARKER_SHAPE_STROKE_WIDTH_PX } from "../../constants/markerShapeRegistry.js";
|
|
2
|
+
export function resolveMarkerShapeStyle(shape, dotSize) {
|
|
3
|
+
const definition = getMarkerShapeDefinition(shape);
|
|
4
|
+
const size = dotSize + 4;
|
|
5
|
+
return {
|
|
6
|
+
anchorClass: "-translate-x-1/2 -translate-y-1/2",
|
|
7
|
+
width: size,
|
|
8
|
+
height: size,
|
|
9
|
+
strokeWidthPx: definition.strokeWidthPx,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function resolveMarkerGlyphPaint(color, fillStyle, strokeWidthPx) {
|
|
13
|
+
if (fillStyle === "outlined") {
|
|
35
14
|
return {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
height: pinHeight,
|
|
41
|
-
clipPath: "polygon(50% 100%, 6% 42%, 6% 8%, 94% 8%, 94% 42%)",
|
|
15
|
+
fill: "transparent",
|
|
16
|
+
stroke: color,
|
|
17
|
+
strokeWidthPx: Math.max(strokeWidthPx, 2.5),
|
|
18
|
+
labelColor: color,
|
|
42
19
|
};
|
|
43
20
|
}
|
|
44
21
|
return {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
height: baseSize,
|
|
22
|
+
fill: color,
|
|
23
|
+
stroke: "#ffffff",
|
|
24
|
+
strokeWidthPx,
|
|
25
|
+
labelColor: "#ffffff",
|
|
50
26
|
};
|
|
51
27
|
}
|
|
28
|
+
export function getMarkerReplyBadgeSize(dotSize) {
|
|
29
|
+
return Math.max(8, Math.round(dotSize * 0.42)) + 2;
|
|
30
|
+
}
|
|
31
|
+
export { MARKER_SHAPE_STROKE_WIDTH_PX };
|
|
52
32
|
//# sourceMappingURL=markerShape.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markerShape.js","sourceRoot":"","sources":["../../../src/utils/marker/markerShape.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markerShape.js","sourceRoot":"","sources":["../../../src/utils/marker/markerShape.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAgB5G,MAAM,UAAU,uBAAuB,CAAC,KAAkB,EAAE,OAAe;IACvE,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;IAEzB,OAAO;QACH,WAAW,EAAE,mCAAmC;QAChD,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,UAAU,CAAC,aAAa;KAC1C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,SAA0B,EAAE,aAAqB;IACpG,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO;YACH,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,KAAK;YACb,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC;YAC3C,UAAU,EAAE,KAAK;SACpB,CAAC;IACN,CAAC;IAED,OAAO;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,SAAS;QACjB,aAAa;QACb,UAAU,EAAE,SAAS;KACxB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatStatCount.js","sourceRoot":"","sources":["../../../src/utils/panel/formatStatCount.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAa;IACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"formatStatCount.js","sourceRoot":"","sources":["../../../src/utils/panel/formatStatCount.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAa;IACzC,OAAO,GAAG,KAAK,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type PanelAutoRefreshVisibilityAction = "continue" | "refetch-and-reset";
|
|
2
|
+
export declare function resolvePanelAutoRefreshVisibilityAction(hiddenDurationMs: number, cycleDue: boolean, resetThresholdMs?: number): PanelAutoRefreshVisibilityAction;
|
|
3
|
+
/** Elapsed ratio toward the next refresh (0–1). Uses wall-clock from cycle start. */
|
|
4
|
+
export declare function resolvePanelAutoRefreshProgress(cycleStartedAt: number, intervalMs: number, now?: number): number;
|
|
5
|
+
export declare function resolvePanelAutoRefreshRemainingMs(cycleStartedAt: number, intervalMs: number, now?: number): number;
|
|
6
|
+
/** Formats remaining time as `MM:SS` for the auto-refresh pill. */
|
|
7
|
+
export declare function formatPanelAutoRefreshCountdown(remainingMs: number): string;
|
|
8
|
+
export declare function isPanelAutoRefreshCycleDue(cycleStartedAt: number, intervalMs: number, now?: number): boolean;
|
|
9
|
+
//# sourceMappingURL=panelAutoRefresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panelAutoRefresh.d.ts","sourceRoot":"","sources":["../../../src/utils/panel/panelAutoRefresh.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gCAAgC,GAAG,UAAU,GAAG,mBAAmB,CAAC;AAEhF,wBAAgB,uCAAuC,CACnD,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,OAAO,EACjB,gBAAgB,SAAqC,GACtD,gCAAgC,CAUlC;AAED,qFAAqF;AACrF,wBAAgB,+BAA+B,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,MAAM,CAMpH;AAED,wBAAgB,kCAAkC,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,MAAM,CAMvH;AAED,mEAAmE;AACnE,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,OAAO,CAMhH"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PANEL_AUTO_REFRESH_HIDDEN_RESET_MS } from "../../constants/panelAutoRefresh.js";
|
|
2
|
+
export function resolvePanelAutoRefreshVisibilityAction(hiddenDurationMs, cycleDue, resetThresholdMs = PANEL_AUTO_REFRESH_HIDDEN_RESET_MS) {
|
|
3
|
+
if (hiddenDurationMs >= resetThresholdMs) {
|
|
4
|
+
return "refetch-and-reset";
|
|
5
|
+
}
|
|
6
|
+
if (cycleDue) {
|
|
7
|
+
return "refetch-and-reset";
|
|
8
|
+
}
|
|
9
|
+
return "continue";
|
|
10
|
+
}
|
|
11
|
+
/** Elapsed ratio toward the next refresh (0–1). Uses wall-clock from cycle start. */
|
|
12
|
+
export function resolvePanelAutoRefreshProgress(cycleStartedAt, intervalMs, now = Date.now()) {
|
|
13
|
+
if (intervalMs <= 0) {
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
return Math.min(1, Math.max(0, (now - cycleStartedAt) / intervalMs));
|
|
17
|
+
}
|
|
18
|
+
export function resolvePanelAutoRefreshRemainingMs(cycleStartedAt, intervalMs, now = Date.now()) {
|
|
19
|
+
if (intervalMs <= 0) {
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
return Math.max(0, intervalMs - (now - cycleStartedAt));
|
|
23
|
+
}
|
|
24
|
+
/** Formats remaining time as `MM:SS` for the auto-refresh pill. */
|
|
25
|
+
export function formatPanelAutoRefreshCountdown(remainingMs) {
|
|
26
|
+
const totalSeconds = Math.max(0, Math.ceil(remainingMs / 1000));
|
|
27
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
28
|
+
const seconds = totalSeconds % 60;
|
|
29
|
+
return `${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}`;
|
|
30
|
+
}
|
|
31
|
+
export function isPanelAutoRefreshCycleDue(cycleStartedAt, intervalMs, now = Date.now()) {
|
|
32
|
+
if (intervalMs <= 0) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return now - cycleStartedAt >= intervalMs;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=panelAutoRefresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panelAutoRefresh.js","sourceRoot":"","sources":["../../../src/utils/panel/panelAutoRefresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,iCAAiC,CAAC;AAIrF,MAAM,UAAU,uCAAuC,CACnD,gBAAwB,EACxB,QAAiB,EACjB,gBAAgB,GAAG,kCAAkC;IAErD,IAAI,gBAAgB,IAAI,gBAAgB,EAAE,CAAC;QACvC,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,+BAA+B,CAAC,cAAsB,EAAE,UAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACxG,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,cAAsB,EAAE,UAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC3G,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,+BAA+B,CAAC,WAAmB;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAElC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,cAAsB,EAAE,UAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACnG,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,GAAG,GAAG,cAAc,IAAI,UAAU,CAAC;AAC9C,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { PanelRole } from "../../constants/panelRole.js";
|
|
2
1
|
import type { ReportMessages } from "../../i18n/types.js";
|
|
3
|
-
import type { ReportFeedback
|
|
2
|
+
import type { ReportFeedback } from "../../types/report.js";
|
|
4
3
|
export type PanelRoleStatItem = {
|
|
5
4
|
key: string;
|
|
6
5
|
kind: "stat" | "cta";
|
|
@@ -8,11 +7,10 @@ export type PanelRoleStatItem = {
|
|
|
8
7
|
display: string;
|
|
9
8
|
};
|
|
10
9
|
export type BuildPanelRoleStatsOptions = {
|
|
11
|
-
role: PanelRole;
|
|
12
10
|
reports: ReportFeedback[];
|
|
13
11
|
actorName: string | null;
|
|
14
|
-
fallbackStats: ReportPanelStats;
|
|
15
12
|
messages: ReportMessages;
|
|
16
13
|
};
|
|
17
|
-
|
|
14
|
+
/** Shared header stats for every panel role: created / replied / assigned. */
|
|
15
|
+
export declare function buildPanelRoleStats({ reports, actorName, messages }: BuildPanelRoleStatsOptions): PanelRoleStatItem[];
|
|
18
16
|
//# sourceMappingURL=panelRoleStats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panelRoleStats.d.ts","sourceRoot":"","sources":["../../../src/utils/panel/panelRoleStats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"panelRoleStats.d.ts","sourceRoot":"","sources":["../../../src/utils/panel/panelRoleStats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAgDF,MAAM,MAAM,0BAA0B,GAAG;IACrC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;CAC5B,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,0BAA0B,GAAG,iBAAiB,EAAE,CAarH"}
|
|
@@ -1,14 +1,29 @@
|
|
|
1
|
-
import { getFeedbackDisplayStatus } from "../../utils/feedback/feedbackThread.js";
|
|
1
|
+
import { getFeedbackDisplayStatus, getReportReplies } from "../../utils/feedback/feedbackThread.js";
|
|
2
2
|
import { getReportCases } from "../../utils/report/reportCases.js";
|
|
3
3
|
import { formatStatCount } from "../../utils/panel/formatStatCount.js";
|
|
4
|
-
import { isCreatedToday } from "../../utils/panel/routeDetailStatus.js";
|
|
5
|
-
const IN_PROGRESS_STATUSES = new Set(["wait_for_reply", "additional_question", "suggested", "found_error", "recheck_requested"]);
|
|
6
4
|
function isAssignedTo(report, actorName) {
|
|
7
5
|
if (!actorName) {
|
|
8
6
|
return false;
|
|
9
7
|
}
|
|
10
8
|
return getReportCases(report).some((item) => item.assignee_name?.trim() === actorName);
|
|
11
9
|
}
|
|
10
|
+
function isCreatedBy(report, actorName) {
|
|
11
|
+
if (!actorName) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
return report.author_name?.trim() === actorName;
|
|
15
|
+
}
|
|
16
|
+
function hasReplyBy(report, actorName) {
|
|
17
|
+
if (!actorName) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return getReportReplies(report).some((reply) => {
|
|
21
|
+
if (reply.author_type === "system") {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return reply.author_name?.trim() === actorName;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
12
27
|
function countBy(reports, predicate) {
|
|
13
28
|
let count = 0;
|
|
14
29
|
for (const report of reports) {
|
|
@@ -21,57 +36,14 @@ function countBy(reports, predicate) {
|
|
|
21
36
|
function statItem(key, label, value) {
|
|
22
37
|
return { key, kind: "stat", label, display: formatStatCount(value) };
|
|
23
38
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const stats = panel.roleStats;
|
|
39
|
+
/** Shared header stats for every panel role: created / replied / assigned. */
|
|
40
|
+
export function buildPanelRoleStats({ reports, actorName, messages }) {
|
|
41
|
+
const stats = messages.panel.roleStats;
|
|
27
42
|
const statusOf = (report) => getFeedbackDisplayStatus(report, true);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
statItem("errors", stats.errors, countBy(reports, (report) => statusOf(report) === "found_error")),
|
|
34
|
-
statItem("recheck", stats.recheck, countBy(reports, (report) => statusOf(report) === "recheck_requested")),
|
|
35
|
-
];
|
|
36
|
-
case "developer":
|
|
37
|
-
return [
|
|
38
|
-
statItem("mine", stats.mine, countBy(reports, (report) => statusOf(report) !== "resolved" && isAssignedTo(report, actorName))),
|
|
39
|
-
statItem("needsReply", stats.needsReply, countBy(reports, (report) => {
|
|
40
|
-
const status = statusOf(report);
|
|
41
|
-
return status === "wait_for_reply" || status === "additional_question";
|
|
42
|
-
})),
|
|
43
|
-
statItem("reReview", stats.reReview, countBy(reports, (report) => statusOf(report) === "recheck_requested")),
|
|
44
|
-
];
|
|
45
|
-
case "designer":
|
|
46
|
-
return [
|
|
47
|
-
statItem("total", stats.total, reports.length),
|
|
48
|
-
statItem("review", stats.review, countBy(reports, (report) => IN_PROGRESS_STATUSES.has(statusOf(report)))),
|
|
49
|
-
statItem("reflected", stats.reflected, resolvedCount()),
|
|
50
|
-
];
|
|
51
|
-
case "planner": {
|
|
52
|
-
const total = reports.length;
|
|
53
|
-
const resolved = resolvedCount();
|
|
54
|
-
const completionRate = total > 0 ? Math.round((resolved / total) * 100) : 0;
|
|
55
|
-
return [
|
|
56
|
-
{ key: "completionRate", kind: "stat", label: stats.completionRate, display: total > 0 ? `${completionRate}%` : "-" },
|
|
57
|
-
statItem("today", stats.today, countBy(reports, (report) => isCreatedToday(report.created_at))),
|
|
58
|
-
statItem("issued", stats.issued, countBy(reports, (report) => statusOf(report) === "git_issued")),
|
|
59
|
-
];
|
|
60
|
-
}
|
|
61
|
-
case "general-user": {
|
|
62
|
-
const incomplete = countBy(reports, (report) => statusOf(report) !== "resolved");
|
|
63
|
-
if (reports.length === 0) {
|
|
64
|
-
return [{ key: "cta", kind: "cta", label: "", display: panel.roleStatsCta }];
|
|
65
|
-
}
|
|
66
|
-
return [statItem("incomplete", stats.incomplete, incomplete)];
|
|
67
|
-
}
|
|
68
|
-
case "general":
|
|
69
|
-
default:
|
|
70
|
-
return [
|
|
71
|
-
statItem("found", panel.statsFound, fallbackStats.found),
|
|
72
|
-
statItem("resolved", panel.statsResolved, fallbackStats.resolved),
|
|
73
|
-
statItem("inProgress", panel.statsInProgress, fallbackStats.inProgress),
|
|
74
|
-
];
|
|
75
|
-
}
|
|
43
|
+
return [
|
|
44
|
+
statItem("created", stats.created, countBy(reports, (report) => isCreatedBy(report, actorName))),
|
|
45
|
+
statItem("replied", stats.replied, countBy(reports, (report) => hasReplyBy(report, actorName))),
|
|
46
|
+
statItem("mine", stats.mine, countBy(reports, (report) => statusOf(report) !== "resolved" && isAssignedTo(report, actorName))),
|
|
47
|
+
];
|
|
76
48
|
}
|
|
77
49
|
//# sourceMappingURL=panelRoleStats.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panelRoleStats.js","sourceRoot":"","sources":["../../../src/utils/panel/panelRoleStats.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"panelRoleStats.js","sourceRoot":"","sources":["../../../src/utils/panel/panelRoleStats.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AASnE,SAAS,YAAY,CAAC,MAAsB,EAAE,SAAwB;IAClE,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,WAAW,CAAC,MAAsB,EAAE,SAAwB;IACjE,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,SAAS,CAAC;AACpD,CAAC;AAED,SAAS,UAAU,CAAC,MAAsB,EAAE,SAAwB;IAChE,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3C,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,SAAS,CAAC;IACnD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,OAAO,CAAC,OAAyB,EAAE,SAA8C;IACtF,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,CAAC;QACf,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,KAAa,EAAE,KAAa;IACvD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;AACzE,CAAC;AAQD,8EAA8E;AAC9E,MAAM,UAAU,mBAAmB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAA8B;IAC5F,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,CAAC,MAAsB,EAAE,EAAE,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEpF,OAAO;QACH,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QAChG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/F,QAAQ,CACJ,MAAM,EACN,KAAK,CAAC,IAAI,EACV,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,UAAU,IAAI,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CACnG;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const PANEL_FONT_FAMILY = "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif";
|
|
2
|
-
export declare const PANEL_NUMERIC_FONT_FAMILY = "
|
|
3
|
-
export declare const panelNumericClassName = "font-[
|
|
2
|
+
export declare const PANEL_NUMERIC_FONT_FAMILY = "Consolas, Monaco, Liberation Mono, Lucida Console, monospace";
|
|
3
|
+
export declare const panelNumericClassName = "font-[var(--coding-font)] tabular-nums";
|
|
4
4
|
//# sourceMappingURL=panelTypography.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panelTypography.d.ts","sourceRoot":"","sources":["../../../src/utils/panel/panelTypography.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,iGAA+F,CAAC;AAC9H,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"panelTypography.d.ts","sourceRoot":"","sources":["../../../src/utils/panel/panelTypography.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,iGAA+F,CAAC;AAC9H,eAAO,MAAM,yBAAyB,iEAAiE,CAAC;AAExG,eAAO,MAAM,qBAAqB,2CAA2C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export const PANEL_FONT_FAMILY = 'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif';
|
|
2
|
-
export const PANEL_NUMERIC_FONT_FAMILY = "
|
|
3
|
-
export const panelNumericClassName = "font-[
|
|
2
|
+
export const PANEL_NUMERIC_FONT_FAMILY = "Consolas, Monaco, Liberation Mono, Lucida Console, monospace";
|
|
3
|
+
export const panelNumericClassName = "font-[var(--coding-font)] tabular-nums";
|
|
4
4
|
//# sourceMappingURL=panelTypography.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panelTypography.js","sourceRoot":"","sources":["../../../src/utils/panel/panelTypography.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,4FAA4F,CAAC;AAC9H,MAAM,CAAC,MAAM,yBAAyB,GAAG,
|
|
1
|
+
{"version":3,"file":"panelTypography.js","sourceRoot":"","sources":["../../../src/utils/panel/panelTypography.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,4FAA4F,CAAC;AAC9H,MAAM,CAAC,MAAM,yBAAyB,GAAG,8DAA8D,CAAC;AAExG,MAAM,CAAC,MAAM,qBAAqB,GAAG,wCAAwC,CAAC"}
|
|
@@ -6,7 +6,8 @@ export declare function getReplyStatusTone(hasCompletedReply: boolean): {
|
|
|
6
6
|
color: string;
|
|
7
7
|
};
|
|
8
8
|
export declare function getMarkerColor(report: ReportFeedback, colors?: MarkerColorPreferences): string;
|
|
9
|
-
export declare function getMarkerDisplayLabel(report: ReportFeedback
|
|
9
|
+
export declare function getMarkerDisplayLabel(report: ReportFeedback): string | null;
|
|
10
|
+
export declare function hasMarkerReplyIndicator(report: ReportFeedback, replyCount?: number): boolean;
|
|
10
11
|
export declare function getStatusTone(status: ReportStatus): {
|
|
11
12
|
backgroundColor: string;
|
|
12
13
|
color: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reportVisual.d.ts","sourceRoot":"","sources":["../../../src/utils/report/reportVisual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,WAE9C;AAED,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,OAAO;;;EAI5D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,GAAE,sBAA8C,UAU5G;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"reportVisual.d.ts","sourceRoot":"","sources":["../../../src/utils/report/reportVisual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,WAE9C;AAED,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,OAAO;;;EAI5D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,GAAE,sBAA8C,UAU5G;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAM3E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,SAAwB,WAEjG;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY;;;EAcjD"}
|
|
@@ -18,15 +18,15 @@ export function getMarkerColor(report, colors = DEFAULT_MARKER_COLORS) {
|
|
|
18
18
|
}
|
|
19
19
|
return colors.open;
|
|
20
20
|
}
|
|
21
|
-
export function getMarkerDisplayLabel(report
|
|
21
|
+
export function getMarkerDisplayLabel(report) {
|
|
22
22
|
if (getReportCases(report).length > 1) {
|
|
23
23
|
return getIssueProgressLabel(report);
|
|
24
24
|
}
|
|
25
|
-
if (replyCount > 0) {
|
|
26
|
-
return `+${replyCount}`;
|
|
27
|
-
}
|
|
28
25
|
return null;
|
|
29
26
|
}
|
|
27
|
+
export function hasMarkerReplyIndicator(report, replyCount = getReplyCount(report)) {
|
|
28
|
+
return replyCount > 0;
|
|
29
|
+
}
|
|
30
30
|
export function getStatusTone(status) {
|
|
31
31
|
if (status === "resolved") {
|
|
32
32
|
return { backgroundColor: "#e8f5e9", color: "#2e7d32" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reportVisual.js","sourceRoot":"","sources":["../../../src/utils/report/reportVisual.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEtF,MAAM,UAAU,QAAQ,CAAC,MAAsB;IAC3C,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,iBAA0B;IACzD,OAAO,iBAAiB;QACpB,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QAClD,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAsB,EAAE,SAAiC,qBAAqB;IACzG,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB
|
|
1
|
+
{"version":3,"file":"reportVisual.js","sourceRoot":"","sources":["../../../src/utils/report/reportVisual.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEtF,MAAM,UAAU,QAAQ,CAAC,MAAsB;IAC3C,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,iBAA0B;IACzD,OAAO,iBAAiB;QACpB,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QAClD,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAsB,EAAE,SAAiC,qBAAqB;IACzG,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IACxD,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAsB,EAAE,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC;IAC9F,OAAO,UAAU,GAAG,CAAC,CAAC;AAC1B,CAAC;AAGD,MAAM,UAAU,aAAa,CAAC,MAAoB;IAC9C,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC5D,CAAC;IAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC5D,CAAC;IAED,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -6,4 +6,19 @@ export declare function formatClockTime(value: string): string;
|
|
|
6
6
|
export declare function formatTimeOnly(value: string, locale?: ReportLocale): string;
|
|
7
7
|
/** Compact clock for thread meta, e.g. `오후 01:30` / `1:30 PM`. */
|
|
8
8
|
export declare function formatTimeCompact(value: string, locale?: ReportLocale): string;
|
|
9
|
+
export type RelativeTimeUnit = "second" | "minute" | "hour" | "day" | "month" | "year";
|
|
10
|
+
export type RelativeTimeParts = {
|
|
11
|
+
unit: RelativeTimeUnit;
|
|
12
|
+
count: number;
|
|
13
|
+
};
|
|
14
|
+
export type RelativeTimeLabels = {
|
|
15
|
+
secondsAgo: (count: number) => string;
|
|
16
|
+
minutesAgo: (count: number) => string;
|
|
17
|
+
hoursAgo: (count: number) => string;
|
|
18
|
+
daysAgo: (count: number) => string;
|
|
19
|
+
monthsAgo: (count: number) => string;
|
|
20
|
+
yearsAgo: (count: number) => string;
|
|
21
|
+
};
|
|
22
|
+
export declare function getRelativeTimeParts(value: string, now?: Date): RelativeTimeParts | null;
|
|
23
|
+
export declare function formatRelativeTime(value: string, labels: RelativeTimeLabels, now?: Date): string;
|
|
9
24
|
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/utils/shared/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,wBAAgB,aAAa,WAM5B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAmB,UAEpE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAmB,UAgBxE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,UAM5C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAmB,UAuBxE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAmB,UAqB3E"}
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/utils/shared/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,wBAAgB,aAAa,WAM5B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAmB,UAEpE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAmB,UAgBxE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,UAM5C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAmB,UAuBxE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,YAAmB,UAqB3E;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC,CAAC;AAsCF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,iBAAiB,GAAG,IAAI,CAgCpG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,GAAE,IAAiB,UAqBnG"}
|