@e-llm-studio/citation 0.0.251 → 0.0.253
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/cjs/features/CognitiveCompare/CitationAnchor.js +1 -1
- package/dist/cjs/features/CognitiveCompare/CitationAnchor.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/CitationRenderer.js +1 -1
- package/dist/cjs/features/CognitiveCompare/CitationRenderer.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/CitationRendererInner.js +2 -0
- package/dist/cjs/features/CognitiveCompare/CitationRendererInner.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/CognitiveCompare.js +1 -1
- package/dist/cjs/features/CognitiveCompare/CognitiveCompare.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/CognitiveCompareConstants.js +1 -1
- package/dist/cjs/features/CognitiveCompare/CognitiveCompareConstants.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/CognitiveComparehelpers.js +1 -1
- package/dist/cjs/features/CognitiveCompare/CognitiveComparehelpers.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/CognitivePopup.js +1 -1
- package/dist/cjs/features/CognitiveCompare/CognitivePopup.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/CompareContext.js +1 -1
- package/dist/cjs/features/CognitiveCompare/CompareContext.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/GptWebCitationPanel.js +2 -0
- package/dist/cjs/features/CognitiveCompare/GptWebCitationPanel.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/Guidelines/components/GuidelinePanel.js +1 -1
- package/dist/cjs/features/CognitiveCompare/Guidelines/components/GuidelinePanel.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/Guidelines/components/WebGptPanel.js +1 -1
- package/dist/cjs/features/CognitiveCompare/Guidelines/components/WebGptPanel.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/Guidelines/utils/guidelineTargets.js +2 -0
- package/dist/cjs/features/CognitiveCompare/Guidelines/utils/guidelineTargets.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/Guidelines/utils/hasGptCitationObjects.js +2 -0
- package/dist/cjs/features/CognitiveCompare/Guidelines/utils/hasGptCitationObjects.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/Guidelines/utils/processGuidelinesMarkdown.js +1 -1
- package/dist/cjs/features/CognitiveCompare/Guidelines/utils/processGuidelinesMarkdown.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/Guidelines/utils/resolveGuidelineSelection.js +2 -0
- package/dist/cjs/features/CognitiveCompare/Guidelines/utils/resolveGuidelineSelection.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/components/GuidelineSkeletonLoader.js +2 -0
- package/dist/cjs/features/CognitiveCompare/components/GuidelineSkeletonLoader.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/components/LHSSectionRow.js +1 -1
- package/dist/cjs/features/CognitiveCompare/components/LHSSectionRow.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/components/RHSSectionRow.js +1 -1
- package/dist/cjs/features/CognitiveCompare/components/RHSSectionRow.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/components/SectionAccordion.js +1 -1
- package/dist/cjs/features/CognitiveCompare/components/SectionAccordion.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/components/SubSectionAccordion.js +1 -1
- package/dist/cjs/features/CognitiveCompare/components/SubSectionAccordion.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/components/SvgConnectors.js +1 -1
- package/dist/cjs/features/CognitiveCompare/components/SvgConnectors.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/hooks/memoizedMarkdown.js +1 -1
- package/dist/cjs/features/CognitiveCompare/hooks/memoizedMarkdown.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/hooks/useCompareData.js +1 -1
- package/dist/cjs/features/CognitiveCompare/hooks/useCompareData.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/hooks/useLinesCalculator.js +1 -1
- package/dist/cjs/features/CognitiveCompare/hooks/useLinesCalculator.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/hooks/useOnDemandCitationCache.js +2 -0
- package/dist/cjs/features/CognitiveCompare/hooks/useOnDemandCitationCache.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/hooks/useSideBySide.js +1 -1
- package/dist/cjs/features/CognitiveCompare/hooks/useSideBySide.js.map +1 -1
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/cacheKey.js +2 -0
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/cacheKey.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/contextBuilder.js +2 -0
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/contextBuilder.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/href.js +2 -0
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/href.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/payload.js +2 -0
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/payload.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/response.js +2 -0
- package/dist/cjs/features/CognitiveCompare/onDemandCitations/response.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/utils/normalizeCompactedGfmTables.js +2 -0
- package/dist/cjs/features/CognitiveCompare/utils/normalizeCompactedGfmTables.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/utils/normalizeInlineMarkdown.js +2 -0
- package/dist/cjs/features/CognitiveCompare/utils/normalizeInlineMarkdown.js.map +1 -0
- package/dist/cjs/features/CognitiveCompare/utils/normalizeRedlineMarkdown.js +2 -0
- package/dist/cjs/features/CognitiveCompare/utils/normalizeRedlineMarkdown.js.map +1 -0
- package/dist/cjs/features/PdfViewer/PdfContainer.js +1 -1
- package/dist/cjs/features/PdfViewer/PdfContainer.js.map +1 -1
- package/dist/cjs/features/PdfViewer/PdfViewer.js +1 -1
- package/dist/cjs/features/PdfViewer/PdfViewer.js.map +1 -1
- package/dist/cjs/features/SegmentReviewComponents/ApprovalDescriptionBanner.js +2 -0
- package/dist/cjs/features/SegmentReviewComponents/ApprovalDescriptionBanner.js.map +1 -0
- package/dist/cjs/features/SegmentReviewComponents/BoundaryCard.js +1 -1
- package/dist/cjs/features/SegmentReviewComponents/BoundaryCard.js.map +1 -1
- package/dist/cjs/features/SegmentReviewComponents/RevertCard.js +1 -1
- package/dist/cjs/features/SegmentReviewComponents/RevertCard.js.map +1 -1
- package/dist/cjs/features/SegmentReviewComponents/SaveAsLearningCard.js +2 -0
- package/dist/cjs/features/SegmentReviewComponents/SaveAsLearningCard.js.map +1 -0
- package/dist/cjs/features/SegmentReviewComponents/SegmentReviewPdfWrapper.js +1 -1
- package/dist/cjs/features/SegmentReviewComponents/SegmentReviewPdfWrapper.js.map +1 -1
- package/dist/cjs/hooks/useOnDemandCitationFetch.js +1 -1
- package/dist/cjs/hooks/useOnDemandCitationFetch.js.map +1 -1
- package/dist/cjs/service/onDemandApi.js +1 -1
- package/dist/cjs/service/onDemandApi.js.map +1 -1
- package/dist/features/CognitiveCompare/CitationAnchor.js +1 -1
- package/dist/features/CognitiveCompare/CitationAnchor.js.map +1 -1
- package/dist/features/CognitiveCompare/CitationRenderer.js +1 -1
- package/dist/features/CognitiveCompare/CitationRenderer.js.map +1 -1
- package/dist/features/CognitiveCompare/CitationRendererInner.js +2 -0
- package/dist/features/CognitiveCompare/CitationRendererInner.js.map +1 -0
- package/dist/features/CognitiveCompare/CognitiveCompare.js +1 -1
- package/dist/features/CognitiveCompare/CognitiveCompare.js.map +1 -1
- package/dist/features/CognitiveCompare/CognitiveCompareConstants.js +1 -1
- package/dist/features/CognitiveCompare/CognitiveCompareConstants.js.map +1 -1
- package/dist/features/CognitiveCompare/CognitiveComparehelpers.js +1 -1
- package/dist/features/CognitiveCompare/CognitiveComparehelpers.js.map +1 -1
- package/dist/features/CognitiveCompare/CognitivePopup.js +1 -1
- package/dist/features/CognitiveCompare/CognitivePopup.js.map +1 -1
- package/dist/features/CognitiveCompare/CompareContext.js +1 -1
- package/dist/features/CognitiveCompare/CompareContext.js.map +1 -1
- package/dist/features/CognitiveCompare/GptWebCitationPanel.js +2 -0
- package/dist/features/CognitiveCompare/GptWebCitationPanel.js.map +1 -0
- package/dist/features/CognitiveCompare/Guidelines/components/GuidelinePanel.js +1 -1
- package/dist/features/CognitiveCompare/Guidelines/components/GuidelinePanel.js.map +1 -1
- package/dist/features/CognitiveCompare/Guidelines/components/WebGptPanel.js +1 -1
- package/dist/features/CognitiveCompare/Guidelines/components/WebGptPanel.js.map +1 -1
- package/dist/features/CognitiveCompare/Guidelines/utils/guidelineTargets.js +2 -0
- package/dist/features/CognitiveCompare/Guidelines/utils/guidelineTargets.js.map +1 -0
- package/dist/features/CognitiveCompare/Guidelines/utils/hasGptCitationObjects.js +2 -0
- package/dist/features/CognitiveCompare/Guidelines/utils/hasGptCitationObjects.js.map +1 -0
- package/dist/features/CognitiveCompare/Guidelines/utils/processGuidelinesMarkdown.js +1 -1
- package/dist/features/CognitiveCompare/Guidelines/utils/processGuidelinesMarkdown.js.map +1 -1
- package/dist/features/CognitiveCompare/Guidelines/utils/resolveGuidelineSelection.js +2 -0
- package/dist/features/CognitiveCompare/Guidelines/utils/resolveGuidelineSelection.js.map +1 -0
- package/dist/features/CognitiveCompare/components/GuidelineSkeletonLoader.js +2 -0
- package/dist/features/CognitiveCompare/components/GuidelineSkeletonLoader.js.map +1 -0
- package/dist/features/CognitiveCompare/components/LHSSectionRow.js +1 -1
- package/dist/features/CognitiveCompare/components/LHSSectionRow.js.map +1 -1
- package/dist/features/CognitiveCompare/components/RHSSectionRow.js +1 -1
- package/dist/features/CognitiveCompare/components/RHSSectionRow.js.map +1 -1
- package/dist/features/CognitiveCompare/components/SectionAccordion.js +1 -1
- package/dist/features/CognitiveCompare/components/SectionAccordion.js.map +1 -1
- package/dist/features/CognitiveCompare/components/SubSectionAccordion.js +1 -1
- package/dist/features/CognitiveCompare/components/SubSectionAccordion.js.map +1 -1
- package/dist/features/CognitiveCompare/components/SvgConnectors.js +1 -1
- package/dist/features/CognitiveCompare/components/SvgConnectors.js.map +1 -1
- package/dist/features/CognitiveCompare/hooks/memoizedMarkdown.js +1 -1
- package/dist/features/CognitiveCompare/hooks/memoizedMarkdown.js.map +1 -1
- package/dist/features/CognitiveCompare/hooks/useCompareData.js +1 -1
- package/dist/features/CognitiveCompare/hooks/useCompareData.js.map +1 -1
- package/dist/features/CognitiveCompare/hooks/useLinesCalculator.js +1 -1
- package/dist/features/CognitiveCompare/hooks/useLinesCalculator.js.map +1 -1
- package/dist/features/CognitiveCompare/hooks/useOnDemandCitationCache.js +2 -0
- package/dist/features/CognitiveCompare/hooks/useOnDemandCitationCache.js.map +1 -0
- package/dist/features/CognitiveCompare/hooks/useSideBySide.js +1 -1
- package/dist/features/CognitiveCompare/hooks/useSideBySide.js.map +1 -1
- package/dist/features/CognitiveCompare/onDemandCitations/cacheKey.js +2 -0
- package/dist/features/CognitiveCompare/onDemandCitations/cacheKey.js.map +1 -0
- package/dist/features/CognitiveCompare/onDemandCitations/contextBuilder.js +2 -0
- package/dist/features/CognitiveCompare/onDemandCitations/contextBuilder.js.map +1 -0
- package/dist/features/CognitiveCompare/onDemandCitations/href.js +2 -0
- package/dist/features/CognitiveCompare/onDemandCitations/href.js.map +1 -0
- package/dist/features/CognitiveCompare/onDemandCitations/payload.js +2 -0
- package/dist/features/CognitiveCompare/onDemandCitations/payload.js.map +1 -0
- package/dist/features/CognitiveCompare/onDemandCitations/response.js +2 -0
- package/dist/features/CognitiveCompare/onDemandCitations/response.js.map +1 -0
- package/dist/features/CognitiveCompare/utils/normalizeCompactedGfmTables.js +2 -0
- package/dist/features/CognitiveCompare/utils/normalizeCompactedGfmTables.js.map +1 -0
- package/dist/features/CognitiveCompare/utils/normalizeInlineMarkdown.js +2 -0
- package/dist/features/CognitiveCompare/utils/normalizeInlineMarkdown.js.map +1 -0
- package/dist/features/CognitiveCompare/utils/normalizeRedlineMarkdown.js +2 -0
- package/dist/features/CognitiveCompare/utils/normalizeRedlineMarkdown.js.map +1 -0
- package/dist/features/PdfViewer/PdfContainer.js +1 -1
- package/dist/features/PdfViewer/PdfContainer.js.map +1 -1
- package/dist/features/PdfViewer/PdfViewer.js +1 -1
- package/dist/features/PdfViewer/PdfViewer.js.map +1 -1
- package/dist/features/SegmentReviewComponents/ApprovalDescriptionBanner.js +2 -0
- package/dist/features/SegmentReviewComponents/ApprovalDescriptionBanner.js.map +1 -0
- package/dist/features/SegmentReviewComponents/BoundaryCard.js +1 -1
- package/dist/features/SegmentReviewComponents/BoundaryCard.js.map +1 -1
- package/dist/features/SegmentReviewComponents/RevertCard.js +1 -1
- package/dist/features/SegmentReviewComponents/RevertCard.js.map +1 -1
- package/dist/features/SegmentReviewComponents/SaveAsLearningCard.js +2 -0
- package/dist/features/SegmentReviewComponents/SaveAsLearningCard.js.map +1 -0
- package/dist/features/SegmentReviewComponents/SegmentReviewPdfWrapper.js +1 -1
- package/dist/features/SegmentReviewComponents/SegmentReviewPdfWrapper.js.map +1 -1
- package/dist/hooks/useOnDemandCitationFetch.js +1 -1
- package/dist/hooks/useOnDemandCitationFetch.js.map +1 -1
- package/dist/service/onDemandApi.js +1 -1
- package/dist/service/onDemandApi.js.map +1 -1
- package/dist/types/features/CognitiveCompare/CitationAnchor.d.ts +2 -0
- package/dist/types/features/CognitiveCompare/CitationAnchor.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/CitationRenderer.d.ts +8 -1
- package/dist/types/features/CognitiveCompare/CitationRenderer.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/CitationRendererInner.d.ts +13 -0
- package/dist/types/features/CognitiveCompare/CitationRendererInner.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/CognitiveCompare.d.ts +1 -1
- package/dist/types/features/CognitiveCompare/CognitiveCompare.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/CognitiveCompareConstants.d.ts +1 -1
- package/dist/types/features/CognitiveCompare/CognitiveCompareConstants.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/CognitiveCompareTypes.d.ts +14 -1
- package/dist/types/features/CognitiveCompare/CognitiveCompareTypes.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/CognitiveComparehelpers.d.ts +12 -0
- package/dist/types/features/CognitiveCompare/CognitiveComparehelpers.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/CognitivePopup.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/CompareContext.d.ts +10 -1
- package/dist/types/features/CognitiveCompare/CompareContext.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/GptWebCitationPanel.d.ts +7 -0
- package/dist/types/features/CognitiveCompare/GptWebCitationPanel.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/Guidelines/components/GuidelinePanel.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/Guidelines/components/WebGptPanel.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/Guidelines/utils/guidelineTargets.d.ts +3 -0
- package/dist/types/features/CognitiveCompare/Guidelines/utils/guidelineTargets.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/Guidelines/utils/hasGptCitationObjects.d.ts +3 -0
- package/dist/types/features/CognitiveCompare/Guidelines/utils/hasGptCitationObjects.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/Guidelines/utils/processGuidelinesMarkdown.d.ts +14 -1
- package/dist/types/features/CognitiveCompare/Guidelines/utils/processGuidelinesMarkdown.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/Guidelines/utils/resolveGuidelineSelection.d.ts +19 -0
- package/dist/types/features/CognitiveCompare/Guidelines/utils/resolveGuidelineSelection.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/components/GuidelineSkeletonLoader.d.ts +8 -0
- package/dist/types/features/CognitiveCompare/components/GuidelineSkeletonLoader.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/components/LHSSectionRow.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/components/RHSSectionRow.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/components/SectionAccordion.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/components/SubSectionAccordion.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/components/SvgConnectors.d.ts +3 -2
- package/dist/types/features/CognitiveCompare/components/SvgConnectors.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/hooks/memoizedMarkdown.d.ts +2 -1
- package/dist/types/features/CognitiveCompare/hooks/memoizedMarkdown.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/hooks/useCompareData.d.ts +1 -1
- package/dist/types/features/CognitiveCompare/hooks/useCompareData.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/hooks/useLinesCalculator.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/hooks/useOnDemandCitationCache.d.ts +10 -0
- package/dist/types/features/CognitiveCompare/hooks/useOnDemandCitationCache.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/hooks/useSideBySide.d.ts.map +1 -1
- package/dist/types/features/CognitiveCompare/onDemandCitations/cacheKey.d.ts +3 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/cacheKey.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/contextBuilder.d.ts +16 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/contextBuilder.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/href.d.ts +6 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/href.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/index.d.ts +7 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/index.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/payload.d.ts +4 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/payload.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/response.d.ts +3 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/response.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/types.d.ts +134 -0
- package/dist/types/features/CognitiveCompare/onDemandCitations/types.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/utils/normalizeCompactedGfmTables.d.ts +7 -0
- package/dist/types/features/CognitiveCompare/utils/normalizeCompactedGfmTables.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/utils/normalizeInlineMarkdown.d.ts +6 -0
- package/dist/types/features/CognitiveCompare/utils/normalizeInlineMarkdown.d.ts.map +1 -0
- package/dist/types/features/CognitiveCompare/utils/normalizeRedlineMarkdown.d.ts +6 -0
- package/dist/types/features/CognitiveCompare/utils/normalizeRedlineMarkdown.d.ts.map +1 -0
- package/dist/types/features/PdfViewer/PdfContainer.d.ts +3 -2
- package/dist/types/features/PdfViewer/PdfContainer.d.ts.map +1 -1
- package/dist/types/features/PdfViewer/PdfViewer.d.ts +3 -2
- package/dist/types/features/PdfViewer/PdfViewer.d.ts.map +1 -1
- package/dist/types/features/SegmentReviewComponents/ApprovalDescriptionBanner.d.ts +11 -0
- package/dist/types/features/SegmentReviewComponents/ApprovalDescriptionBanner.d.ts.map +1 -0
- package/dist/types/features/SegmentReviewComponents/BoundaryCard.d.ts.map +1 -1
- package/dist/types/features/SegmentReviewComponents/RevertCard.d.ts +9 -1
- package/dist/types/features/SegmentReviewComponents/RevertCard.d.ts.map +1 -1
- package/dist/types/features/SegmentReviewComponents/SaveAsLearningCard.d.ts +15 -0
- package/dist/types/features/SegmentReviewComponents/SaveAsLearningCard.d.ts.map +1 -0
- package/dist/types/features/SegmentReviewComponents/SegmentReviewPdfWrapper.d.ts +14 -1
- package/dist/types/features/SegmentReviewComponents/SegmentReviewPdfWrapper.d.ts.map +1 -1
- package/dist/types/hooks/useOnDemandCitationFetch.d.ts.map +1 -1
- package/dist/types/service/onDemandApi.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/features/Bookemon/BookemonStyles.js +0 -2
- package/dist/cjs/features/Bookemon/BookemonStyles.js.map +0 -1
- package/dist/cjs/lib/ui/icons.js +0 -2
- package/dist/cjs/lib/ui/icons.js.map +0 -1
- package/dist/cjs/lib/ui/materialCompat.js +0 -2
- package/dist/cjs/lib/ui/materialCompat.js.map +0 -1
- package/dist/features/Bookemon/BookemonStyles.js +0 -2
- package/dist/features/Bookemon/BookemonStyles.js.map +0 -1
- package/dist/lib/ui/icons.js +0 -2
- package/dist/lib/ui/icons.js.map +0 -1
- package/dist/lib/ui/materialCompat.js +0 -2
- package/dist/lib/ui/materialCompat.js.map +0 -1
- package/dist/types/features/Bookemon/BookemonStyles.d.ts +0 -6
- package/dist/types/features/Bookemon/BookemonStyles.d.ts.map +0 -1
- package/dist/types/lib/ui/icons.d.ts +0 -46
- package/dist/types/lib/ui/icons.d.ts.map +0 -1
- package/dist/types/lib/ui/materialCompat.d.ts +0 -117
- package/dist/types/lib/ui/materialCompat.d.ts.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),t=require("@mui/material/Box"),i=require("@mui/material/Button"),n=require("@mui/material/ButtonBase"),o=require("@mui/material/Divider"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),t=require("@mui/material/Box"),i=require("@mui/material/Button"),n=require("@mui/material/ButtonBase"),o=require("@mui/material/Divider"),a=require("@mui/material/Stack"),l=require("@mui/material/Tooltip"),d=require("@mui/material/Typography"),s=require("lucide-react");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=c(t),x=c(i),f=c(n),h=c(o),g=c(a),m=c(l),b=c(d);const p=({startPage:e,endPage:r})=>`Pages ${e}-${r}`,v=({segment:r})=>e.jsxs(u.default,{sx:{px:.75,py:.625,minWidth:0},children:[e.jsx(b.default,{sx:{color:"text.secondary",fontSize:11,lineHeight:1.3,overflowWrap:"anywhere"},children:r.title}),e.jsx(b.default,{sx:{color:"text.primary",fontSize:12,fontWeight:400,lineHeight:1.3},children:p(r)})]});const j={minHeight:34,borderColor:"#94A3B8",color:"#64748B",borderRadius:"8px",fontSize:12,fontWeight:500,textTransform:"none"},y={minHeight:34,borderRadius:"8px",bgcolor:"#4F46E5",fontSize:12,fontWeight:500,textTransform:"none",boxShadow:"none","&:hover":{bgcolor:"#4338CA",boxShadow:"none"}};exports.default=function({icon:t,title:i,pageRange:n,description:o,onRevert:a,onRevertComplete:l,onRevertError:d,revertData:c,confirmDisabled:p=!1,showDocumentHeader:C=!0,onSaveAsLearning:S,onSaveAsLearningError:R,saveAsLearningDisabled:w=!1}){const[W,z]=r.useState(!1),[k,H]=r.useState(!1),F=c.previousSegments.length>0,q=async()=>{if(!k&&!p){H(!0);try{const e=await a();l?.(e)}catch(e){d?.(e)}finally{H(!1)}}};return e.jsxs(g.default,{spacing:.875,sx:{minWidth:0},children:[C&&e.jsxs(u.default,{sx:{minWidth:0},children:[e.jsx(b.default,{sx:{color:"text.primary",fontSize:14,fontWeight:500,lineHeight:1.4,overflowWrap:"anywhere"},children:i}),e.jsx(b.default,{sx:{color:"text.secondary",fontSize:12,lineHeight:1.4},children:n})]}),e.jsx(h.default,{sx:{borderStyle:"dashed",borderColor:"#CBD5E1"}}),W?e.jsxs(g.default,{spacing:.75,children:[e.jsxs(f.default,{onClick:()=>z(!1),"aria-label":"Back from revert confirmation",sx:{width:"fit-content",borderRadius:.5,color:"text.primary",fontSize:13,fontWeight:500,lineHeight:1.3,textAlign:"left"},children:[e.jsx(u.default,{component:"span","aria-hidden":"true",sx:{mr:.625,alignItems:"center",display:"flex"},children:e.jsx(s.ChevronLeft,{size:16})}),"Revert"]}),F?e.jsxs(u.default,{sx:{p:.75,borderRadius:1,bgcolor:"#F8FAFC"},children:[e.jsx(b.default,{sx:{mb:.375,color:"text.secondary",fontSize:12},children:"Current"}),e.jsx(u.default,{sx:{mb:.75,border:"1px solid #E2E8F0",borderRadius:1,bgcolor:"background.paper"},children:e.jsx(v,{segment:c.currentSegment})}),e.jsx(b.default,{sx:{mb:.375,color:"text.secondary",fontSize:12},children:"After Revert"}),e.jsx(u.default,{sx:{border:"1px solid #E2E8F0",borderRadius:1,bgcolor:"background.paper",overflow:"hidden"},children:c.previousSegments.map((r,t)=>e.jsxs(u.default,{children:[t>0&&e.jsx(h.default,{sx:{borderColor:"#E2E8F0"}}),e.jsx(v,{segment:r})]},`${r.title}-${r.startPage}-${r.endPage}-${t}`))}),e.jsxs(g.default,{direction:"row",spacing:1,sx:{mt:.875},children:[e.jsx(x.default,{variant:"outlined",fullWidth:!0,disabled:k,onClick:()=>z(!1),sx:j,children:"Cancel"}),e.jsx(m.default,{title:p?"Revert data is not present, cannot revert this":"",disableHoverListener:!p,arrow:!0,children:e.jsx("span",{style:{flex:1},children:e.jsx(x.default,{variant:"contained",fullWidth:!0,disabled:k||p,onClick:()=>{q()},sx:y,children:k?"Reverting…":"Confirm"})})})]})]}):e.jsxs(u.default,{sx:{p:.875,borderRadius:1,bgcolor:"#F8FAFC"},children:[e.jsx(b.default,{sx:{color:"text.secondary",fontSize:12,fontWeight:500},children:"Revert approval?"}),e.jsx(b.default,{sx:{mt:.75,color:"text.secondary",fontSize:13,lineHeight:1.45},children:"This document will be moved back to pending review and will need to be confirmed again."}),e.jsxs(g.default,{direction:"row",spacing:1,sx:{mt:1},children:[e.jsx(x.default,{variant:"outlined",fullWidth:!0,disabled:k,onClick:()=>z(!1),sx:j,children:"Cancel"}),e.jsx(m.default,{title:p?"Revert data is not present, cannot revert this":"",disableHoverListener:!p,arrow:!0,children:e.jsx("span",{style:{flex:1},children:e.jsx(x.default,{variant:"contained",fullWidth:!0,disabled:k||p,onClick:()=>{q()},sx:y,children:k?"Reverting…":"Confirm"})})})]})]})]}):e.jsx(x.default,{variant:"outlined",fullWidth:!0,onClick:()=>z(!0),sx:{minHeight:36,borderColor:"#9B8AFB",color:"#5925DC",borderRadius:2,fontSize:13,fontWeight:600,textTransform:"none","&:hover":{borderColor:"secondary.dark",bgcolor:"rgba(79, 70, 229, 0.04)"}},children:"Revert"})]})};
|
|
2
2
|
//# sourceMappingURL=RevertCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevertCard.js","sources":["../../../../src/features/SegmentReviewComponents/RevertCard.tsx"],"sourcesContent":["import { useState, type ReactNode } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { ChevronLeft } from 'lucide-react';\n\nexport interface SegmentData {\n title: string;\n startPage: number;\n endPage: number;\n}\n\nexport interface RevertData {\n currentSegment: SegmentData;\n previousSegments: SegmentData[];\n}\n\n/** Value returned by the host after the revert request and refresh complete. */\nexport interface RevertActionResult {\n message?: string | null;\n}\n\nexport interface RevertCardProps {\n icon: ReactNode;\n title: string;\n pageRange: string;\n description: string | null;\n onRevert: () => void | RevertActionResult | Promise<void | RevertActionResult>;\n /** Called only after `onRevert` completes successfully. */\n onRevertComplete?: (result: void | RevertActionResult) => void;\n onRevertError?: (error: unknown) => void;\n revertData: RevertData;\n /** Prevent submission when the host cannot provide a valid revert request. */\n confirmDisabled?: boolean;\n /** Hide when the surrounding reviewed-card shell already renders it. */\n showDocumentHeader?: boolean;\n}\n\nconst formatPageRange = ({ startPage, endPage }: SegmentData) =>\n `Pages ${startPage}-${endPage}`;\n\nconst SegmentSummary = ({ segment }: { segment: SegmentData }) => (\n <Box sx={{ px: 0.75, py: 0.625, minWidth: 0 }}>\n <Typography\n sx={{\n color: 'text.secondary',\n fontSize: 11,\n lineHeight: 1.3,\n overflowWrap: 'anywhere',\n }}\n >\n {segment.title}\n </Typography>\n <Typography\n sx={{\n color: 'text.primary',\n fontSize: 12,\n fontWeight: 400,\n lineHeight: 1.3,\n }}\n >\n {formatPageRange(segment)}\n </Typography>\n </Box>\n);\n\n/**\n * Displays an approved action summary and reveals the appropriate revert\n * confirmation after the user selects Revert. An empty `previousSegments`\n * collection represents keep-as-is; structural changes provide the segments\n * that will be restored after reverting.\n */\nexport default function RevertCard({\n icon,\n title,\n pageRange,\n description,\n onRevert,\n onRevertComplete,\n onRevertError,\n revertData,\n confirmDisabled = false,\n showDocumentHeader = true,\n}: RevertCardProps) {\n const [isConfirming, setIsConfirming] = useState(false);\n const [isReverting, setIsReverting] = useState(false);\n const hasStructuralChanges = revertData.previousSegments.length > 0;\n const handleConfirm = async () => {\n if (isReverting || confirmDisabled) return;\n setIsReverting(true);\n\n try {\n const result = await onRevert();\n onRevertComplete?.(result);\n } catch (error) {\n onRevertError?.(error);\n } finally {\n setIsReverting(false);\n }\n };\n\n return (\n <Stack spacing={0.875} sx={{ minWidth: 0 }}>\n {showDocumentHeader && (\n <Box sx={{ minWidth: 0 }}>\n <Typography\n sx={{\n color: 'text.primary',\n fontSize: 14,\n fontWeight: 500,\n lineHeight: 1.4,\n overflowWrap: 'anywhere',\n }}\n >\n {title}\n </Typography>\n <Typography\n sx={{ color: 'text.secondary', fontSize: 12, lineHeight: 1.4 }}\n >\n {pageRange}\n </Typography>\n </Box>\n )}\n\n {description && <Stack\n direction=\"row\"\n alignItems=\"flex-start\"\n spacing={0.625}\n sx={{\n px: 0.75,\n py: 0.625,\n border: '1px solid #86EFAC',\n borderRadius: 2,\n bgcolor: '#FFFFFF',\n color: '#16A34A',\n }}\n >\n <Box\n aria-hidden=\"true\"\n sx={{ display: 'flex', flexShrink: 0, mt: '1px', fontSize: 14 }}\n >\n {icon}\n </Box>\n <Typography\n sx={{\n minWidth: 0,\n color: 'inherit',\n fontSize: 11,\n lineHeight: 1.5,\n overflowWrap: 'anywhere',\n }}\n >\n {description}\n </Typography>\n </Stack>}\n\n <Divider sx={{ borderStyle: 'dashed', borderColor: '#CBD5E1' }} />\n\n {!isConfirming ? (\n <Button\n variant=\"outlined\"\n fullWidth\n onClick={() => setIsConfirming(true)}\n sx={{\n minHeight: 36,\n borderColor: '#9B8AFB',\n color: '#5925DC',\n borderRadius: 2,\n fontSize: 13,\n fontWeight: 600,\n textTransform: 'none',\n '&:hover': {\n borderColor: 'secondary.dark',\n bgcolor: 'rgba(79, 70, 229, 0.04)',\n },\n }}\n >\n Revert\n </Button>\n ) : (\n <Stack spacing={0.75}>\n <ButtonBase\n onClick={() => setIsConfirming(false)}\n aria-label=\"Back from revert confirmation\"\n sx={{\n width: 'fit-content',\n borderRadius: 0.5,\n color: 'text.primary',\n fontSize: 13,\n fontWeight: 500,\n lineHeight: 1.3,\n textAlign: 'left',\n }}\n >\n <Box component=\"span\" aria-hidden=\"true\" sx={{ mr: 0.625, alignItems :'center', display: \"flex\" }}>\n <ChevronLeft size={16} />\n </Box>\n Revert\n </ButtonBase>\n\n {hasStructuralChanges ? (\n <Box\n sx={{\n p: 0.75,\n borderRadius: 1,\n bgcolor: '#F8FAFC',\n }}\n >\n <Typography sx={{ mb: 0.375, color: 'text.secondary', fontSize: 12 }}>\n Current\n </Typography>\n <Box\n sx={{\n mb: 0.75,\n border: '1px solid #E2E8F0',\n borderRadius: 1,\n bgcolor: 'background.paper',\n }}\n >\n <SegmentSummary segment={revertData.currentSegment} />\n </Box>\n\n <Typography sx={{ mb: 0.375, color: 'text.secondary', fontSize: 12 }}>\n After Revert\n </Typography>\n <Box\n sx={{\n border: '1px solid #E2E8F0',\n borderRadius: 1,\n bgcolor: 'background.paper',\n overflow: 'hidden',\n }}\n >\n {revertData.previousSegments.map((segment, index) => (\n <Box key={`${segment.title}-${segment.startPage}-${segment.endPage}-${index}`}>\n {index > 0 && <Divider sx={{ borderColor: '#E2E8F0' }} />}\n <SegmentSummary segment={segment} />\n </Box>\n ))}\n </Box>\n\n <Stack direction=\"row\" spacing={1} sx={{ mt: 0.875 }}>\n <Button\n variant=\"outlined\"\n fullWidth\n disabled={isReverting}\n onClick={() => setIsConfirming(false)}\n sx={confirmationButtonSx}\n >\n Cancel\n </Button>\n <Tooltip\n title={confirmDisabled ? 'Revert data is not present, cannot revert this' : ''}\n disableHoverListener={!confirmDisabled}\n arrow\n >\n <span style={{ flex: 1 }}>\n <Button\n variant=\"contained\"\n fullWidth\n disabled={isReverting || confirmDisabled}\n onClick={() => { void handleConfirm(); }}\n sx={confirmButtonSx}\n >\n {isReverting ? 'Reverting…' : 'Confirm'}\n </Button>\n </span>\n </Tooltip>\n </Stack>\n </Box>\n ) : (\n <Box\n sx={{\n p: 0.875,\n borderRadius: 1,\n bgcolor: '#F8FAFC',\n }}\n >\n <Typography\n sx={{ color: 'text.secondary', fontSize: 12, fontWeight: 500 }}\n >\n Revert approval?\n </Typography>\n <Typography\n sx={{ mt: 0.75, color: 'text.secondary', fontSize: 13, lineHeight: 1.45 }}\n >\n This document will be moved back to pending review and will need\n to be confirmed again.\n </Typography>\n <Stack direction=\"row\" spacing={1} sx={{ mt: 1 }}>\n <Button\n variant=\"outlined\"\n fullWidth\n disabled={isReverting}\n onClick={() => setIsConfirming(false)}\n sx={confirmationButtonSx}\n >\n Cancel\n </Button>\n <Tooltip\n title={confirmDisabled ? 'Revert data is not present, cannot revert this' : ''}\n disableHoverListener={!confirmDisabled}\n arrow\n >\n <span style={{ flex: 1 }}>\n <Button\n variant=\"contained\"\n fullWidth\n disabled={isReverting || confirmDisabled}\n onClick={() => { void handleConfirm(); }}\n sx={confirmButtonSx}\n >\n {isReverting ? 'Reverting…' : 'Confirm'}\n </Button>\n </span>\n </Tooltip>\n </Stack>\n </Box>\n )}\n </Stack>\n )}\n </Stack>\n );\n}\n\nconst confirmationButtonSx = {\n minHeight: 34,\n borderColor: '#94A3B8',\n color: '#64748B',\n borderRadius: \"8px\",\n fontSize: 12,\n fontWeight: 500,\n textTransform: 'none',\n};\n\nconst confirmButtonSx = {\n minHeight: 34,\n borderRadius: \"8px\",\n bgcolor: '#4F46E5',\n fontSize: 12,\n fontWeight: 500,\n textTransform: 'none',\n boxShadow: 'none',\n '&:hover': { bgcolor: '#4338CA', boxShadow: 'none' },\n};\n"],"names":["formatPageRange","startPage","endPage","SegmentSummary","segment","jsxs","Box","sx","px","py","minWidth","children","jsx","Typography","color","fontSize","lineHeight","overflowWrap","title","fontWeight","confirmationButtonSx","minHeight","borderColor","borderRadius","textTransform","confirmButtonSx","bgcolor","boxShadow","icon","pageRange","description","onRevert","onRevertComplete","onRevertError","revertData","confirmDisabled","showDocumentHeader","isConfirming","setIsConfirming","useState","isReverting","setIsReverting","hasStructuralChanges","previousSegments","length","handleConfirm","async","result","error","Stack","spacing","direction","alignItems","border","display","flexShrink","mt","Divider","borderStyle","ButtonBase","onClick","width","textAlign","component","mr","ChevronLeft","size","p","mb","currentSegment","overflow","map","index","Button","variant","fullWidth","disabled","Tooltip","disableHoverListener","arrow","style","flex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RevertCard.js","sources":["../../../../src/features/SegmentReviewComponents/RevertCard.tsx"],"sourcesContent":["import { useState, type ReactNode } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { ChevronLeft } from 'lucide-react';\nimport ApprovalDescriptionBanner from './ApprovalDescriptionBanner';\nimport SaveAsLearningCard, { type SaveAsLearningResult } from './SaveAsLearningCard';\n\nexport interface SegmentData {\n title: string;\n startPage: number;\n endPage: number;\n}\n\nexport interface RevertData {\n currentSegment: SegmentData;\n previousSegments: SegmentData[];\n}\n\n/** Value returned by the host after the revert request and refresh complete. */\nexport interface RevertActionResult {\n message?: string | null;\n}\n\nexport interface RevertCardProps {\n icon: ReactNode;\n title: string;\n pageRange: string;\n description: string | null;\n onRevert: () => void | RevertActionResult | Promise<void | RevertActionResult>;\n /** Called only after `onRevert` completes successfully. */\n onRevertComplete?: (result: void | RevertActionResult) => void;\n onRevertError?: (error: unknown) => void;\n revertData: RevertData;\n /** Prevent submission when the host cannot provide a valid revert request. */\n confirmDisabled?: boolean;\n /** Hide when the surrounding reviewed-card shell already renders it. */\n showDocumentHeader?: boolean;\n /**\n * When provided, renders the \"save as learning example\" affordance\n * above the revert button, right below the description banner.\n */\n onSaveAsLearning?: () => void | SaveAsLearningResult | Promise<void | SaveAsLearningResult>;\n onSaveAsLearningError?: (error: unknown) => void;\n saveAsLearningDisabled?: boolean;\n}\n\nconst formatPageRange = ({ startPage, endPage }: SegmentData) =>\n `Pages ${startPage}-${endPage}`;\n\nconst SegmentSummary = ({ segment }: { segment: SegmentData }) => (\n <Box sx={{ px: 0.75, py: 0.625, minWidth: 0 }}>\n <Typography\n sx={{\n color: 'text.secondary',\n fontSize: 11,\n lineHeight: 1.3,\n overflowWrap: 'anywhere',\n }}\n >\n {segment.title}\n </Typography>\n <Typography\n sx={{\n color: 'text.primary',\n fontSize: 12,\n fontWeight: 400,\n lineHeight: 1.3,\n }}\n >\n {formatPageRange(segment)}\n </Typography>\n </Box>\n);\n\n/**\n * Displays an approved action summary and reveals the appropriate revert\n * confirmation after the user selects Revert. An empty `previousSegments`\n * collection represents keep-as-is; structural changes provide the segments\n * that will be restored after reverting.\n */\nexport default function RevertCard({\n icon,\n title,\n pageRange,\n description,\n onRevert,\n onRevertComplete,\n onRevertError,\n revertData,\n confirmDisabled = false,\n showDocumentHeader = true,\n onSaveAsLearning,\n onSaveAsLearningError,\n saveAsLearningDisabled = false,\n}: RevertCardProps) {\n const [isConfirming, setIsConfirming] = useState(false);\n const [isReverting, setIsReverting] = useState(false);\n const hasStructuralChanges = revertData.previousSegments.length > 0;\n const handleConfirm = async () => {\n if (isReverting || confirmDisabled) return;\n setIsReverting(true);\n\n try {\n const result = await onRevert();\n onRevertComplete?.(result);\n } catch (error) {\n onRevertError?.(error);\n } finally {\n setIsReverting(false);\n }\n };\n\n return (\n <Stack spacing={0.875} sx={{ minWidth: 0 }}>\n {showDocumentHeader && (\n <Box sx={{ minWidth: 0 }}>\n <Typography\n sx={{\n color: 'text.primary',\n fontSize: 14,\n fontWeight: 500,\n lineHeight: 1.4,\n overflowWrap: 'anywhere',\n }}\n >\n {title}\n </Typography>\n <Typography\n sx={{ color: 'text.secondary', fontSize: 12, lineHeight: 1.4 }}\n >\n {pageRange}\n </Typography>\n </Box>\n )}\n\n \n\n <Divider sx={{ borderStyle: 'dashed', borderColor: '#CBD5E1' }} />\n\n {!isConfirming ? (\n <Button\n variant=\"outlined\"\n fullWidth\n onClick={() => setIsConfirming(true)}\n sx={{\n minHeight: 36,\n borderColor: '#9B8AFB',\n color: '#5925DC',\n borderRadius: 2,\n fontSize: 13,\n fontWeight: 600,\n textTransform: 'none',\n '&:hover': {\n borderColor: 'secondary.dark',\n bgcolor: 'rgba(79, 70, 229, 0.04)',\n },\n }}\n >\n Revert\n </Button>\n ) : (\n <Stack spacing={0.75}>\n <ButtonBase\n onClick={() => setIsConfirming(false)}\n aria-label=\"Back from revert confirmation\"\n sx={{\n width: 'fit-content',\n borderRadius: 0.5,\n color: 'text.primary',\n fontSize: 13,\n fontWeight: 500,\n lineHeight: 1.3,\n textAlign: 'left',\n }}\n >\n <Box component=\"span\" aria-hidden=\"true\" sx={{ mr: 0.625, alignItems: 'center', display: 'flex' }}>\n <ChevronLeft size={16} />\n </Box>\n Revert\n </ButtonBase>\n\n {hasStructuralChanges ? (\n <Box sx={{ p: 0.75, borderRadius: 1, bgcolor: '#F8FAFC' }}>\n <Typography sx={{ mb: 0.375, color: 'text.secondary', fontSize: 12 }}>\n Current\n </Typography>\n <Box\n sx={{\n mb: 0.75,\n border: '1px solid #E2E8F0',\n borderRadius: 1,\n bgcolor: 'background.paper',\n }}\n >\n <SegmentSummary segment={revertData.currentSegment} />\n </Box>\n\n <Typography sx={{ mb: 0.375, color: 'text.secondary', fontSize: 12 }}>\n After Revert\n </Typography>\n <Box\n sx={{\n border: '1px solid #E2E8F0',\n borderRadius: 1,\n bgcolor: 'background.paper',\n overflow: 'hidden',\n }}\n >\n {revertData.previousSegments.map((segment, index) => (\n <Box key={`${segment.title}-${segment.startPage}-${segment.endPage}-${index}`}>\n {index > 0 && <Divider sx={{ borderColor: '#E2E8F0' }} />}\n <SegmentSummary segment={segment} />\n </Box>\n ))}\n </Box>\n\n <Stack direction=\"row\" spacing={1} sx={{ mt: 0.875 }}>\n <Button\n variant=\"outlined\"\n fullWidth\n disabled={isReverting}\n onClick={() => setIsConfirming(false)}\n sx={confirmationButtonSx}\n >\n Cancel\n </Button>\n <Tooltip\n title={confirmDisabled ? 'Revert data is not present, cannot revert this' : ''}\n disableHoverListener={!confirmDisabled}\n arrow\n >\n <span style={{ flex: 1 }}>\n <Button\n variant=\"contained\"\n fullWidth\n disabled={isReverting || confirmDisabled}\n onClick={() => { void handleConfirm(); }}\n sx={confirmButtonSx}\n >\n {isReverting ? 'Reverting…' : 'Confirm'}\n </Button>\n </span>\n </Tooltip>\n </Stack>\n </Box>\n ) : (\n <Box sx={{ p: 0.875, borderRadius: 1, bgcolor: '#F8FAFC' }}>\n <Typography sx={{ color: 'text.secondary', fontSize: 12, fontWeight: 500 }}>\n Revert approval?\n </Typography>\n <Typography sx={{ mt: 0.75, color: 'text.secondary', fontSize: 13, lineHeight: 1.45 }}>\n This document will be moved back to pending review and will need\n to be confirmed again.\n </Typography>\n <Stack direction=\"row\" spacing={1} sx={{ mt: 1 }}>\n <Button\n variant=\"outlined\"\n fullWidth\n disabled={isReverting}\n onClick={() => setIsConfirming(false)}\n sx={confirmationButtonSx}\n >\n Cancel\n </Button>\n <Tooltip\n title={confirmDisabled ? 'Revert data is not present, cannot revert this' : ''}\n disableHoverListener={!confirmDisabled}\n arrow\n >\n <span style={{ flex: 1 }}>\n <Button\n variant=\"contained\"\n fullWidth\n disabled={isReverting || confirmDisabled}\n onClick={() => { void handleConfirm(); }}\n sx={confirmButtonSx}\n >\n {isReverting ? 'Reverting…' : 'Confirm'}\n </Button>\n </span>\n </Tooltip>\n </Stack>\n </Box>\n )}\n </Stack>\n )}\n </Stack>\n );\n}\n\nconst confirmationButtonSx = {\n minHeight: 34,\n borderColor: '#94A3B8',\n color: '#64748B',\n borderRadius: '8px',\n fontSize: 12,\n fontWeight: 500,\n textTransform: 'none',\n};\n\nconst confirmButtonSx = {\n minHeight: 34,\n borderRadius: '8px',\n bgcolor: '#4F46E5',\n fontSize: 12,\n fontWeight: 500,\n textTransform: 'none',\n boxShadow: 'none',\n '&:hover': { bgcolor: '#4338CA', boxShadow: 'none' },\n};"],"names":["formatPageRange","startPage","endPage","SegmentSummary","segment","jsxs","Box","sx","px","py","minWidth","children","jsx","Typography","color","fontSize","lineHeight","overflowWrap","title","fontWeight","confirmationButtonSx","minHeight","borderColor","borderRadius","textTransform","confirmButtonSx","bgcolor","boxShadow","icon","pageRange","description","onRevert","onRevertComplete","onRevertError","revertData","confirmDisabled","showDocumentHeader","onSaveAsLearning","onSaveAsLearningError","saveAsLearningDisabled","isConfirming","setIsConfirming","useState","isReverting","setIsReverting","hasStructuralChanges","previousSegments","length","handleConfirm","async","result","error","Stack","spacing","Divider","borderStyle","ButtonBase","onClick","width","textAlign","component","mr","alignItems","display","ChevronLeft","size","p","mb","border","currentSegment","overflow","map","index","direction","mt","Button","variant","fullWidth","disabled","Tooltip","disableHoverListener","arrow","style","flex"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),t=require("@mui/material/Box"),r=require("@mui/material/Button"),i=require("@mui/material/CircularProgress"),n=require("@mui/material/Tooltip"),s=require("lucide-react");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=o(t),c=o(r),d=o(i),u=o(n);const p={minHeight:40,display:"flex",alignItems:"center",justifyContent:"space-between",gap:1,px:2,borderRadius:2.5,background:"linear-gradient(135deg, #6366F1 0%, #4F46E5 100%)",color:"#FFFFFF",fontSize:13.5,fontWeight:600,letterSpacing:.1,textTransform:"none",boxShadow:"0 2px 8px rgba(79, 70, 229, 0.28)",transition:"box-shadow 0.2s ease, transform 0.15s ease, background 0.2s ease","&:hover":{background:"linear-gradient(135deg, #5457E8 0%, #4338CA 100%)",boxShadow:"0 4px 12px rgba(79, 70, 229, 0.36)"},"&:active":{transform:"scale(0.99)"},"&.Mui-disabled":{background:"linear-gradient(135deg, #A5A6F0 0%, #9092E8 100%)",color:"#FFFFFF",opacity:.75}};exports.default=function({onSave:t,onSaveComplete:r,onSaveError:i,disabled:n=!1,label:o="Save as learning",savingLabel:x="Saving your feedback…",tooltip:f="Use this decision to improve future automatic reviews."}){const[g,m]=a.useState(!1),[F,b]=a.useState(!1);return F?null:e.jsx(l.default,{sx:{mt:2},children:e.jsxs(c.default,{variant:"contained",fullWidth:!0,disabled:g||n,onClick:()=>{(async()=>{if(!g&&!n){m(!0);try{const e=await t();e&&!1===e.success||(b(!0),r?.(e))}catch(e){console.error("Failed to save as learning:",e),i?.(e)}finally{m(!1)}}})()},sx:p,children:[e.jsxs(l.default,{component:"span",sx:{display:"flex",alignItems:"center",gap:1},children:[g?e.jsx(d.default,{size:15,thickness:5,sx:{color:"#FFFFFF"}}):e.jsx(s.Sparkles,{size:16,strokeWidth:2.25}),e.jsx(l.default,{component:"span",children:g?x:o})]}),e.jsx(u.default,{title:f,arrow:!0,children:e.jsx(l.default,{component:"span","aria-label":f,onClick:e=>e.stopPropagation(),sx:{display:"flex",alignItems:"center",flexShrink:0,opacity:.85},children:e.jsx(s.Info,{size:16})})})]})})};
|
|
2
|
+
//# sourceMappingURL=SaveAsLearningCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SaveAsLearningCard.js","sources":["../../../../src/features/SegmentReviewComponents/SaveAsLearningCard.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Tooltip from '@mui/material/Tooltip';\nimport { Sparkles, Info } from 'lucide-react';\n\nexport interface SaveAsLearningResult {\n success?: boolean;\n message?: string | null;\n}\n\nexport interface SaveAsLearningCardProps {\n onSave: () => void | SaveAsLearningResult | Promise<void | SaveAsLearningResult>;\n onSaveComplete?: (result: void | SaveAsLearningResult) => void;\n onSaveError?: (error: unknown) => void;\n disabled?: boolean;\n label?: string;\n savingLabel?: string;\n tooltip?: string;\n}\n\nexport default function SaveAsLearningCard({\n onSave,\n onSaveComplete,\n onSaveError,\n disabled = false,\n label = 'Save as learning',\n savingLabel = 'Saving your feedback…',\n tooltip = 'Use this decision to improve future automatic reviews.',\n}: SaveAsLearningCardProps) {\n const [isSaving, setIsSaving] = useState(false);\n const [isSaved, setIsSaved] = useState(false);\n\n\n const handleClick = async () => {\n if (isSaving || disabled) return;\n setIsSaving(true);\n try {\n const result = await onSave();\n // Hosts may return an explicit failure result instead of throwing.\n // Keep the card available in that case so the reviewer can retry.\n if (!result || result.success !== false) {\n setIsSaved(true);\n onSaveComplete?.(result);\n }\n } catch (error) {\n console.error('Failed to save as learning:', error);\n onSaveError?.(error);\n } finally {\n setIsSaving(false);\n }\n };\n\n if (isSaved) return null;\n\n return (\n <Box sx={{ mt: 2 }}>\n <Button\n variant=\"contained\"\n fullWidth\n disabled={isSaving || disabled}\n onClick={() => { void handleClick(); }}\n sx={buttonSx}\n >\n <Box component=\"span\" sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n {isSaving ? (\n <CircularProgress size={15} thickness={5} sx={{ color: '#FFFFFF' }} />\n ) : (\n <Sparkles size={16} strokeWidth={2.25} />\n )}\n <Box component=\"span\">{isSaving ? savingLabel : label}</Box>\n </Box>\n\n <Tooltip title={tooltip} arrow>\n <Box\n component=\"span\"\n aria-label={tooltip}\n onClick={(e) => e.stopPropagation()}\n sx={{ display: 'flex', alignItems: 'center', flexShrink: 0, opacity: 0.85 }}\n >\n <Info size={16} />\n </Box>\n </Tooltip>\n </Button>\n </Box>\n );\n}\n\nconst buttonSx = {\n minHeight: 40,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 1,\n px: 2,\n borderRadius: 2.5,\n background: 'linear-gradient(135deg, #6366F1 0%, #4F46E5 100%)',\n color: '#FFFFFF',\n fontSize: 13.5,\n fontWeight: 600,\n letterSpacing: 0.1,\n textTransform: 'none',\n boxShadow: '0 2px 8px rgba(79, 70, 229, 0.28)',\n transition: 'box-shadow 0.2s ease, transform 0.15s ease, background 0.2s ease',\n '&:hover': {\n background: 'linear-gradient(135deg, #5457E8 0%, #4338CA 100%)',\n boxShadow: '0 4px 12px rgba(79, 70, 229, 0.36)',\n },\n '&:active': { transform: 'scale(0.99)' },\n '&.Mui-disabled': {\n background: 'linear-gradient(135deg, #A5A6F0 0%, #9092E8 100%)',\n color: '#FFFFFF',\n opacity: 0.75,\n },\n};"],"names":["buttonSx","minHeight","display","alignItems","justifyContent","gap","px","borderRadius","background","color","fontSize","fontWeight","letterSpacing","textTransform","boxShadow","transition","transform","opacity","onSave","onSaveComplete","onSaveError","disabled","label","savingLabel","tooltip","isSaving","setIsSaving","useState","isSaved","setIsSaved","Box","sx","mt","children","jsxs","Button","variant","fullWidth","onClick","async","result","success","error","console","handleClick","component","CircularProgress","size","thickness","jsx","Sparkles","strokeWidth","Tooltip","title","arrow","e","stopPropagation","flexShrink","Info"],"mappings":"4YAyFA,MAAMA,EAAW,CACfC,UAAW,GACXC,QAAS,OACTC,WAAY,SACZC,eAAgB,gBAChBC,IAAK,EACLC,GAAI,EACJC,aAAc,IACdC,WAAY,oDACZC,MAAO,UACPC,SAAU,KACVC,WAAY,IACZC,cAAe,GACfC,cAAe,OACfC,UAAW,oCACXC,WAAY,mEACZ,UAAW,CACTP,WAAY,oDACZM,UAAW,sCAEb,WAAY,CAAEE,UAAW,eACzB,iBAAkB,CAChBR,WAAY,oDACZC,MAAO,UACPQ,QAAS,sBA3Fb,UAA2CC,OACzCA,EAAAC,eACAA,EAAAC,YACAA,EAAAC,SACAA,GAAW,EAAAC,MACXA,EAAQ,mBAAAC,YACRA,EAAc,wBAAAC,QACdA,EAAU,2DAEV,MAAOC,EAAUC,GAAeC,YAAS,IAClCC,EAASC,GAAcF,YAAS,GAsBvC,OAAIC,EAAgB,WAGjBE,EAAI,QAAA,CAAAC,GAAI,CAAEC,GAAI,GACbC,SAAAC,EAAAA,KAACC,EAAA,QAAA,CACCC,QAAQ,YACRC,WAAS,EACThB,SAAUI,GAAYJ,EACtBiB,QAAS,KA3BKC,WAClB,IAAId,IAAYJ,EAAhB,CACAK,GAAY,GACR,IACI,MAAAc,QAAetB,IAGhBsB,IAA6B,IAAnBA,EAAOC,UACpBZ,GAAW,GACXV,IAAiBqB,UAEZE,GACCC,QAAAD,MAAM,8BAA+BA,GAC7CtB,IAAcsB,EAAK,CACnB,QACAhB,GAAY,EACd,CAf0B,GA0BAkB,IACtBb,GAAI/B,EAEJiC,SAAA,CAACC,EAAAA,KAAAJ,EAAAA,QAAA,CAAIe,UAAU,OAAOd,GAAI,CAAE7B,QAAS,OAAQC,WAAY,SAAUE,IAAK,GACrE4B,SAAA,CAAAR,QACEqB,EAAAA,QAAiB,CAAAC,KAAM,GAAIC,UAAW,EAAGjB,GAAI,CAAEtB,MAAO,aAEvDwC,EAAAA,IAACC,YAASH,KAAM,GAAII,YAAa,aAElCrB,EAAAA,QAAI,CAAAe,UAAU,OAAQZ,SAAAR,EAAWF,EAAcD,OAGjD2B,EAAAA,IAAAG,EAAA,QAAA,CAAQC,MAAO7B,EAAS8B,OAAK,EAC5BrB,SAAAgB,EAAAA,IAACnB,EAAA,QAAA,CACCe,UAAU,OACV,aAAYrB,EACZc,QAAUiB,GAAMA,EAAEC,kBAClBzB,GAAI,CAAE7B,QAAS,OAAQC,WAAY,SAAUsD,WAAY,EAAGxC,QAAS,KAErEgB,SAAAgB,EAAAA,IAACS,EAAAA,KAAK,CAAAX,KAAM,aAMxB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("@react-pdf-viewer/core"),i=require("../PdfViewer/PdfViewer.js"),r=require("./BoundaryCard.js"),a=require("./CardWrapper.js"),o=require("./CognitiveIntegrity.js"),s=require("./LabelCheck.js"),l=require("./PageCheck.js"),d=require("./PageTypeChoiceCheck.js"),g=require("./reviewStepAdapters.js"),u=require("lucide-react"),c=require("@mui/material"),m=require("./ReviewedCard.js"),p=require("./ReviewedBoundaryActions.js"),v=require("./RevertCard.js"),f=require("./RevertSuccessCard.js"),h=require("./helper.js"),w=require("./ChartBreakoutCircle.js"),y=require("./reviewScore.js");const b=260;var _=(e=>(e.ActualSize="ActualSize",e.PageFit="PageFit",e.PageWidth="PageWidth",e))(_||{});const x={ActualSize:n.SpecialZoomLevel.ActualSize,PageFit:n.SpecialZoomLevel.PageFit,PageWidth:n.SpecialZoomLevel.PageWidth},S=e=>({reviewId:e.id,segment:e.segment,pageNumber:e.pageNumber});exports.SegmentPdfSpecialZoomLevel=_,exports.default=function({pdfUrl:_,pdfName:R,segments:E,totalPages:C,styles:k,pdfViewerProps:P,specialZoomLevel:A,showBadges:M=!0,sortByConfidence:I="low",filterByConfidence:j="all",showBadgeNavigation:N=!0,autoSelectReviewOnPageChange:B=!1,autoAdvanceAfterConfirm:T=!0,autoAdvanceScoreBand:F,badgePreloadPages:L=8,badgeOffsetTop:q=20,badgeOffsetRight:W=68,badgeOffsetLeft:K=0,initialReviewId:z,manualPrompt:$,heightBuffer:G,onBoundaryAction:O,onLabelAction:D,onPageAction:V,onPageTypeRevert:H,onRevert:U,onActiveReviewChange:X,onCurrentPageChange:Z,onActionError:Y,disableAllActions:J=!1,disablePdfAnnotations:Q=!1,disablePdfTextLayer:ee=!0,disableTitleCheckUntilBoundaryCheckCompleted:te=!1,onAdjustManually:ne,onCognitiveClick:ie,className:re,style:ae,viewerStyle:oe,railStyle:se,redirectionData:le,onBadgeSelected:de}){console.log("LOG: TOTAL PAGE IN PARENT",C);const{boundaryReviews:ge,labelReviews:ue,pageReviews:ce}=t.useMemo(()=>g.extractSegmentReviewData(E),[E]),[me,pe]=t.useState(()=>new Map),[ve,fe]=t.useState(()=>new Set),he=t.useMemo(()=>{const e=new Map;let t=1;return E.forEach((n,i)=>{const r=g.getSegmentReviewKey(n,i);e.has(r)||(e.set(r,t),t+=1)}),e},[E]),we=t.useMemo(()=>new Set(ue.map(e=>g.getSegmentReviewKey(e.segment))),[ue]),ye=t.useMemo(()=>h.getPendingMergeImpactedSegmentKeys(E),[E]);t.useEffect(()=>{pe(e=>{let t=!1;const n=new Map(e);return e.forEach((e,i)=>{const r=E.find(e=>g.getSegmentReviewKey(e)===i);r&&!h.hasPolledStructuralAction(r,e)||(n.delete(i),t=!0)}),t?n:e})},[E]),t.useEffect(()=>{fe(e=>{let t=!1;const n=new Set(e);return e.forEach(e=>{me.has(e)||(n.delete(e),t=!0)}),t?n:e})},[me]);const be=t.useMemo(()=>h.getOptimisticMergeImpactedSegmentKeys(E,me,ve),[ve,me,E]),_e=t.useRef(null),xe=t.useMemo(()=>[...ge.filter(e=>!ye.has(g.getSegmentReviewKey(e.segment))&&!be.has(g.getSegmentReviewKey(e.segment))&&!h.shouldHideStructuralBoundaryReview(e.review_step,e.segment,we.has(g.getSegmentReviewKey(e.segment)),me.get(g.getSegmentReviewKey(e.segment)))).map(e=>({...e,kind:"boundary",pageNumber:e.metadata.focus_page??e.segment.start_page})),...ue.filter(e=>!ye.has(g.getSegmentReviewKey(e.segment))&&!be.has(g.getSegmentReviewKey(e.segment))).map(e=>({...e,kind:"label",pageNumber:e.segment.start_page})),...ce.filter(e=>!ye.has(g.getSegmentReviewKey(e.segment))&&!be.has(g.getSegmentReviewKey(e.segment))).map(e=>({...e,kind:"page",pageNumber:e.metadata.page_num??e.segment.start_page}))].sort((e,t)=>{const n=he.get(g.getSegmentReviewKey(e.segment))??Number.MAX_SAFE_INTEGER,i=he.get(g.getSegmentReviewKey(t.segment))??Number.MAX_SAFE_INTEGER;return e.pageNumber-t.pageNumber||n-i||e.reviewStepIndex-t.reviewStepIndex||e.id.localeCompare(t.id)}),[ge,ue,ce,be,me,ye,he,we]),Se=t.useMemo(()=>E.map(e=>({...e,title:e.label?.trim()||e.title,page_count:e.page_count??e.end_page-e.start_page+1})),[E]),[Re,Ee]=t.useState(1),[Ce,ke]=t.useState(z??null),[Pe,Ae]=t.useState(z??null),[Me,Ie]=t.useState(!1),[je,Ne]=t.useState(null),[Be,Te]=t.useState(null),[Fe,Le]=t.useState(()=>new Set),[qe,We]=t.useState(null),[Ke,ze]=t.useState(null),[$e,Ge]=t.useState(null),[Oe,De]=t.useState(!1),Ve=t.useRef(0),He=t.useRef(null),Ue=t.useRef(null),Xe=t.useRef(new Map),Ze=t.useRef(null),Ye=t.useRef(null),Je=t.useRef(null),[Qe,et]=t.useState(b),tt=k?.aside?.width??"40%",nt=`min(${"number"==typeof tt?`${tt}px`:tt}, 260px, 100%)`;t.useEffect(()=>{Le(e=>{if(0===e.size)return e;const t=new Set(e);let n=!1;return xe.forEach(e=>{null!=e.review_step.review?.action&&t.has(e.id)&&(t.delete(e.id),n=!0)}),n?t:e})},[xe]),t.useEffect(()=>{const e=_e.current;if(!e||!M)return;const t=()=>{const t=e.getBoundingClientRect().width;t>0&&et(t)};t();const n="undefined"==typeof ResizeObserver?null:new ResizeObserver(t);return n?.observe(e),()=>n?.disconnect()},[M]);const it=t.useMemo(()=>{const e=new Set;return xe.forEach(t=>{null!=t.review_step.review?.action&&e.add(t.id)}),e},[xe]),rt=t.useMemo(()=>xe.find(e=>e.id===Ce)??null,[Ce,xe]),at=t.useMemo(()=>!(!te||"label"!==rt?.kind)&&ge.some(e=>{if(g.getSegmentReviewKey(e.segment)!==g.getSegmentReviewKey(rt.segment)||it.has(e.id))return!1;const t=h.getResolvedScore(e.review_step.score,e.review_step.confidence);return null==t||t<85}),[rt,ge,te,it]),ot=null==rt?-1:E.findIndex(e=>g.getSegmentReviewKey(e)===g.getSegmentReviewKey(rt.segment)),st=ot>0?E[ot-1]:void 0,lt=ot>=0?E[ot+1]:void 0,dt=st?.label?.trim()||st?.title,gt=lt?.label?.trim()||lt?.title,ut=h.getConfidenceColors(rt?.review_step.score,rt?.review_step.confidence,rt?.segment.confidence?.awaiting_llm),ct=rt?.review_step.reasons?.length?rt.review_step.reasons:rt?.segment.confidence?.reasons??[],mt=Boolean(ct.some(e=>e.text.trim()&&["evidence","gap"].includes(e.type.trim().toLowerCase()))||rt?.review_step.reason?.trim()||rt?.review_step.gap?.trim()),pt=null==rt?null:"boundary"===rt.kind?h.getBoundaryReviewActionBadgeLabel(rt.review_step,rt.segment,me.get(rt.segment.stable_key??"")):h.getTitleReviewActionBadgeLabel(rt.review_step,rt.segment,me.get(rt.segment.stable_key??"")),vt="label"===rt?.kind?[pt,rt.review_step.human_action_enum,rt.review_step.review?.action,rt.review_step.human_resolution?.action]:[],ft="label"===rt?.kind&&vt.some(e=>{const t=e?.trim().toUpperCase()??"";return t.includes("MERGE")||t.includes("SPLIT")}),ht=null!=rt&&xe.some(e=>"boundary"===e.kind&&g.getSegmentReviewKey(e.segment)===g.getSegmentReviewKey(rt.segment)),wt=ft&&!ht,yt=("boundary"===rt?.kind||wt)&&null!=rt?(()=>{if("boundary"===rt.kind)return rt;const e=ge.find(e=>g.getSegmentReviewKey(e.segment)===g.getSegmentReviewKey(rt.segment));return e?{...e,kind:"boundary",pageNumber:e.metadata.focus_page??e.segment.start_page}:{...rt,kind:"boundary",pageNumber:rt.segment.review_action?.focus_page??rt.segment.start_page,metadata:{focus_page:rt.segment.review_action?.focus_page??null,boundary_margin:rt.segment.boundary_margin??null,user_actions:[]}}})():void 0,bt=null==rt?"":rt.segment.label?.trim()||rt.segment.title,_t=rt?.review_step.revert,xt=rt?.segment.revert,St=e=>e?.trim().toLowerCase(),Rt=null==rt?void 0:[...rt.segment.review_steps??[]].reverse().find(e=>{const t=e.type?.trim().toLowerCase();return("page_boundary"===t||"page boundary review"===t)&&"boundary"===St(e.revert?.type)})?.revert,Et=_t??rt?.segment.revert??Rt,Ct=Et?.decision.trim().toUpperCase();pt??(Ct?.includes("SPLIT")||Ct?.includes("MERGE"));const kt="label"===rt?.kind&&"SET_RANGE"===Rt?.decision?.trim().toUpperCase()&&Rt.current_segment_ids.length!==Rt.previous_state.length,Pt="Merged"===pt||"Split"===pt||kt,At=null==rt?void 0:Pt?"boundary"===St(Rt?.type)?Rt:"boundary"===St(xt?.type)?xt:"boundary"===St(_t?.type)?_t:void 0:"label"===rt.kind?"label"===St(_t?.type)?_t:void 0:"boundary"===rt.kind?"boundary"===St(_t?.type)?_t:"boundary"===St(Rt?.type)?Rt:"boundary"===St(xt?.type)?xt:void 0:void 0,Mt=Pt&&At?.operation_id?E.flatMap(e=>e.review_steps??[]).find(e=>{const t=e.type?.trim().toLowerCase();if(!("page_boundary"===t||"page boundary review"===t))return!1;return(e.human_resolution?.operation_id??e.revert?.operation_id??e.operation_id)===At.operation_id&&Boolean(e.human_resolution?.change_summary?.trim())}):void 0,It=At?.summary?.trim()||null,jt=Pt?Mt?.human_resolution?.change_summary?.trim()||At?.summary?.trim()||"":rt?.review_step?.human_resolution?.change_summary?.trim()||rt?.review_step?.summary?.trim()||"",Nt="page"===rt?.kind?{currentSegment:{title:bt,startPage:rt.segment.start_page,endPage:rt.segment.end_page},previousSegments:[]}:rt&&At?{currentSegment:{title:bt,startPage:rt.segment.start_page,endPage:rt.segment.end_page},previousSegments:(At.previous_state??[]).flatMap(e=>{const t=null===e.label?"Untitled document":e.label?.trim();return t?[{title:t,startPage:e.start_page,endPage:e.end_page}]:[]})}:null,Bt="page"===rt?.kind?rt.metadata.type_choices?.map(e=>e.classification_id)??(rt.metadata.classification_id?[rt.metadata.classification_id]:[]):[],Tt="page"===rt?.kind?Boolean(H&&Bt.length>0):Boolean(At?.operation_id&&At?.type&&!1!==At?.revertable),Ft=Boolean(Nt&&Tt),Lt=t.useCallback((e,t)=>{Ve.current+=1,He.current={requestId:Ve.current,pageNumber:e,reviewId:t},Te({pageNumber:e,requestId:Ve.current})},[]),qt=t.useCallback(e=>{!0!==e.segment.confidence?.awaiting_llm&&(de?.({reviewId:e.id,segment_id:e.segment.segment_id??null,reviewStepIndex:e.reviewStepIndex,kind:e.kind,pageNumber:e.pageNumber,metadata:e.metadata}),ze(null),Ge(null),ke(e.id),Ae(e.id),Ie(!1),Ne(null),Lt(e.pageNumber,e.id),X?.(e.id,e.segment))},[X,de,Lt]);t.useEffect(()=>{if(!$e)return;const e=requestAnimationFrame(()=>De(!0)),t=window.setTimeout(()=>{De(!1)},3500),n=window.setTimeout(()=>{Ge(null)},4e3);return()=>{cancelAnimationFrame(e),window.clearTimeout(t),window.clearTimeout(n)}},[$e]),t.useEffect(()=>{if(!le)return;if("pageGroup"===le.type){const e=le.pages??[],t=le.pageIndex??0,n=e[t];if(null==n)return;return Wt(),ze({pages:e,index:t,label:le.groupLabel??""}),Ve.current+=1,void Te({pageNumber:n,requestId:Ve.current})}if(ze(null),le.reviewId){const e=xe.find(e=>e.id===le.reviewId&&(!le.type||e.kind===le.type));if(e)return void qt(e)}if(le.classificationId){const e=xe.find(e=>"page"===e.kind&&(e.metadata.classification_id===le.classificationId||e.metadata.type_choices?.some(e=>e.classification_id===le.classificationId))&&(!le.segmentId||e.segment.segment_id===le.segmentId)&&(!le.type||e.kind===le.type));if(e)return void qt(e)}if(!le.pageNumber||!le.type)return;const e=Number(le.pageNumber);if(!Number.isInteger(e)||e<1)return;const t=le.pageType?.trim().toLowerCase(),n=xe.find(n=>{const i="page"===n.kind?n.pageNumber:n.segment.start_page,r="page"!==n.kind||!t||n.metadata.page_type===t||n.metadata.type_choices?.some(e=>e.page_type===t);return(!le.segmentId||n.segment.segment_id===le.segmentId)&&i===e&&n.kind===le.type&&r});n?qt(n):"page"===le.type&&(Wt(),Ve.current+=1,Te({pageNumber:e,requestId:Ve.current}))},[le,qt,xe]);const Wt=t.useCallback(()=>{He.current=null,Ie(!1),ke(null),Ne(null),X?.(null,null)},[X]),Kt=t.useCallback(e=>{De(!1),Ge(null);const t=xe.find(t=>!it.has(t.id)&&"boundary"===t.kind&&t.segment.start_page===e.startPage&&t.segment.end_page===e.endPage)??xe.find(t=>!it.has(t.id)&&t.segment.start_page<=e.startPage&&t.segment.end_page>=e.startPage);t?qt(t):(Wt(),Ve.current+=1,Te({pageNumber:e.startPage,requestId:Ve.current}))},[Wt,it,xe,qt]),zt=t.useCallback((e,t)=>{const n=y.getReviewScoreBand(e.review_step.score),i=null==F||n===F,r=Fe.has(e.id)&&h.isReviewStepResolutionCurrent(e.review_step,e.segment);return e.id!==t&&i&&!0!==e.segment.confidence?.awaiting_llm&&!h.isReviewStepResolved(e.review_step,e.segment)&&!r},[F,Fe]),$t=t.useCallback(e=>{if(!T)return void Wt();const t=xe.findIndex(t=>t.id===e),n=xe.find((n,i)=>i>t&&zt(n,e))??xe.find(t=>zt(t,e));n?requestAnimationFrame(()=>qt(n)):Wt()},[T,Wt,zt,xe,qt]),Gt=t.useCallback(async(e,t)=>{if(J||!V||0===t.length)return;const n=e.metadata.type_choices??[];if(2!==n.length)return;const i=new Set(t),r=S(e),a=[...n].sort((e,t)=>{const n=i.has(e.page_type);return n===i.has(t.page_type)?0:n?-1:1});We(e.id);try{for(const t of a){const n=i.has(t.page_type)?l.PageCheckActionEnum.YES:l.PageCheckActionEnum.NO;await V(n,{action:n,pageType:t.page_type,metadata:{user_actions:[l.PageCheckActionEnum.YES,l.PageCheckActionEnum.NO],page_num:e.metadata.page_num,page_type:t.page_type,classification_id:t.classification_id}},r)}Le(t=>{const n=new Set(t);return n.add(e.id),n}),$t(e.id)}catch(e){Y?.(e,r)}finally{We(null)}},[J,Y,V,$t]),Ot=t.useCallback(async(e,t,n)=>{if(J)return;if("boundary"===e.kind&&!O)return;if("label"===e.kind&&!D)return;if("page"===e.kind&&!V)return;const i=S(e),a=t,o=n,s=a===r.BoundaryReviewActionEnum.SET_RANGE?(()=>{const t=o.startPage,n=o.endPage;if(null==t||null==n)return null;const i=t<e.segment.start_page||n>e.segment.end_page,a=t>e.segment.start_page||n<e.segment.end_page;return i&&!a?t<e.segment.start_page?r.BoundaryReviewActionEnum.MERGE_PREV:r.BoundaryReviewActionEnum.MERGE_NEXT:a?r.BoundaryReviewActionEnum.SPLIT_HERE:null})():a,l="boundary"===e.kind&&null!=O&&T&&(s===r.BoundaryReviewActionEnum.SPLIT_HERE||s===r.BoundaryReviewActionEnum.MERGE_NEXT||s===r.BoundaryReviewActionEnum.MERGE_PREV||s===r.BoundaryReviewActionEnum.MERGE_PREVIOUS),d=l?E.findIndex(t=>g.getSegmentReviewKey(t)===g.getSegmentReviewKey(e.segment)):-1;l&&d>=0&&s&&(Ue.current={action:s,originalSegmentIndex:d,segmentSignature:JSON.stringify(E.map((e,t)=>({key:g.getSegmentReviewKey(e,t),startPage:e.start_page,endPage:e.end_page,version:e.version??null}))),ready:!1}),We(e.id);try{"boundary"===e.kind?await(O?.(t,n,i)):"label"===e.kind?await(D?.(t,n,i)):"page"===e.kind&&await(V?.(t,n,i)),Le(t=>{const n=new Set(t);return n.add(e.id),n});const o="boundary"===e.kind&&(s===r.BoundaryReviewActionEnum.MERGE_NEXT||s===r.BoundaryReviewActionEnum.MERGE_PREV||s===r.BoundaryReviewActionEnum.MERGE_PREVIOUS);if(("boundary"===e.kind&&s===r.BoundaryReviewActionEnum.SPLIT_HERE||o)&&s){const t=g.getSegmentReviewKey(e.segment);fe(e=>{const n=new Set(e);return a===r.BoundaryReviewActionEnum.SET_RANGE?n.add(t):n.delete(t),n}),pe(e=>{const n=new Map(e);return n.set(t,s),n})}if(Ue.current){if(Ue.current.ready=!0,o){const t=xe.find(t=>"label"===t.kind&&g.getSegmentReviewKey(t.segment)===g.getSegmentReviewKey(e.segment));t&&requestAnimationFrame(()=>qt(t))}}else $t(e.id)}catch(e){l&&(Ue.current=null),Y?.(e,i)}finally{We(null)}},[T,J,Y,O,D,V,H,xe,E,qt,$t]);t.useEffect(()=>{const e=Ue.current;if(!e?.ready)return;if(JSON.stringify(E.map((e,t)=>({key:g.getSegmentReviewKey(e,t),startPage:e.start_page,endPage:e.end_page,version:e.version??null})))===e.segmentSignature)return;const t=e.action===r.BoundaryReviewActionEnum.SPLIT_HERE?e.originalSegmentIndex+1:e.action===r.BoundaryReviewActionEnum.MERGE_PREV||e.action===r.BoundaryReviewActionEnum.MERGE_PREVIOUS?Math.max(0,e.originalSegmentIndex-1):e.originalSegmentIndex,n=new Map(E.map((e,t)=>[g.getSegmentReviewKey(e,t),t])),i=xe.find(e=>{const i=n.get(g.getSegmentReviewKey(e.segment));return null!=i&&i>=t&&zt(e)});if(!i)return Ue.current=null,void Wt();requestAnimationFrame(()=>{Ue.current=null,qt(i)})},[Wt,zt,xe,E,qt]),t.useEffect(()=>{Ue.current||Ce&&!xe.some(e=>e.id===Ce)&&Wt()},[Ce,Wt,xe]),t.useEffect(()=>{if(!B)return;if(Ue.current)return;const e=xe.find(e=>e.pageNumber===Re);e&&e.id!==Ce&&qt(e)},[Ce,B,Re,qt,xe]),t.useEffect(()=>{Ue.current||Ce&&!xe.some(e=>e.id===Ce&&!0!==e.segment.confidence?.awaiting_llm)&&Wt()},[Ce,Wt,xe]);const Dt=t.useMemo(()=>{const e=xe.filter(e=>!0!==e.segment.confidence?.awaiting_llm);if("all"===j)return e;const t=["low","medium","high"].filter(e=>e!==I),n=[I,...t],i=new Map(n.map((e,t)=>[e,t]));return e.map((e,t)=>({item:e,index:t})).sort((e,t)=>{const r=e.item.review_step.confidence?.trim().toLowerCase(),a=t.item.review_step.confidence?.trim().toLowerCase();return(null==r?n.length:i.get(r)??n.length)-(null==a?n.length:i.get(a)??n.length)||e.index-t.index}).map(({item:e})=>e)},[j,I,xe]),Vt=Dt.findIndex(e=>e.id===Pe),[Ht,Ut]=t.useState(null),[Xt,Zt]=t.useState(null),Yt=t.useRef(!1),Jt=t.useCallback(e=>{const t=Dt[e];t&&qt(t)},[Dt,qt]);t.useCallback(e=>{if(!Ke||e<0||e>=Ke.pages.length)return;const t=Ke.pages[e];null!=t&&(Wt(),ze(t=>null==t?t:{...t,index:e}),Ve.current+=1,Te({pageNumber:t,requestId:Ve.current}))},[Ke,Wt]),t.useEffect(()=>{Pe&&!Dt.some(e=>e.id===Pe)&&Ae(null)},[Dt,Pe]),t.useEffect(()=>{Yt.current=!1,Zt(null),Ut(Vt>=0?String(Vt+1):null)},[Vt,Dt.length]),t.useEffect(()=>{if(!Yt.current||null==Ht)return;const e=window.setTimeout(()=>{const e=Number(Ht.trim()),t=e-1;Number.isInteger(e)&&t>=0&&t<Dt.length&&(Yt.current=!1,Jt(t))},300);return()=>window.clearTimeout(e)},[Jt,Ht,Dt.length]);const Qt=t.useMemo(()=>{const e=new Map;xe.forEach(t=>{const n=e.get(g.getSegmentReviewKey(t.segment))??[];n.push(t),e.set(g.getSegmentReviewKey(t.segment),n)});const t=new Map;return e.forEach((e,n)=>{const i=he.get(n)??1;e.sort((e,t)=>e.reviewStepIndex-t.reviewStepIndex).forEach((e,n)=>{t.set(e.id,`${i}${(e=>{let t=e+1,n="";for(;t>0;)t-=1,n=String.fromCharCode(65+t%26)+n,t=Math.floor(t/26);return n})(n)}`)})}),t},[xe,he]),en=t.useMemo(()=>{const e=new Map;xe.forEach(t=>{const n=e.get(t.pageNumber)??[];n.push(t),e.set(t.pageNumber,n)});const t=new Map;return e.forEach(e=>{e.forEach((e,n)=>t.set(e.id,n))}),t},[xe]),tn=t.useCallback(e=>({startPage:Math.max(0,e.startPage-L),endPage:Math.min(e.numPages-1,e.endPage+L)}),[L]),nn=t.useCallback(()=>{const e=Ye.current,t=Je.current;if(!e||!t)return;const n=e.getBoundingClientRect(),i=t.querySelector(".rpv-core__inner-pages"),r=i?.getBoundingClientRect()??t.getBoundingClientRect();xe.forEach(e=>{const i=Xe.current.get(e.id);if(!i)return;const a=t.querySelector(`[data-testid="core__page-layer-${e.pageNumber-1}"]`);if(!a)return void(i.style.visibility="hidden");const o=a.getBoundingClientRect(),s=en.get(e.id)??0,l=o.top+q+40*s,d=l+(i.offsetHeight||32),g=l>=r.top&&d<=r.bottom;i.style.top=l-n.top+"px",i.style.visibility=g?"visible":"hidden"});const a=Ze.current;if(a){const e=Ke?.pages[Ke.index],i=null==e?null:t.querySelector(`[data-testid="core__page-layer-${e-1}"]`);if(Ke&&i){const e=i.getBoundingClientRect().top+q,t=e+(a.offsetHeight||25),o=e>=r.top&&t<=r.bottom;a.style.top=e-n.top+"px",a.style.visibility=o?"visible":"hidden"}else a.style.visibility="hidden"}if(Ce&&null==He.current){const e=Xe.current.get(Ce);e&&"hidden"!==e.style.visibility&&Ne(t=>t===e?t:e)}},[Ke,Ce,q,en,xe]),rn=t.useCallback(e=>{const t=He.current;t&&t.requestId===e.requestId&&t.pageNumber===e.pageNumber&&(He.current=null,nn(),requestAnimationFrame(()=>{if(null!=He.current)return;const e=Xe.current.get(t.reviewId);e&&"hidden"!==e.style.visibility&&Ne(e)}))},[nn]);return t.useEffect(()=>{const e=Je.current;if(!e||!M)return;let t=null;const n=()=>{null==t&&(t=requestAnimationFrame(()=>{t=null,nn()}))};e.addEventListener("scroll",n,!0),window.addEventListener("resize",n);const i=new MutationObserver(n);i.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style"]});const r="undefined"==typeof ResizeObserver?null:new ResizeObserver(n);return r?.observe(e),n(),()=>{null!=t&&cancelAnimationFrame(t),e.removeEventListener("scroll",n,!0),window.removeEventListener("resize",n),i.disconnect(),r?.disconnect()}},[M,nn]),e.jsxs("div",{ref:Ye,className:re,style:{...ae,display:"block",position:"relative",width:"100%",height:"100%",minWidth:0,overflowX:"auto",overflowY:"hidden"},children:[e.jsxs("div",{className:"segment-review-wrapper__container",style:{display:"flex",alignItems:"stretch",gap:0,width:"100%",minWidth:700,height:"100%"},children:[e.jsx("div",{ref:Je,style:{...oe,flex:"1 1 auto",width:M?"auto":"100%",minWidth:0,height:"100%",boxSizing:"border-box"},children:e.jsx(i.default,{highlightText:[],highlightPages:{},highlightCordinatePages:[],useCoordinates:!1,showRotateButton:!0,...P,defaultScale:void 0===A?P?.defaultScale??n.SpecialZoomLevel.PageFit:x[A],disablePdfAnnotations:Q,disablePdfTextLayer:ee,pdfUrl:_,pdfName:R,segments:Se,navigationRequest:Be,onNavigationSettled:rn,setRenderRange:tn,onCurrentPageChange:e=>{Ee(e),null==He.current&&rt&&rt.pageNumber!==e&&Wt(),Z?.(e)}})}),M&&e.jsxs("aside",{"aria-label":"Page review badges",ref:_e,style:{...se,position:"relative",width:nt,maxWidth:b,flex:`0 1 ${nt}`,minHeight:0,overflow:"hidden",boxSizing:"border-box"},children:[Ke&&e.jsx("span",{ref:Ze,style:{position:"absolute",top:0,left:10,visibility:"hidden",zIndex:2,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:4,minHeight:25,padding:"2px 8px",border:"1px solid #E2E8F0",borderRadius:16,backgroundColor:"#F8FAFC",boxSizing:"border-box",boxShadow:"0 1px 2px rgba(16, 24, 40, 0.08)",font:"inherit"},children:e.jsxs(c.Typography,{fontFamily:"Inter",sx:{fontSize:11,fontWeight:500,color:"#475569",whiteSpace:"nowrap"},children:[Ke.label||"Pages"," Pg: ",Ke.index+1]})}),N&&Dt.length>0&&!Ke&&e.jsxs("nav",{"aria-label":"Review badge navigation",style:{position:"absolute",top:8,right:W||"auto",left:K||"auto",zIndex:2,display:"flex",alignItems:"center",gap:7,width:128,minHeight:40,padding:"4px 6px",border:"1px solid #CBD5E1",borderRadius:6,backgroundColor:"#FFFFFF",boxSizing:"border-box",boxShadow:"0 1px 2px rgba(16, 24, 40, 0.06)",font:"inherit"},children:[e.jsx(c.Tooltip,{title:"out-of-range"===Xt?"Please enter valid number present in the range":"Please enter valid numbers",open:null!=Xt,placement:"top",arrow:!0,children:e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",value:Ht??"-",min:0,max:Dt.length,"aria-label":"Review badge number","aria-invalid":null!=Xt,onFocus:()=>{null==Ht&&Ut("")},onBlur:()=>{Zt(null);const e=Number(Ht);(null==Ht||""===Ht||!Number.isInteger(e)||e<1||e>Dt.length)&&(Yt.current=!1,Ut(Vt>=0?String(Vt+1):null))},onChange:e=>{const t=e.target.value;if(!/^\d*$/.test(t))return void Zt("invalid-number");const n=Number(t),i=""!==t&&(n<1||n>Dt.length);Zt(i?"out-of-range":null),Yt.current=!0,Ut(t)},style:{width:30,height:28,padding:0,border:"1px solid "+(Xt?"#DC2626":"#A5B4FC"),borderRadius:3,color:"#4F46E5",backgroundColor:"#FFFFFF",textAlign:"center",font:"inherit",fontSize:15,outline:"none"}})}),e.jsxs("span",{"aria-label":`${Dt.length} reviews`,style:{flex:1,color:"#4F46E5",fontSize:14,whiteSpace:"nowrap",textAlign:"center"},children:["of ",Dt.length]}),["previous","next"].map(t=>{const n="previous"===t,i=Vt+(n?-1:1),r=i<0||i>=Dt.length;return e.jsx("button",{type:"button","aria-label":(n?"Previous":"Next")+" review badge",disabled:r,onClick:()=>Jt(i),style:{display:"grid",placeItems:"center",width:17,height:28,padding:0,border:0,background:"transparent",color:r?"#C7D2FE":"#4F46E5",cursor:r?"default":"pointer"},children:e.jsx("svg",{width:"12",height:"8",viewBox:"0 0 12 8",fill:"none",children:e.jsx("path",{d:n?"M1 7L6 2L11 7":"M1 1L6 6L11 1",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})})},t)})]}),!Ke&&xe.map(t=>{const n=Ce===t.id,i=Qt.get(t.id)??"1A",r=t.review_step.score,a=t.review_step.confidence,o=h.formatScore(r,a),s="boundary"===t.kind?h.getBoundaryReviewActionBadgeLabel(t.review_step,t.segment,me.get(g.getSegmentReviewKey(t.segment))):"label"===t.kind?h.getTitleReviewActionBadgeLabel(t.review_step,t.segment,me.get(g.getSegmentReviewKey(t.segment))):null,l=s??("N/A"===o?o:`${o}%`),d=!0===t.segment.confidence?.awaiting_llm,m=h.getConfidenceColors(r,a,d),p=it.has(t.id),v=d;return e.jsx(c.Tooltip,{title:d?"data is being processed":"",arrow:!0,children:e.jsx("span",{ref:e=>{e?Xe.current.set(t.id,e):Xe.current.delete(t.id)},style:{position:"absolute",top:0,left:10,visibility:"hidden",display:"inline-flex",cursor:v?"not-allowed":"pointer"},children:e.jsx("button",{disabled:v,type:"button","aria-pressed":n,"aria-label":d?`${t.review_step.type} · Page ${t.pageNumber} · Data is being processed`:`${t.review_step.type} · Page ${t.pageNumber}`,onClick:()=>qt(t),style:{cursor:"inherit",display:"flex",alignItems:"center",justifyContent:"space-around",gap:4,width:s?p&&!d?115:90:p&&!d?105:80,minHeight:25,padding:"2px 5px",border:`1px solid ${p&&!d?"#E2E8F0":m.border}`,borderRadius:16,backgroundColor:p&&!d?"#F8FAFC":m.background,color:p&&!d?"#475569":m.text,font:"inherit",alignContent:"center",boxShadow:"0 1px 2px rgba(16, 24, 40, 0.08)"},children:p&&!d?e.jsxs(c.Typography,{fontFamily:"Inter",sx:{display:"flex",gap:1,alignItems:"center",flexDirection:"row"},children:[e.jsx("span",{style:{fontSize:11,fontWeight:500},children:i}),e.jsxs("span",{style:{display:"flex",alignItems:"center"},children:[e.jsx("svg",{width:"2",height:"14",viewBox:"0 0 1 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M0.399902 0V14",stroke:"#CBD5E1",strokeWidth:"0.8"})}),e.jsx("span",{style:{fontSize:11,fontWeight:500,marginLeft:"7px",display:"flex",alignItems:"center"},children:l})]}),e.jsxs("span",{style:{fontSize:11,fontWeight:500,display:"flex",alignItems:"center"},children:[e.jsx("svg",{width:"2",height:"14",viewBox:"0 0 1 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M0.399902 0V14",stroke:"#CBD5E1",strokeWidth:"0.8"})}),e.jsx("span",{style:{display:"flex",marginLeft:"7px",alignItems:"center"},children:e.jsx(u.CircleCheck,{height:14,width:14,strokeWidth:2,color:"#16A34A"})})]})]}):e.jsxs(c.Typography,{fontFamily:"Inter",sx:{display:"flex",gap:1,alignItems:"center",flexDirection:"row"},children:[e.jsx("span",{style:{fontSize:11,fontWeight:500},children:i}),e.jsxs("span",{style:{display:"flex",alignItems:"center"},children:[e.jsx("svg",{width:"2",height:"14",viewBox:"0 0 1 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M0.399902 0V14",stroke:m.divider,strokeWidth:"0.8"})}),e.jsx("span",{style:{fontSize:11,fontWeight:500,marginLeft:"7px",display:"flex",alignItems:"center"},children:l})]})]})})})},t.id)})]})]}),rt&&je&&e.jsxs(a.default,{anchorElement:je,placement:"bottom-start",offset:{top:8},width:Math.min(Qe,b),maxWidth:b,heightBuffer:G??25,children:[Me&&e.jsx(o.default,{width:"100%",maxWidth:"100%",score:rt.review_step.score,reasons:ct,reason:rt.review_step.reason,gap:rt.review_step.gap,onBack:()=>Ie(!1),onClose:Wt}),e.jsx("div",{style:{display:Me?"none":"block"},children:it.has(rt.id)?e.jsx(m.default,{width:"100%",maxWidth:"100%",headerName:"page"===rt.kind?"Page format approved":"Split"===pt?"Split approved":"Merged"===pt?"Merge approved":"User approved",headerIcon:"page"===rt.kind?e.jsx(u.Check,{size:18,strokeWidth:2}):"Merged"===pt?e.jsx(u.GitMerge,{size:18,strokeWidth:2}):"Split"===pt?e.jsx(w.default,{width:18,height:18}):e.jsx(u.CircleCheck,{size:18,strokeWidth:2}),title:bt,pageNo:`Page ${rt.segment.start_page}-${rt.segment.end_page}`,summary:Ft&&Nt?e.jsx(v.default,{icon:e.jsx(u.CircleCheck,{size:14,strokeWidth:2}),title:bt,pageRange:`Page ${rt.segment.start_page}-${rt.segment.end_page}`,description:jt??null,revertData:Nt,confirmDisabled:"page"===rt.kind?!Tt:null==U||!Tt,showDocumentHeader:!1,onRevert:async()=>{if("page"===rt.kind){if(!H||0===Bt.length){const e=new Error("SegmentReviewPdfWrapper requires onPageTypeRevert and at least one classification id to revert a page-type decision.");throw Y?.(e,S(rt)),e}let e;for(const t of Bt)e=await H({classification_id:t,human_verdict:"No"},S(rt));return e}if(!U)throw new Error("SegmentReviewPdfWrapper requires onRevert to handle a revert confirmation.");if(!At)throw new Error("There is no valid revert operation for this review.");const e=Pt?"boundary":"label"===rt.kind?"label":"boundary"===rt.kind?"boundary":null,t=St(At.type);if(e&&t!==e)throw new Error(`Cannot use ${t??"unknown"} revert metadata for this review. Expected ${e}.`);return U(At,S(rt))},onRevertError:e=>{Y?.(e,S(rt))},onRevertComplete:e=>{Le(()=>new Set),"page"!==rt.kind&&(fe(()=>new Set),pe(()=>new Map)),rt.id;const t=Nt.previousSegments[0]??Nt.currentSegment,n=je?.getBoundingClientRect(),i=Je.current?.getBoundingClientRect(),r=Math.min(b,Math.max(220,Qe)),a=n?.left??(i?.right??window.innerWidth-r-8)+8,o=Math.max(8,Math.min(a,window.innerWidth-r-8)),s=null==n?.bottom?Math.max(8,i?.top??8):n.bottom+8;Le(()=>new Set),"page"!==rt.kind&&(Ue.current=null),De(!1),Ge({title:"Split"===pt?"Split reverted":"Merged"===pt?"Merge reverted":"Approval reverted",description:e?.message?.trim()||null,segment:t,position:{top:s,left:o,width:r}}),Wt()}},rt.id):void 0,additionalActions:yt?e.jsx(p.default,{metadata:yt.metadata,reviewAction:rt.segment.review_action??void 0,startPage:rt.segment.start_page,endPage:rt.segment.end_page,title:bt,previousSegmentTitle:dt,nextSegmentTitle:gt,disabled:J||!O||qe===rt.id,onConfirm:(e,t)=>{Ot(yt,e,t)}}):void 0,cognitiveScore:rt.review_step.score,styles:{root:{borderColor:"#16A34A"},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:"#16A34A"}}},onCognitiveClick:mt?()=>{Ie(!0),ie?.(S(rt))}:void 0,onClose:Wt}):"boundary"===rt.kind?e.jsx(r.default,{width:"100%",maxWidth:"100%",totalPages:C,title:rt.segment.label||rt.segment.title,pageNo:`Page ${rt.pageNumber}`,content:rt.review_step.question??null,revertSummary:It,cognitiveScore:rt.review_step.score,metadata:rt.metadata,reviewAction:rt.segment.review_action??void 0,previousSegmentTitle:dt,nextSegmentTitle:gt,manualPrompt:$??"Set a custom boundary",defaultStartPage:rt.segment.start_page,defaultEndPage:rt.segment.end_page,styles:{root:{borderColor:ut.cardBorder},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:ut.text}}},confirmDisabled:J||!O||qe===rt.id,onConfirm:(e,t,n)=>{n&&r.isBoundaryReviewAction(t.id)&&Ot(rt,t.id,n)},onAdjustManually:()=>ne?.(S(rt)),onCognitiveClick:mt?()=>{Ie(!0),ie?.(S(rt))}:void 0,onClose:Wt},rt.id):"label"===rt.kind?e.jsx(s.default,{width:"100%",maxWidth:"100%",title:rt.metadata.current_label||rt.segment.label||rt.segment.title,pageNo:`Pages ${rt.segment.start_page}-${rt.segment.end_page}`,content:rt.review_step.question??null,revertSummary:It,cognitiveScore:rt.review_step.score,metadata:rt.metadata,styles:{root:{borderColor:ut.cardBorder},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:ut.text}}},confirmDisabled:J||!D||qe===rt.id,confirmationBlocked:at,confirmationWarning:at?"Please confirm the boundary before confirming the title.":void 0,onActionConfirm:(e,t)=>{Ot(rt,e,t)},onAdjustManually:()=>ne?.(S(rt)),onCognitiveClick:mt?()=>{Ie(!0),ie?.(S(rt))}:void 0,onClose:Wt},rt.id):2===rt.metadata.type_choices?.length?e.jsx(d.default,{width:"100%",maxWidth:"100%",title:rt.segment.label||rt.segment.title,pageNo:`Page ${rt.pageNumber}`,content:rt.review_step.reason,choices:rt.metadata.type_choices,cognitiveScore:rt.review_step.score,styles:{root:{borderColor:ut.cardBorder},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:ut.text}}},confirmDisabled:J||!V||qe===rt.id,onConfirm:e=>{Gt(rt,e)},onCognitiveClick:mt?()=>{Ie(!0),ie?.(S(rt))}:void 0,onClose:Wt},rt.id):e.jsx(l.default,{width:"100%",maxWidth:"100%",title:rt.segment.label||rt.segment.title,pageNo:`Page ${rt.pageNumber}`,content:rt.review_step.reason,cognitiveScore:rt.review_step.score,pageType:rt.metadata.page_type,metadata:rt.metadata,styles:{root:{borderColor:ut.cardBorder},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:ut.text}}},confirmDisabled:J||!V||qe===rt.id,onActionConfirm:(e,t)=>{Ot(rt,e,t)},onCognitiveClick:mt?()=>{Ie(!0),ie?.(S(rt))}:void 0,onClose:Wt},rt.id)})]}),$e&&e.jsx(c.Portal,{children:e.jsx(c.Box,{"aria-live":"polite",sx:{position:"fixed",top:$e.position.top,left:$e.position.left,zIndex:1600,width:$e.position.width,maxWidth:"calc(100vw - 16px)",opacity:Oe?1:0,transform:Oe?"translateY(0)":"translateY(-6px)",transition:"opacity 500ms ease, transform 500ms ease",filter:"drop-shadow(0 12px 24px rgba(15, 23, 42, 0.18))",pointerEvents:Oe?"auto":"none"},children:e.jsx(f.default,{title:$e.title,description:$e.description,onReview:()=>Kt($e.segment)})})})]})};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("@react-pdf-viewer/core"),i=require("../PdfViewer/PdfViewer.js"),r=require("./BoundaryCard.js"),a=require("./CardWrapper.js"),o=require("./CognitiveIntegrity.js"),s=require("./LabelCheck.js"),l=require("./PageCheck.js"),d=require("./PageTypeChoiceCheck.js"),u=require("./reviewStepAdapters.js"),g=require("lucide-react"),c=require("@mui/material"),m=require("./ReviewedCard.js"),p=require("./ReviewedBoundaryActions.js"),v=require("./RevertCard.js"),f=require("./SaveAsLearningCard.js"),h=require("./RevertSuccessCard.js"),w=require("./helper.js"),y=require("./ChartBreakoutCircle.js"),b=require("./ApprovalDescriptionBanner.js"),_=require("./reviewScore.js");const S=260;var x=(e=>(e.ActualSize="ActualSize",e.PageFit="PageFit",e.PageWidth="PageWidth",e))(x||{});const R={ActualSize:n.SpecialZoomLevel.ActualSize,PageFit:n.SpecialZoomLevel.PageFit,PageWidth:n.SpecialZoomLevel.PageWidth},E=e=>({reviewId:e.id,segment:e.segment,pageNumber:e.pageNumber});exports.SegmentPdfSpecialZoomLevel=x,exports.default=function({pdfUrl:x,pdfName:C,segments:k,totalPages:P,styles:A,pdfViewerProps:j,specialZoomLevel:I,showBadges:M=!0,sortByConfidence:N="low",filterByConfidence:B="all",showBadgeNavigation:T=!0,autoSelectReviewOnPageChange:L=!1,autoAdvanceAfterConfirm:F=!0,autoAdvanceScoreBand:q,badgePreloadPages:W=8,badgeOffsetTop:K=20,badgeOffsetRight:z=68,badgeOffsetLeft:$=0,initialReviewId:G,manualPrompt:O,heightBuffer:D,onBoundaryAction:V,onLabelAction:H,onPageAction:U,onPageTypeRevert:X,onRevert:Z,onActiveReviewChange:Y,onCurrentPageChange:J,onActionError:Q,disableAllActions:ee=!1,disablePdfAnnotations:te=!1,disablePdfTextLayer:ne=!0,disableTitleCheckUntilBoundaryCheckCompleted:ie=!1,onAdjustManually:re,onCognitiveClick:ae,className:oe,style:se,viewerStyle:le,railStyle:de,redirectionData:ue,onBadgeSelected:ge,onSaveAsLearning:ce,closePopups:me=!1,onPdfLoadError:pe}){console.log("LOG: TOTAL PAGE IN PARENT",P);const{boundaryReviews:ve,labelReviews:fe,pageReviews:he}=t.useMemo(()=>u.extractSegmentReviewData(k),[k]),[we,ye]=t.useState(()=>new Map),[be,_e]=t.useState(()=>new Set),Se=t.useMemo(()=>{const e=new Map;let t=1;return k.forEach((n,i)=>{const r=u.getSegmentReviewKey(n,i);e.has(r)||(e.set(r,t),t+=1)}),e},[k]),xe=t.useMemo(()=>new Set(fe.map(e=>u.getSegmentReviewKey(e.segment))),[fe]),Re=t.useMemo(()=>w.getPendingMergeImpactedSegmentKeys(k),[k]);t.useEffect(()=>{ye(e=>{let t=!1;const n=new Map(e);return e.forEach((e,i)=>{const r=k.find(e=>u.getSegmentReviewKey(e)===i);r&&!w.hasPolledStructuralAction(r,e)||(n.delete(i),t=!0)}),t?n:e})},[k]),t.useEffect(()=>{_e(e=>{let t=!1;const n=new Set(e);return e.forEach(e=>{we.has(e)||(n.delete(e),t=!0)}),t?n:e})},[we]);const Ee=t.useMemo(()=>w.getOptimisticMergeImpactedSegmentKeys(k,we,be),[be,we,k]),Ce=t.useRef(null),ke=t.useMemo(()=>[...ve.filter(e=>!Re.has(u.getSegmentReviewKey(e.segment))&&!Ee.has(u.getSegmentReviewKey(e.segment))&&!w.shouldHideStructuralBoundaryReview(e.review_step,e.segment,xe.has(u.getSegmentReviewKey(e.segment)),we.get(u.getSegmentReviewKey(e.segment)))).map(e=>({...e,kind:"boundary",pageNumber:e.metadata.focus_page??e.segment.start_page})),...fe.filter(e=>!Re.has(u.getSegmentReviewKey(e.segment))&&!Ee.has(u.getSegmentReviewKey(e.segment))).map(e=>({...e,kind:"label",pageNumber:e.segment.start_page})),...he.filter(e=>!Re.has(u.getSegmentReviewKey(e.segment))&&!Ee.has(u.getSegmentReviewKey(e.segment))).map(e=>({...e,kind:"page",pageNumber:e.metadata.page_num??e.segment.start_page}))].sort((e,t)=>{const n=Se.get(u.getSegmentReviewKey(e.segment))??Number.MAX_SAFE_INTEGER,i=Se.get(u.getSegmentReviewKey(t.segment))??Number.MAX_SAFE_INTEGER;return e.pageNumber-t.pageNumber||n-i||e.reviewStepIndex-t.reviewStepIndex||e.id.localeCompare(t.id)}),[ve,fe,he,Ee,we,Re,Se,xe]),Pe=t.useMemo(()=>k.map(e=>({...e,title:e.label?.trim()||e.title,page_count:e.page_count??e.end_page-e.start_page+1})),[k]),[Ae,je]=t.useState(1),[Ie,Me]=t.useState(G??null),[Ne,Be]=t.useState(G??null),[Te,Le]=t.useState(!1),[Fe,qe]=t.useState(null),[We,Ke]=t.useState(null),[ze,$e]=t.useState(()=>new Set),[Ge,Oe]=t.useState(null),[De,Ve]=t.useState(null),[He,Ue]=t.useState(null),[Xe,Ze]=t.useState(!1),Ye=t.useRef(0),Je=t.useRef(null),Qe=t.useRef(null),et=t.useRef(new Map),tt=t.useRef(null),nt=t.useRef(null),it=t.useRef(null),[rt,at]=t.useState(S),ot=A?.aside?.width??"40%",st=`min(${"number"==typeof ot?`${ot}px`:ot}, 260px, 100%)`,lt=t.useCallback(()=>{Je.current=null,Le(!1),Me(null),qe(null),Ve(null),Ue(null),Ze(!1),Y?.(null,null)},[Y]);t.useEffect(()=>{me&<()},[lt,me]),t.useEffect(()=>{$e(e=>{if(0===e.size)return e;const t=new Set(e);let n=!1;return ke.forEach(e=>{null!=e.review_step.review?.action&&t.has(e.id)&&(t.delete(e.id),n=!0)}),n?t:e})},[ke]),t.useEffect(()=>{const e=Ce.current;if(!e||!M)return;const t=()=>{const t=e.getBoundingClientRect().width;t>0&&at(t)};t();const n="undefined"==typeof ResizeObserver?null:new ResizeObserver(t);return n?.observe(e),()=>n?.disconnect()},[M]);const dt=t.useMemo(()=>{const e=new Set;return ke.forEach(t=>{null!=t.review_step.review?.action&&e.add(t.id)}),e},[ke]),ut=t.useMemo(()=>ke.find(e=>e.id===Ie)??null,[Ie,ke]),gt=t.useMemo(()=>!(!ie||"label"!==ut?.kind)&&ve.some(e=>{if(u.getSegmentReviewKey(e.segment)!==u.getSegmentReviewKey(ut.segment)||dt.has(e.id))return!1;const t=w.getResolvedScore(e.review_step.score,e.review_step.confidence);return null==t||t<85}),[ut,ve,ie,dt]),ct=null==ut?-1:k.findIndex(e=>u.getSegmentReviewKey(e)===u.getSegmentReviewKey(ut.segment)),mt=ct>0?k[ct-1]:void 0,pt=ct>=0?k[ct+1]:void 0,vt=mt?.label?.trim()||mt?.title,ft=pt?.label?.trim()||pt?.title,ht=w.getConfidenceColors(ut?.review_step.score,ut?.review_step.confidence,ut?.segment.confidence?.awaiting_llm),wt=ut?.review_step.reasons?.length?ut.review_step.reasons:ut?.segment.confidence?.reasons??[],yt=Boolean(wt.some(e=>e.text.trim()&&["evidence","gap"].includes(e.type.trim().toLowerCase()))||ut?.review_step.reason?.trim()||ut?.review_step.gap?.trim()),bt=null==ut?null:"boundary"===ut.kind?w.getBoundaryReviewActionBadgeLabel(ut.review_step,ut.segment,we.get(ut.segment.stable_key??"")):w.getTitleReviewActionBadgeLabel(ut.review_step,ut.segment,we.get(ut.segment.stable_key??"")),_t="label"===ut?.kind?[bt,ut.review_step.human_action_enum,ut.review_step.review?.action,ut.review_step.human_resolution?.action]:[],St="label"===ut?.kind&&_t.some(e=>{const t=e?.trim().toUpperCase()??"";return t.includes("MERGE")||t.includes("SPLIT")}),xt=null!=ut&&ke.some(e=>"boundary"===e.kind&&u.getSegmentReviewKey(e.segment)===u.getSegmentReviewKey(ut.segment)),Rt=St&&!xt,Et=("boundary"===ut?.kind||Rt)&&null!=ut?(()=>{if("boundary"===ut.kind)return ut;const e=ve.find(e=>u.getSegmentReviewKey(e.segment)===u.getSegmentReviewKey(ut.segment));return e?{...e,kind:"boundary",pageNumber:e.metadata.focus_page??e.segment.start_page}:{...ut,kind:"boundary",pageNumber:ut.segment.review_action?.focus_page??ut.segment.start_page,metadata:{focus_page:ut.segment.review_action?.focus_page??null,boundary_margin:ut.segment.boundary_margin??null,user_actions:[]}}})():void 0,Ct=null==ut?"":ut.segment.label?.trim()||ut.segment.title,kt=ut?.review_step.revert,Pt=ut?.segment.revert,At=e=>e?.trim().toLowerCase(),jt=null==ut?void 0:[...ut.segment.review_steps??[]].reverse().find(e=>{const t=e.type?.trim().toLowerCase();return("page_boundary"===t||"page boundary review"===t)&&"boundary"===At(e.revert?.type)})?.revert,It=kt??ut?.segment.revert??jt,Mt=It?.decision.trim().toUpperCase();bt??(Mt?.includes("SPLIT")||Mt?.includes("MERGE"));const[Nt,Bt]=t.useState(()=>new Set),Tt="label"===ut?.kind&&"SET_RANGE"===jt?.decision?.trim().toUpperCase()&&jt.current_segment_ids.length!==jt.previous_state.length,Lt="Merged"===bt||"Split"===bt||Tt,Ft=null==ut?void 0:Lt?"boundary"===At(jt?.type)?jt:"boundary"===At(Pt?.type)?Pt:"boundary"===At(kt?.type)?kt:void 0:"label"===ut.kind?"label"===At(kt?.type)?kt:void 0:"boundary"===ut.kind?"boundary"===At(kt?.type)?kt:"boundary"===At(jt?.type)?jt:"boundary"===At(Pt?.type)?Pt:void 0:void 0,qt=Lt&&Ft?.operation_id?k.flatMap(e=>e.review_steps??[]).find(e=>{const t=e.type?.trim().toLowerCase();if(!("page_boundary"===t||"page boundary review"===t))return!1;return(e.human_resolution?.operation_id??e.revert?.operation_id??e.operation_id)===Ft.operation_id&&Boolean(e.human_resolution?.change_summary?.trim())}):void 0,Wt=Ft?.summary?.trim()||null,Kt=Lt?qt?.human_resolution?.change_summary?.trim()||Ft?.summary?.trim()||"":ut?.review_step?.human_resolution?.change_summary?.trim()||ut?.review_step?.summary?.trim()||"",zt="page"===ut?.kind?{currentSegment:{title:Ct,startPage:ut.segment.start_page,endPage:ut.segment.end_page},previousSegments:[]}:ut&&Ft?{currentSegment:{title:Ct,startPage:ut.segment.start_page,endPage:ut.segment.end_page},previousSegments:(Ft.previous_state??[]).flatMap(e=>{const t=null===e.label?"Untitled document":e.label?.trim();return t?[{title:t,startPage:e.start_page,endPage:e.end_page}]:[]})}:null,$t="page"===ut?.kind?ut.metadata.type_choices?.map(e=>e.classification_id)??(ut.metadata.classification_id?[ut.metadata.classification_id]:[]):[],Gt="page"===ut?.kind?Boolean(X&&$t.length>0):Boolean(Ft?.operation_id&&Ft?.type&&!1!==Ft?.revertable),Ot=Boolean(zt&&Gt),Dt=t.useCallback((e,t)=>{Ye.current+=1,Je.current={requestId:Ye.current,pageNumber:e,reviewId:t},Ke({pageNumber:e,requestId:Ye.current})},[]),Vt=t.useCallback(e=>{!0!==e.segment.confidence?.awaiting_llm&&(ge?.({reviewId:e.id,segment_id:e.segment.segment_id??null,reviewStepIndex:e.reviewStepIndex,kind:e.kind,pageNumber:e.pageNumber,metadata:e.metadata}),Ve(null),Ue(null),Me(e.id),Be(e.id),Le(!1),qe(null),Dt(e.pageNumber,e.id),Y?.(e.id,e.segment))},[Y,ge,Dt]);t.useEffect(()=>{if(!He)return;const e=requestAnimationFrame(()=>Ze(!0)),t=window.setTimeout(()=>{Ze(!1)},3500),n=window.setTimeout(()=>{Ue(null)},4e3);return()=>{cancelAnimationFrame(e),window.clearTimeout(t),window.clearTimeout(n)}},[He]),t.useEffect(()=>{if(!ue)return;if("pageGroup"===ue.type){const e=ue.pages??[],t=ue.pageIndex??0,n=e[t];if(null==n)return;return Ht(),Ve({pages:e,index:t,label:ue.groupLabel??""}),Ye.current+=1,void Ke({pageNumber:n,requestId:Ye.current})}if(Ve(null),ue.reviewId){const e=ke.find(e=>e.id===ue.reviewId&&(!ue.type||e.kind===ue.type));if(e)return void Vt(e)}if(ue.classificationId){const e=ke.find(e=>"page"===e.kind&&(e.metadata.classification_id===ue.classificationId||e.metadata.type_choices?.some(e=>e.classification_id===ue.classificationId))&&(!ue.segmentId||e.segment.segment_id===ue.segmentId)&&(!ue.type||e.kind===ue.type));if(e)return void Vt(e)}if(!ue.pageNumber||!ue.type)return;const e=Number(ue.pageNumber);if(!Number.isInteger(e)||e<1)return;const t=ue.pageType?.trim().toLowerCase(),n=ke.find(n=>{const i="page"===n.kind?n.pageNumber:n.segment.start_page,r="page"!==n.kind||!t||n.metadata.page_type===t||n.metadata.type_choices?.some(e=>e.page_type===t);return(!ue.segmentId||n.segment.segment_id===ue.segmentId)&&i===e&&n.kind===ue.type&&r});n?Vt(n):"page"===ue.type&&(Ht(),Ye.current+=1,Ke({pageNumber:e,requestId:Ye.current}))},[ue,Vt,ke]);const Ht=t.useCallback(()=>{Je.current=null,Le(!1),Me(null),qe(null),Y?.(null,null)},[Y]),Ut=t.useCallback(e=>{Ze(!1),Ue(null);const t=ke.find(t=>!dt.has(t.id)&&"boundary"===t.kind&&t.segment.start_page===e.startPage&&t.segment.end_page===e.endPage)??ke.find(t=>!dt.has(t.id)&&t.segment.start_page<=e.startPage&&t.segment.end_page>=e.startPage);t?Vt(t):(Ht(),Ye.current+=1,Ke({pageNumber:e.startPage,requestId:Ye.current}))},[Ht,dt,ke,Vt]),Xt=t.useCallback((e,t)=>{const n=_.getReviewScoreBand(e.review_step.score),i=null==q||n===q,r=ze.has(e.id)&&w.isReviewStepResolutionCurrent(e.review_step,e.segment);return e.id!==t&&i&&!0!==e.segment.confidence?.awaiting_llm&&!w.isReviewStepResolved(e.review_step,e.segment)&&!r},[q,ze]),Zt=t.useCallback(e=>{if(!F)return void Ht();const t=ke.findIndex(t=>t.id===e),n=ke.find((n,i)=>i>t&&Xt(n,e))??ke.find(t=>Xt(t,e));n?requestAnimationFrame(()=>Vt(n)):Ht()},[F,Ht,Xt,ke,Vt]),Yt=t.useCallback(async(e,t)=>{if(ee||!U||0===t.length)return;const n=e.metadata.type_choices??[];if(2!==n.length)return;const i=new Set(t),r=E(e),a=[...n].sort((e,t)=>{const n=i.has(e.page_type);return n===i.has(t.page_type)?0:n?-1:1});Oe(e.id);try{for(const t of a){const n=i.has(t.page_type)?l.PageCheckActionEnum.YES:l.PageCheckActionEnum.NO;await U(n,{action:n,pageType:t.page_type,metadata:{user_actions:[l.PageCheckActionEnum.YES,l.PageCheckActionEnum.NO],page_num:e.metadata.page_num,page_type:t.page_type,classification_id:t.classification_id}},r)}$e(t=>{const n=new Set(t);return n.add(e.id),n}),Zt(e.id)}catch(e){Q?.(e,r)}finally{Oe(null)}},[ee,Q,U,Zt]),Jt=t.useCallback(async(e,t,n)=>{if(ee)return;if("boundary"===e.kind&&!V)return;if("label"===e.kind&&!H)return;if("page"===e.kind&&!U)return;const i=E(e),a=t,o=n,s=a===r.BoundaryReviewActionEnum.SET_RANGE?(()=>{const t=o.startPage,n=o.endPage;if(null==t||null==n)return null;const i=t<e.segment.start_page||n>e.segment.end_page,a=t>e.segment.start_page||n<e.segment.end_page;return i&&!a?t<e.segment.start_page?r.BoundaryReviewActionEnum.MERGE_PREV:r.BoundaryReviewActionEnum.MERGE_NEXT:a?r.BoundaryReviewActionEnum.SPLIT_HERE:null})():a,l="boundary"===e.kind&&null!=V&&F&&(s===r.BoundaryReviewActionEnum.SPLIT_HERE||s===r.BoundaryReviewActionEnum.MERGE_NEXT||s===r.BoundaryReviewActionEnum.MERGE_PREV||s===r.BoundaryReviewActionEnum.MERGE_PREVIOUS),d=l?k.findIndex(t=>u.getSegmentReviewKey(t)===u.getSegmentReviewKey(e.segment)):-1;l&&d>=0&&s&&(Qe.current={action:s,originalSegmentIndex:d,segmentSignature:JSON.stringify(k.map((e,t)=>({key:u.getSegmentReviewKey(e,t),startPage:e.start_page,endPage:e.end_page,version:e.version??null}))),ready:!1}),Oe(e.id);try{"boundary"===e.kind?await(V?.(t,n,i)):"label"===e.kind?await(H?.(t,n,i)):"page"===e.kind&&await(U?.(t,n,i)),$e(t=>{const n=new Set(t);return n.add(e.id),n});const o="boundary"===e.kind&&(s===r.BoundaryReviewActionEnum.MERGE_NEXT||s===r.BoundaryReviewActionEnum.MERGE_PREV||s===r.BoundaryReviewActionEnum.MERGE_PREVIOUS);if(("boundary"===e.kind&&s===r.BoundaryReviewActionEnum.SPLIT_HERE||o)&&s){const t=u.getSegmentReviewKey(e.segment);_e(e=>{const n=new Set(e);return a===r.BoundaryReviewActionEnum.SET_RANGE?n.add(t):n.delete(t),n}),ye(e=>{const n=new Map(e);return n.set(t,s),n})}if(Qe.current){if(Qe.current.ready=!0,o){const t=ke.find(t=>"label"===t.kind&&u.getSegmentReviewKey(t.segment)===u.getSegmentReviewKey(e.segment));t&&requestAnimationFrame(()=>Vt(t))}}else Zt(e.id)}catch(e){l&&(Qe.current=null),Q?.(e,i)}finally{Oe(null)}},[F,ee,Q,V,H,U,X,ke,k,Vt,Zt]);t.useEffect(()=>{const e=Qe.current;if(!e?.ready)return;if(JSON.stringify(k.map((e,t)=>({key:u.getSegmentReviewKey(e,t),startPage:e.start_page,endPage:e.end_page,version:e.version??null})))===e.segmentSignature)return;const t=e.action===r.BoundaryReviewActionEnum.SPLIT_HERE?e.originalSegmentIndex+1:e.action===r.BoundaryReviewActionEnum.MERGE_PREV||e.action===r.BoundaryReviewActionEnum.MERGE_PREVIOUS?Math.max(0,e.originalSegmentIndex-1):e.originalSegmentIndex,n=new Map(k.map((e,t)=>[u.getSegmentReviewKey(e,t),t])),i=ke.find(e=>{const i=n.get(u.getSegmentReviewKey(e.segment));return null!=i&&i>=t&&Xt(e)});if(!i)return Qe.current=null,void Ht();requestAnimationFrame(()=>{Qe.current=null,Vt(i)})},[Ht,Xt,ke,k,Vt]),t.useEffect(()=>{Qe.current||Ie&&!ke.some(e=>e.id===Ie)&&Ht()},[Ie,Ht,ke]),t.useEffect(()=>{if(!L)return;if(Qe.current)return;const e=ke.find(e=>e.pageNumber===Ae);e&&e.id!==Ie&&Vt(e)},[Ie,L,Ae,Vt,ke]),t.useEffect(()=>{Qe.current||Ie&&!ke.some(e=>e.id===Ie&&!0!==e.segment.confidence?.awaiting_llm)&&Ht()},[Ie,Ht,ke]);const Qt=t.useMemo(()=>{const e=ke.filter(e=>!0!==e.segment.confidence?.awaiting_llm);if("all"===B)return e;const t=["low","medium","high"].filter(e=>e!==N),n=[N,...t],i=new Map(n.map((e,t)=>[e,t]));return e.map((e,t)=>({item:e,index:t})).sort((e,t)=>{const r=e.item.review_step.confidence?.trim().toLowerCase(),a=t.item.review_step.confidence?.trim().toLowerCase();return(null==r?n.length:i.get(r)??n.length)-(null==a?n.length:i.get(a)??n.length)||e.index-t.index}).map(({item:e})=>e)},[B,N,ke]),en=Qt.findIndex(e=>e.id===Ne),[tn,nn]=t.useState(null),[rn,an]=t.useState(null),on=t.useRef(!1),sn=t.useCallback(e=>{const t=Qt[e];t&&Vt(t)},[Qt,Vt]);t.useCallback(e=>{if(!De||e<0||e>=De.pages.length)return;const t=De.pages[e];null!=t&&(Ht(),Ve(t=>null==t?t:{...t,index:e}),Ye.current+=1,Ke({pageNumber:t,requestId:Ye.current}))},[De,Ht]),t.useEffect(()=>{Ne&&!Qt.some(e=>e.id===Ne)&&Be(null)},[Qt,Ne]),t.useEffect(()=>{on.current=!1,an(null),nn(en>=0?String(en+1):null)},[en,Qt.length]),t.useEffect(()=>{if(!on.current||null==tn)return;const e=window.setTimeout(()=>{const e=Number(tn.trim()),t=e-1;Number.isInteger(e)&&t>=0&&t<Qt.length&&(on.current=!1,sn(t))},300);return()=>window.clearTimeout(e)},[sn,tn,Qt.length]);const ln=t.useMemo(()=>{const e=new Map;ke.forEach(t=>{const n=e.get(u.getSegmentReviewKey(t.segment))??[];n.push(t),e.set(u.getSegmentReviewKey(t.segment),n)});const t=new Map;return e.forEach((e,n)=>{const i=Se.get(n)??1;e.sort((e,t)=>e.reviewStepIndex-t.reviewStepIndex).forEach((e,n)=>{t.set(e.id,`${i}${(e=>{let t=e+1,n="";for(;t>0;)t-=1,n=String.fromCharCode(65+t%26)+n,t=Math.floor(t/26);return n})(n)}`)})}),t},[ke,Se]),dn=t.useMemo(()=>{const e=new Map;ke.forEach(t=>{const n=e.get(t.pageNumber)??[];n.push(t),e.set(t.pageNumber,n)});const t=new Map;return e.forEach(e=>{e.forEach((e,n)=>t.set(e.id,n))}),t},[ke]),un=t.useCallback(e=>({startPage:Math.max(0,e.startPage-W),endPage:Math.min(e.numPages-1,e.endPage+W)}),[W]),gn=t.useCallback(()=>{const e=nt.current,t=it.current;if(!e||!t)return;const n=e.getBoundingClientRect(),i=t.querySelector(".rpv-core__inner-pages"),r=i?.getBoundingClientRect()??t.getBoundingClientRect();ke.forEach(e=>{const i=et.current.get(e.id);if(!i)return;const a=t.querySelector(`[data-testid="core__page-layer-${e.pageNumber-1}"]`);if(!a)return void(i.style.visibility="hidden");const o=a.getBoundingClientRect(),s=dn.get(e.id)??0,l=o.top+K+40*s,d=l+(i.offsetHeight||32),u=l>=r.top&&d<=r.bottom;i.style.top=l-n.top+"px",i.style.visibility=u?"visible":"hidden"});const a=tt.current;if(a){const e=De?.pages[De.index],i=null==e?null:t.querySelector(`[data-testid="core__page-layer-${e-1}"]`);if(De&&i){const e=i.getBoundingClientRect().top+K,t=e+(a.offsetHeight||25),o=e>=r.top&&t<=r.bottom;a.style.top=e-n.top+"px",a.style.visibility=o?"visible":"hidden"}else a.style.visibility="hidden"}if(Ie&&null==Je.current){const e=et.current.get(Ie);e&&"hidden"!==e.style.visibility&&qe(t=>t===e?t:e)}},[De,Ie,K,dn,ke]),cn=t.useCallback(e=>{const t=Je.current;t&&t.requestId===e.requestId&&t.pageNumber===e.pageNumber&&(Je.current=null,gn(),requestAnimationFrame(()=>{if(null!=Je.current)return;const e=et.current.get(t.reviewId);e&&"hidden"!==e.style.visibility&&qe(e)}))},[gn]);return t.useEffect(()=>{const e=it.current;if(!e||!M)return;let t=null;const n=()=>{null==t&&(t=requestAnimationFrame(()=>{t=null,gn()}))};e.addEventListener("scroll",n,!0),window.addEventListener("resize",n);const i=new MutationObserver(n);i.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style"]});const r="undefined"==typeof ResizeObserver?null:new ResizeObserver(n);return r?.observe(e),n(),()=>{null!=t&&cancelAnimationFrame(t),e.removeEventListener("scroll",n,!0),window.removeEventListener("resize",n),i.disconnect(),r?.disconnect()}},[M,gn]),e.jsxs("div",{ref:nt,className:oe,style:{...se,display:"block",position:"relative",width:"100%",height:"100%",minWidth:0,overflowX:"auto",overflowY:"hidden"},children:[e.jsxs("div",{className:"segment-review-wrapper__container",style:{display:"flex",alignItems:"stretch",gap:0,width:"100%",minWidth:700,height:"100%"},children:[e.jsx("div",{ref:it,style:{...le,flex:"1 1 auto",width:M?"auto":"100%",minWidth:0,height:"100%",boxSizing:"border-box"},children:e.jsx(i.default,{highlightText:[],highlightPages:{},highlightCordinatePages:[],useCoordinates:!1,showRotateButton:!0,...j,onError:pe,defaultScale:void 0===I?j?.defaultScale??n.SpecialZoomLevel.PageFit:R[I],disablePdfAnnotations:te,disablePdfTextLayer:ne,pdfUrl:x,pdfName:C,segments:Pe,navigationRequest:We,onNavigationSettled:cn,setRenderRange:un,onCurrentPageChange:e=>{je(e),null==Je.current&&ut&&ut.pageNumber!==e&&Ht(),J?.(e)}})}),M&&e.jsxs("aside",{"aria-label":"Page review badges",ref:Ce,style:{...de,position:"relative",width:st,maxWidth:S,flex:`0 1 ${st}`,minHeight:0,overflow:"hidden",boxSizing:"border-box"},children:[De&&e.jsx("span",{ref:tt,style:{position:"absolute",top:0,left:10,visibility:"hidden",zIndex:2,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:4,minHeight:25,padding:"2px 8px",border:"1px solid #E2E8F0",borderRadius:16,backgroundColor:"#F8FAFC",boxSizing:"border-box",boxShadow:"0 1px 2px rgba(16, 24, 40, 0.08)",font:"inherit"},children:e.jsxs(c.Typography,{fontFamily:"Inter",sx:{fontSize:11,fontWeight:500,color:"#475569",whiteSpace:"nowrap"},children:[De.label||"Pages"," Pg: ",De.index+1]})}),T&&Qt.length>0&&!De&&e.jsxs("nav",{"aria-label":"Review badge navigation",style:{position:"absolute",top:8,right:z||"auto",left:$||"auto",zIndex:2,display:"flex",alignItems:"center",gap:7,width:128,minHeight:40,padding:"4px 6px",border:"1px solid #CBD5E1",borderRadius:6,backgroundColor:"#FFFFFF",boxSizing:"border-box",boxShadow:"0 1px 2px rgba(16, 24, 40, 0.06)",font:"inherit"},children:[e.jsx(c.Tooltip,{title:"out-of-range"===rn?"Please enter valid number present in the range":"Please enter valid numbers",open:null!=rn,placement:"top",arrow:!0,children:e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",value:tn??"-",min:0,max:Qt.length,"aria-label":"Review badge number","aria-invalid":null!=rn,onFocus:()=>{null==tn&&nn("")},onBlur:()=>{an(null);const e=Number(tn);(null==tn||""===tn||!Number.isInteger(e)||e<1||e>Qt.length)&&(on.current=!1,nn(en>=0?String(en+1):null))},onChange:e=>{const t=e.target.value;if(!/^\d*$/.test(t))return void an("invalid-number");const n=Number(t),i=""!==t&&(n<1||n>Qt.length);an(i?"out-of-range":null),on.current=!0,nn(t)},style:{width:30,height:28,padding:0,border:"1px solid "+(rn?"#DC2626":"#A5B4FC"),borderRadius:3,color:"#4F46E5",backgroundColor:"#FFFFFF",textAlign:"center",font:"inherit",fontSize:15,outline:"none"}})}),e.jsxs("span",{"aria-label":`${Qt.length} reviews`,style:{flex:1,color:"#4F46E5",fontSize:14,whiteSpace:"nowrap",textAlign:"center"},children:["of ",Qt.length]}),["previous","next"].map(t=>{const n="previous"===t,i=en+(n?-1:1),r=i<0||i>=Qt.length;return e.jsx("button",{type:"button","aria-label":(n?"Previous":"Next")+" review badge",disabled:r,onClick:()=>sn(i),style:{display:"grid",placeItems:"center",width:17,height:28,padding:0,border:0,background:"transparent",color:r?"#C7D2FE":"#4F46E5",cursor:r?"default":"pointer"},children:e.jsx("svg",{width:"12",height:"8",viewBox:"0 0 12 8",fill:"none",children:e.jsx("path",{d:n?"M1 7L6 2L11 7":"M1 1L6 6L11 1",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})})},t)})]}),!De&&ke.map(t=>{const n=Ie===t.id,i=ln.get(t.id)??"1A",r=t.review_step.score,a=t.review_step.confidence,o=w.formatScore(r,a),s="boundary"===t.kind?w.getBoundaryReviewActionBadgeLabel(t.review_step,t.segment,we.get(u.getSegmentReviewKey(t.segment))):"label"===t.kind?w.getTitleReviewActionBadgeLabel(t.review_step,t.segment,we.get(u.getSegmentReviewKey(t.segment))):null,l=s??("N/A"===o?o:`${o}%`),d=!0===t.segment.confidence?.awaiting_llm,m=w.getConfidenceColors(r,a,d),p=dt.has(t.id),v=d;return e.jsx(c.Tooltip,{title:d?"data is being processed":"",arrow:!0,children:e.jsx("span",{ref:e=>{e?et.current.set(t.id,e):et.current.delete(t.id)},style:{position:"absolute",top:0,left:10,visibility:"hidden",display:"inline-flex",cursor:v?"not-allowed":"pointer"},children:e.jsx("button",{disabled:v,type:"button","aria-pressed":n,"aria-label":d?`${t.review_step.type} · Page ${t.pageNumber} · Data is being processed`:`${t.review_step.type} · Page ${t.pageNumber}`,onClick:()=>Vt(t),style:{cursor:"inherit",display:"flex",alignItems:"center",justifyContent:"space-around",gap:4,width:s?p&&!d?115:90:p&&!d?105:80,minHeight:25,padding:"2px 5px",border:`1px solid ${p&&!d?"#E2E8F0":m.border}`,borderRadius:16,backgroundColor:p&&!d?"#F8FAFC":m.background,color:p&&!d?"#475569":m.text,font:"inherit",alignContent:"center",boxShadow:"0 1px 2px rgba(16, 24, 40, 0.08)"},children:p&&!d?e.jsxs(c.Typography,{fontFamily:"Inter",sx:{display:"flex",gap:1,alignItems:"center",flexDirection:"row"},children:[e.jsx("span",{style:{fontSize:11,fontWeight:500},children:i}),e.jsxs("span",{style:{display:"flex",alignItems:"center"},children:[e.jsx("svg",{width:"2",height:"14",viewBox:"0 0 1 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M0.399902 0V14",stroke:"#CBD5E1",strokeWidth:"0.8"})}),e.jsx("span",{style:{fontSize:11,fontWeight:500,marginLeft:"7px",display:"flex",alignItems:"center"},children:l})]}),e.jsxs("span",{style:{fontSize:11,fontWeight:500,display:"flex",alignItems:"center"},children:[e.jsx("svg",{width:"2",height:"14",viewBox:"0 0 1 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M0.399902 0V14",stroke:"#CBD5E1",strokeWidth:"0.8"})}),e.jsx("span",{style:{display:"flex",marginLeft:"7px",alignItems:"center"},children:e.jsx(g.CircleCheck,{height:14,width:14,strokeWidth:2,color:"#16A34A"})})]})]}):e.jsxs(c.Typography,{fontFamily:"Inter",sx:{display:"flex",gap:1,alignItems:"center",flexDirection:"row"},children:[e.jsx("span",{style:{fontSize:11,fontWeight:500},children:i}),e.jsxs("span",{style:{display:"flex",alignItems:"center"},children:[e.jsx("svg",{width:"2",height:"14",viewBox:"0 0 1 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M0.399902 0V14",stroke:m.divider,strokeWidth:"0.8"})}),e.jsx("span",{style:{fontSize:11,fontWeight:500,marginLeft:"7px",display:"flex",alignItems:"center"},children:l})]})]})})})},t.id)})]})]}),ut&&Fe&&e.jsxs(a.default,{anchorElement:Fe,placement:"bottom-start",offset:{top:8},width:Math.min(rt,S),maxWidth:S,heightBuffer:D??25,children:[Te&&e.jsx(o.default,{width:"100%",maxWidth:"100%",score:ut.review_step.score,reasons:wt,reason:ut.review_step.reason,gap:ut.review_step.gap,onBack:()=>Le(!1),onClose:Ht}),e.jsx("div",{style:{display:Te?"none":"block"},children:dt.has(ut.id)?e.jsx(m.default,{width:"100%",maxWidth:"100%",headerName:"page"===ut.kind?"Page format approved":"Split"===bt?"Split approved":"Merged"===bt?"Merge approved":"User approved",headerIcon:"page"===ut.kind?e.jsx(g.Check,{size:18,strokeWidth:2}):"Merged"===bt?e.jsx(g.GitMerge,{size:18,strokeWidth:2}):"Split"===bt?e.jsx(y.default,{width:18,height:18}):e.jsx(g.CircleCheck,{size:18,strokeWidth:2}),title:Ct,pageNo:`Page ${ut.segment.start_page}-${ut.segment.end_page}`,summary:Ot&&zt?e.jsxs(c.Stack,{spacing:.75,children:[Kt&&e.jsx(b.default,{icon:e.jsx(g.CircleCheck,{size:14,strokeWidth:2}),description:Kt}),ce&&e.jsx(f.default,{disabled:ee,onSave:async()=>{const e=await ce({operationId:Ft?.operation_id??null},E(ut));return e&&e.success&&Ht(),e},onSaveComplete:()=>{Bt(e=>{const t=new Set(e);return t.add(ut.id),t}),Ht()},onSaveError:e=>{Q?.(e,E(ut))}}),e.jsx(v.default,{icon:e.jsx(g.CircleCheck,{size:14,strokeWidth:2}),title:Ct,pageRange:`Page ${ut.segment.start_page}-${ut.segment.end_page}`,description:Kt??null,revertData:zt,confirmDisabled:"page"===ut.kind?!Gt:null==Z||!Gt,showDocumentHeader:!1,onRevert:async()=>{if("page"===ut.kind){if(!X||0===$t.length){const e=new Error("SegmentReviewPdfWrapper requires onPageTypeRevert and at least one classification id to revert a page-type decision.");throw Q?.(e,E(ut)),e}let e;for(const t of $t)e=await X({classification_id:t,human_verdict:"No"},E(ut));return e}if(!Z)throw new Error("SegmentReviewPdfWrapper requires onRevert to handle a revert confirmation.");if(!Ft)throw new Error("There is no valid revert operation for this review.");const e=Lt?"boundary":"label"===ut.kind?"label":"boundary"===ut.kind?"boundary":null,t=At(Ft.type);if(e&&t!==e)throw new Error(`Cannot use ${t??"unknown"} revert metadata for this review. Expected ${e}.`);return Z(Ft,E(ut))},onRevertError:e=>{Q?.(e,E(ut))},onRevertComplete:e=>{$e(()=>new Set),"page"!==ut.kind&&(_e(()=>new Set),ye(()=>new Map));const t=zt.previousSegments[0]??zt.currentSegment,n=Fe?.getBoundingClientRect(),i=it.current?.getBoundingClientRect(),r=Math.min(S,Math.max(220,rt)),a=n?.left??(i?.right??window.innerWidth-r-8)+8,o=Math.max(8,Math.min(a,window.innerWidth-r-8)),s=null==n?.bottom?Math.max(8,i?.top??8):n.bottom+8;$e(()=>new Set),"page"!==ut.kind&&(Qe.current=null),Ze(!1),Ue({title:"Split"===bt?"Split reverted":"Merged"===bt?"Merge reverted":"Approval reverted",description:e?.message?.trim()||null,segment:t,position:{top:s,left:o,width:r}}),Ht()}})]}):void 0,additionalActions:Et?e.jsx(p.default,{metadata:Et.metadata,reviewAction:ut.segment.review_action??void 0,startPage:ut.segment.start_page,endPage:ut.segment.end_page,title:Ct,previousSegmentTitle:vt,nextSegmentTitle:ft,disabled:ee||!V||Ge===ut.id,onConfirm:(e,t)=>{Jt(Et,e,t)}}):void 0,cognitiveScore:ut.review_step.score,styles:{root:{borderColor:"#16A34A"},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:"#16A34A"}}},onCognitiveClick:yt?()=>{Le(!0),ae?.(E(ut))}:void 0,onClose:Ht}):"boundary"===ut.kind?e.jsx(r.default,{width:"100%",maxWidth:"100%",totalPages:P,title:ut.segment.label||ut.segment.title,pageNo:`Page ${ut.pageNumber}`,content:ut.review_step.question??null,revertSummary:Wt,cognitiveScore:ut.review_step.score,metadata:ut.metadata,reviewAction:ut.segment.review_action??void 0,previousSegmentTitle:vt,nextSegmentTitle:ft,manualPrompt:O??"Set a custom boundary",defaultStartPage:ut.segment.start_page,defaultEndPage:ut.segment.end_page,styles:{root:{borderColor:ht.cardBorder},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:ht.text}}},confirmDisabled:ee||!V||Ge===ut.id,onConfirm:(e,t,n)=>{n&&r.isBoundaryReviewAction(t.id)&&Jt(ut,t.id,n)},onAdjustManually:()=>re?.(E(ut)),onCognitiveClick:yt?()=>{Le(!0),ae?.(E(ut))}:void 0,onClose:Ht},ut.id):"label"===ut.kind?e.jsx(s.default,{width:"100%",maxWidth:"100%",title:ut.metadata.current_label||ut.segment.label||ut.segment.title,pageNo:`Pages ${ut.segment.start_page}-${ut.segment.end_page}`,content:ut.review_step.question??null,revertSummary:Wt,cognitiveScore:ut.review_step.score,metadata:ut.metadata,styles:{root:{borderColor:ht.cardBorder},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:ht.text}}},confirmDisabled:ee||!H||Ge===ut.id,confirmationBlocked:gt,confirmationWarning:gt?"Please confirm the boundary before confirming the title.":void 0,onActionConfirm:(e,t)=>{Jt(ut,e,t)},onAdjustManually:()=>re?.(E(ut)),onCognitiveClick:yt?()=>{Le(!0),ae?.(E(ut))}:void 0,onClose:Ht},ut.id):2===ut.metadata.type_choices?.length?e.jsx(d.default,{width:"100%",maxWidth:"100%",title:ut.segment.label||ut.segment.title,pageNo:`Page ${ut.pageNumber}`,content:ut.review_step.reason,choices:ut.metadata.type_choices,cognitiveScore:ut.review_step.score,styles:{root:{borderColor:ht.cardBorder},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:ht.text}}},confirmDisabled:ee||!U||Ge===ut.id,onConfirm:e=>{Yt(ut,e)},onCognitiveClick:yt?()=>{Le(!0),ae?.(E(ut))}:void 0,onClose:Ht},ut.id):e.jsx(l.default,{width:"100%",maxWidth:"100%",title:ut.segment.label||ut.segment.title,pageNo:`Page ${ut.pageNumber}`,content:ut.review_step.reason,cognitiveScore:ut.review_step.score,pageType:ut.metadata.page_type,metadata:ut.metadata,styles:{root:{borderColor:ht.cardBorder},header:{"& > .MuiSvgIcon-root, & .MuiTypography-root":{color:ht.text}}},confirmDisabled:ee||!U||Ge===ut.id,onActionConfirm:(e,t)=>{Jt(ut,e,t)},onCognitiveClick:yt?()=>{Le(!0),ae?.(E(ut))}:void 0,onClose:Ht},ut.id)})]}),He&&e.jsx(c.Portal,{children:e.jsx(c.Box,{"aria-live":"polite",sx:{position:"fixed",top:He.position.top,left:He.position.left,zIndex:1600,width:He.position.width,maxWidth:"calc(100vw - 16px)",opacity:Xe?1:0,transform:Xe?"translateY(0)":"translateY(-6px)",transition:"opacity 500ms ease, transform 500ms ease",filter:"drop-shadow(0 12px 24px rgba(15, 23, 42, 0.18))",pointerEvents:Xe?"auto":"none"},children:e.jsx(h.default,{title:He.title,description:He.description,onReview:()=>Ut(He.segment)})})})]})};
|
|
2
2
|
//# sourceMappingURL=SegmentReviewPdfWrapper.js.map
|