@osdk/react-components 0.8.0-main-19b791320004e4dd08af9a4e4d30e8fc1f7e721a → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pdf-viewer/components/PdfViewerAnnotationLayer.module.css","../../src/pdf-viewer/components/PdfViewerAnnotationLayer.tsx","../../src/pdf-viewer/components/PdfViewerOutlineSidebar.module.css","../../src/pdf-viewer/components/PdfViewerSidebarHeader.module.css","../../src/pdf-viewer/components/PdfViewerSidebarHeader.tsx","../../src/pdf-viewer/components/PdfViewerOutlineSidebar.tsx","../../src/pdf-viewer/components/PdfViewerSearchBar.module.css","../../src/pdf-viewer/components/PdfViewerSearchBar.tsx","../../src/pdf-viewer/constants.ts","../../src/pdf-viewer/components/PdfViewerSidebar.module.css","../../src/pdf-viewer/components/PdfViewerThumbnail.module.css","../../src/pdf-viewer/components/PdfViewerThumbnail.tsx","../../src/pdf-viewer/components/PdfViewerSidebar.tsx","../../src/pdf-viewer/components/PdfViewerToolbar.module.css","../../src/pdf-viewer/components/PdfViewerToolbar.tsx","../../src/pdf-viewer/hooks/usePdfAnnotationsByPage.ts","../../src/pdf-viewer/hooks/usePdfFormFields.ts","../../src/pdf-viewer/hooks/usePdfHighlightMode.ts","../../src/pdf-viewer/hooks/usePdfOutline.ts","../../src/pdf-viewer/hooks/usePdfAnnotationPortals.ts","../../src/pdf-viewer/hooks/usePdfDocument.ts","../../src/pdf-viewer/hooks/usePdfViewer.ts","../../src/pdf-viewer/hooks/usePdfViewerSync.ts","../../src/pdf-viewer/hooks/usePdfViewerCore.ts","../../src/pdf-viewer/hooks/usePdfViewerSearch.ts","../../src/pdf-viewer/hooks/usePdfViewerState.ts","../../src/pdf-viewer/PdfViewer.module.css","../../src/pdf-viewer/PdfViewer.tsx","../../src/pdf-viewer/components/PdfViewerContent.tsx","../../src/pdf-viewer/PdfViewerContext.tsx","../../src/pdf-viewer/PdfRenderer.tsx","../../src/public/experimental/pdf-viewer.ts"],"names":["useCallback","classnames","useMemo","React","ToggleGroup","Toggle","GridView","Properties","ChevronUp","ChevronDown","Cross","useRef","useState","useEffect","useVirtualizer","Button","Menu","ChevronLeft","Input","ChevronRight","Minus","Plus","RotatePage","Highlight","Search","Download","FloppyDisk","stored","AnnotationEditorType","items","importMetaUrl","GlobalWorkerOptions","getDocument","EventBus","PDFLinkService","PDFFindController","PDFViewer","forwardRef","BasePdfViewer","useImperativeHandle","Spin","ErrorIcon","createPortal","useContext","PdfViewer","withOsdkMetrics"],"mappings":"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","file":"chunk-6U6S3VI2.cjs","sourcesContent":[".annotationLayer {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 3;\n}\n\n.annotationGroup {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.annotationGroup:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.annotationGroup .annotation {\n pointer-events: auto;\n}\n\n.annotation {\n position: absolute;\n pointer-events: auto;\n cursor: pointer;\n transition: opacity var(--osdk-emphasis-transition-duration)\n var(--osdk-emphasis-ease-default);\n}\n\n.annotation:hover {\n opacity: 0.8;\n}\n\n.annotation:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.highlight {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-highlight)\n );\n border-radius: 2px;\n}\n\n.underline {\n background-color: transparent;\n border-bottom: 2px solid\n var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-underline)\n );\n}\n\n.comment {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-comment)\n );\n border-radius: 50%;\n width: 16px !important;\n height: 16px !important;\n}\n\n.pin {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-pin)\n );\n border-radius: 50% 50% 50% 0;\n width: 16px !important;\n height: 16px !important;\n transform: rotate(-45deg);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerAnnotationLayer.module.css\";\n/** Convert a single PDF rect (bottom-left origin) to CSS positioning (top-left origin). */\nfunction computeRectStyle(rect, pageHeight, scale, color) {\n return {\n left: rect.x * scale,\n top: (pageHeight - rect.y - rect.height) * scale,\n width: rect.width * scale,\n height: rect.height * scale,\n ...(color != null ? {\n \"--osdk-pdf-annotation-color\": color\n } : {})\n };\n}\nfunction useAnnotationHandlers(annotation, onClick) {\n const handleClick = useCallback(() => {\n onClick?.(annotation);\n }, [onClick, annotation]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n onClick?.(annotation);\n }\n }, [onClick, annotation]);\n return {\n handleClick,\n handleKeyDown\n };\n}\nfunction AnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick\n}) {\n const {\n handleClick,\n handleKeyDown\n } = useAnnotationHandlers(annotation, onClick);\n const className = classnames(styles.annotation, styles[annotation.type]);\n const multiRects = annotation.rects;\n const hasMultipleRects = multiRects != null && multiRects.length > 1;\n const style = useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, annotation.color), [annotation, pageHeight, scale]);\n\n // Multi-rect: render a group wrapper with one div per rect\n if (hasMultipleRects) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotationGroup,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n }, multiRects.map((rect, i) => /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: className,\n style: computeRectStyle(rect, pageHeight, scale, annotation.color)\n })));\n }\n\n // Single rect: existing behavior\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: style,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n });\n}\nfunction CustomAnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick\n}) {\n const {\n handleClick,\n handleKeyDown\n } = useAnnotationHandlers(annotation, onClick);\n const style = useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, undefined), [annotation, pageHeight, scale]);\n const renderProps = useMemo(() => ({\n annotation,\n scale,\n pageHeight\n }), [annotation, scale, pageHeight]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotation,\n style: style,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n }, annotation.render(renderProps));\n}\nexport function PdfViewerAnnotationLayer({\n annotations,\n pageHeight,\n scale,\n onAnnotationClick\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotationLayer\n }, annotations.map(annotation => annotation.type === \"custom\" ? /*#__PURE__*/React.createElement(CustomAnnotationItem, {\n key: annotation.id,\n annotation: annotation,\n pageHeight: pageHeight,\n scale: scale,\n onClick: onAnnotationClick\n }) : /*#__PURE__*/React.createElement(AnnotationItem, {\n key: annotation.id,\n annotation: annotation,\n pageHeight: pageHeight,\n scale: scale,\n onClick: onAnnotationClick\n })));\n}",".sidebar {\n width: var(--osdk-pdf-viewer-sidebar-width);\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--osdk-pdf-viewer-sidebar-bg);\n border-right: var(--osdk-pdf-viewer-sidebar-border);\n overflow: hidden;\n}\n\n\n.scrollContainer {\n flex: 1;\n overflow-y: auto;\n padding: var(--osdk-pdf-viewer-sidebar-thumbnail-gap) 0;\n}\n\n.outlineItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-pdf-viewer-outline-item-gap, 6px);\n padding: var(--osdk-pdf-viewer-outline-item-padding-y, 4px)\n var(--osdk-pdf-viewer-outline-item-padding-x, 12px);\n cursor: pointer;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default);\n text-decoration: none;\n border: none;\n background: none;\n text-align: left;\n width: 100%;\n line-height: 1.4;\n border-radius: var(--osdk-pdf-viewer-outline-item-radius, 4px);\n transition: background-color 0.15s ease;\n}\n\n.outlineItem:hover {\n background-color: var(--osdk-pdf-viewer-outline-item-hover-bg, rgba(0, 0, 0, 0.06));\n}\n\n.outlineItem:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.outlineItemActive {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n color: var(--osdk-pdf-viewer-outline-item-active-color, var(--osdk-intent-primary));\n font-weight: var(--osdk-typography-weight-semibold);\n}\n\n.outlineItemBold {\n font-weight: var(--osdk-typography-weight-bold);\n}\n\n.outlineItemItalic {\n font-style: italic;\n}\n\n.outlineItemIcon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n\n.outlineItemTitle {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.emptyState {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-pdf-viewer-outline-empty-gap, 12px);\n padding: var(--osdk-pdf-viewer-outline-empty-padding, 24px);\n flex: 1;\n text-align: center;\n}\n\n.emptyStateText {\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.sidebarHeader {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: var(--osdk-surface-spacing);\n border-bottom: var(--osdk-pdf-viewer-sidebar-border);\n flex-shrink: 0;\n}\n\n.toggleGroup {\n display: flex;\n align-items: center;\n gap: var(--osdk-spacing-2xs, 2px);\n padding: var(--osdk-spacing-2xs, 2px);\n border: none;\n border-radius: var(--osdk-surface-border-radius);\n background-color: var(--osdk-surface-background-color, transparent);\n}\n\n.modeButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-muted);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.modeButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.modeButton:active {\n background-color: var(--osdk-surface-background-color-default-active);\n}\n\n.modeButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.modeButton[data-pressed] {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n color: var(--osdk-pdf-viewer-outline-item-active-color, var(--osdk-intent-primary));\n}\n\n.modeButton[data-pressed]:hover {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Toggle } from \"@base-ui/react/toggle\";\nimport { ToggleGroup } from \"@base-ui/react/toggle-group\";\nimport { GridView, Properties } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSidebarHeader.module.css\";\nconst SIDEBAR_MODE_VALUE = Object.freeze([\"thumbnails\"]);\nconst OUTLINE_MODE_VALUE = Object.freeze([\"outline\"]);\nexport function PdfViewerSidebarHeader({\n sidebarMode,\n onSidebarModeChange\n}) {\n const value = sidebarMode === \"thumbnails\" ? SIDEBAR_MODE_VALUE : OUTLINE_MODE_VALUE;\n const handleValueChange = useCallback(newValue => {\n if (newValue.length > 0) {\n onSidebarModeChange(newValue[0]);\n }\n }, [onSidebarModeChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebarHeader\n }, /*#__PURE__*/React.createElement(ToggleGroup, {\n value: value,\n onValueChange: handleValueChange,\n className: styles.toggleGroup\n }, /*#__PURE__*/React.createElement(Toggle, {\n value: \"thumbnails\",\n className: styles.modeButton,\n \"aria-label\": \"Page thumbnails\"\n }, /*#__PURE__*/React.createElement(GridView, {\n size: 16\n })), /*#__PURE__*/React.createElement(Toggle, {\n value: \"outline\",\n className: styles.modeButton,\n \"aria-label\": \"Document outline\"\n }, /*#__PURE__*/React.createElement(Properties, {\n size: 16\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerOutlineSidebar.module.css\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\nconst INDENT_PER_DEPTH = 16;\nexport function PdfViewerOutlineSidebar({\n outlineItems,\n currentPage,\n onItemClick,\n sidebarMode,\n onSidebarModeChange,\n outlineIcons\n}) {\n const activeIndex = useMemo(() => {\n return computeActiveIndex(outlineItems, currentPage);\n }, [outlineItems, currentPage]);\n if (outlineItems.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyStateText\n }, \"No outline available\")));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainer\n }, outlineItems.map((item, index) => /*#__PURE__*/React.createElement(PdfViewerOutlineItem, {\n key: index,\n item: item,\n isActive: index === activeIndex,\n onClick: onItemClick,\n iconComponent: outlineIcons?.[item.depth]\n }))));\n}\nfunction PdfViewerOutlineItem({\n item,\n isActive,\n onClick,\n iconComponent: IconComponent\n}) {\n const handleClick = useCallback(() => {\n onClick(item.pageNumber);\n }, [onClick, item.pageNumber]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick(item.pageNumber);\n }\n }, [onClick, item.pageNumber]);\n const itemClassName = classnames(styles.outlineItem, isActive && styles.outlineItemActive, item.bold && styles.outlineItemBold, item.italic && styles.outlineItemItalic);\n const paddingLeft = INDENT_PER_DEPTH * item.depth + 12;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: itemClassName,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": item.title,\n \"aria-current\": isActive ? \"location\" : undefined,\n style: {\n paddingLeft\n }\n }, IconComponent != null && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.outlineItemIcon\n }, /*#__PURE__*/React.createElement(IconComponent, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.outlineItemTitle\n }, item.title));\n}\nfunction computeActiveIndex(items, currentPage) {\n const idx = items.findIndex(item => item.pageNumber > currentPage);\n return idx === -1 ? items.length - 1 : idx - 1;\n}",".searchBar {\n position: absolute;\n top: 0;\n right: 0;\n z-index: var(--osdk-surface-z-index-3);\n display: flex;\n align-items: center;\n gap: var(--osdk-pdf-viewer-toolbar-gap);\n padding: var(--osdk-surface-spacing);\n background-color: var(--osdk-pdf-viewer-search-bar-bg);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-surface-shadow-2);\n margin: var(--osdk-surface-spacing);\n}\n\n.searchInput {\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 2);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default-rest);\n background-color: var(--osdk-background-primary);\n outline: none;\n min-width: 200px;\n}\n\n.searchInput:focus {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.matchCount {\n font-size: var(--osdk-typography-size-body-x-small);\n color: var(--osdk-typography-color-muted);\n white-space: nowrap;\n}\n\n.navButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-default-rest);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.navButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.navButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.closeButton {\n composes: navButton;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChevronDown, ChevronUp, Cross } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSearchBar.module.css\";\nexport function PdfViewerSearchBar({\n query,\n totalMatches,\n currentMatchIndex,\n onQueryChange,\n onNext,\n onPrev,\n onClose\n}) {\n const handleInputChange = useCallback(e => {\n onQueryChange(e.target.value);\n }, [onQueryChange]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (e.shiftKey) {\n onPrev();\n } else {\n onNext();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n onClose();\n }\n }, [onNext, onPrev, onClose]);\n const matchDisplay = totalMatches > 0 ? `${currentMatchIndex + 1} of ${totalMatches}` : query.length > 0 ? \"No results\" : \"\";\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.searchBar\n }, /*#__PURE__*/React.createElement(\"input\", {\n autoFocus: true,\n className: styles.searchInput,\n type: \"text\",\n value: query,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n placeholder: \"Find in document...\",\n \"aria-label\": \"Search in PDF\"\n }), matchDisplay.length > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.matchCount\n }, matchDisplay), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.navButton,\n onClick: onPrev,\n disabled: totalMatches === 0,\n \"aria-label\": \"Previous match\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.navButton,\n onClick: onNext,\n disabled: totalMatches === 0,\n \"aria-label\": \"Next match\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.closeButton,\n onClick: onClose,\n \"aria-label\": \"Close search\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Cross, {\n size: 16\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default empty values (stable references to avoid re-renders)\nexport const EMPTY_ANNOTATION_ARRAY = [];\nexport const EMPTY_STRING = \"\";\n\n// Scale and dimension configuration\nexport const SCALE_STEP = 0.25;\nexport const MIN_SCALE = 0.25;\nexport const MAX_SCALE = 5.0;\nexport const DEFAULT_PAGE_HEIGHT = 792;\nexport const THUMBNAIL_GAP = 12;\nexport const THUMBNAIL_SCALE = 0.2;\nexport const DEVICE_PIXEL_RATIO = typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1;\n\n// Outline heading extraction\n/** Text must be at least 15% larger than the most common font size to be considered a heading. */\nexport const OUTLINE_HEADING_SIZE_RATIO = 1.15;\n/** Headings longer than this are likely paragraphs and are filtered out. */\nexport const OUTLINE_MAX_HEADING_LENGTH = 200;\n\n// pdfjs EventBus event names\nexport const FIND_EVENT = \"find\";\nexport const UPDATE_FIND_CONTROL_STATE_EVENT = \"updatefindcontrolstate\";\nexport const UPDATE_FIND_MATCHES_COUNT_EVENT = \"updatefindmatchescount\";\nexport const PAGE_CHANGING_EVENT = \"pagechanging\";\nexport const SCALE_CHANGING_EVENT = \"scalechanging\";\nexport const PAGE_RENDERED_EVENT = \"pagerendered\";\nexport const PAGES_LOADED_EVENT = \"pagesloaded\";\n// cspell:disable-next-line -- pdfjs EventBus event name\nexport const ANNOTATION_LAYER_RENDERED_EVENT = \"annotationlayerrendered\";",".sidebar {\n width: var(--osdk-pdf-viewer-sidebar-width);\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--osdk-pdf-viewer-sidebar-bg);\n border-right: var(--osdk-pdf-viewer-sidebar-border);\n overflow: hidden;\n}\n\n\n.scrollContainer {\n flex: 1;\n overflow-y: auto;\n}\n\n.thumbnailsContainer {\n position: relative;\n}\n\n.thumbnailWrapper {\n position: absolute;\n left: 0;\n width: 100%;\n display: flex;\n justify-content: center;\n padding: var(--osdk-pdf-viewer-sidebar-thumbnail-gap)\n var(--osdk-pdf-viewer-sidebar-thumbnail-gap) 0;\n}\n\n.pageNumber {\n text-align: center;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n margin-top: 4px;\n}\n",".thumbnailContainer {\n position: relative;\n cursor: pointer;\n border: 2px solid transparent;\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-pdf-viewer-page-shadow);\n overflow: hidden;\n transition: border-color var(--osdk-emphasis-transition-duration)\n var(--osdk-emphasis-ease-default);\n}\n\n.thumbnailContainer:hover {\n border-color: var(--osdk-pdf-viewer-sidebar-border);\n}\n\n.active {\n border-color: var(--osdk-pdf-viewer-sidebar-active-border);\n}\n\n.active:hover {\n border-color: var(--osdk-pdf-viewer-sidebar-active-border);\n}\n\n.canvas {\n display: block;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { DEVICE_PIXEL_RATIO, THUMBNAIL_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerThumbnail.module.css\";\nexport function PdfViewerThumbnail({\n document,\n pageNumber,\n isActive,\n onClick\n}) {\n const canvasRef = useRef(null);\n const renderTaskRef = useRef(null);\n const [dimensions, setDimensions] = useState(undefined);\n useEffect(() => {\n let cancelled = false;\n void document.getPage(pageNumber).then(page => {\n if (cancelled || canvasRef.current == null) {\n return;\n }\n const viewport = page.getViewport({\n scale: THUMBNAIL_SCALE\n });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return;\n }\n canvas.width = Math.floor(viewport.width * DEVICE_PIXEL_RATIO);\n canvas.height = Math.floor(viewport.height * DEVICE_PIXEL_RATIO);\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n setDimensions({\n width: Math.floor(viewport.width),\n height: Math.floor(viewport.height)\n });\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n }\n context.setTransform(DEVICE_PIXEL_RATIO, 0, 0, DEVICE_PIXEL_RATIO, 0, 0);\n const renderTask = page.render({\n canvasContext: context,\n viewport\n });\n renderTaskRef.current = renderTask;\n void renderTask.promise.catch(err => {\n if (err instanceof Error && err.message.includes(\"cancelled\")) {\n return;\n }\n throw err;\n });\n });\n return () => {\n cancelled = true;\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n renderTaskRef.current = null;\n }\n };\n }, [document, pageNumber]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n }, [onClick]);\n const containerClassName = classnames(styles.thumbnailContainer, isActive && styles.active);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: containerClassName,\n onClick: onClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": `Page ${pageNumber}`,\n \"aria-current\": isActive ? \"page\" : undefined,\n style: dimensions != null ? {\n width: dimensions.width,\n height: dimensions.height\n } : undefined\n }, /*#__PURE__*/React.createElement(\"canvas\", {\n ref: canvasRef,\n className: styles.canvas\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useEffect, useRef } from \"react\";\nimport { DEFAULT_PAGE_HEIGHT, THUMBNAIL_GAP, THUMBNAIL_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerSidebar.module.css\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\nimport { PdfViewerThumbnail } from \"./PdfViewerThumbnail.js\";\nexport function PdfViewerSidebar({\n document,\n numPages,\n currentPage,\n onPageClick,\n sidebarMode,\n onSidebarModeChange\n}) {\n const scrollContainerRef = useRef(null);\n const estimatedItemHeight = Math.floor(DEFAULT_PAGE_HEIGHT * THUMBNAIL_SCALE) + THUMBNAIL_GAP + 20;\n const virtualizer = useVirtualizer({\n count: numPages,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => estimatedItemHeight,\n overscan: 2\n });\n\n // Auto-scroll to keep the active thumbnail visible\n useEffect(function syncActiveThumbnail() {\n virtualizer.scrollToIndex(currentPage - 1, {\n align: \"auto\"\n });\n }, [currentPage, virtualizer]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollContainerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.thumbnailsContainer,\n style: {\n height: virtualizer.getTotalSize()\n }\n }, virtualizer.getVirtualItems().map(virtualItem => {\n const pageNumber = virtualItem.index + 1;\n return /*#__PURE__*/React.createElement(\"div\", {\n key: virtualItem.key,\n className: styles.thumbnailWrapper,\n style: {\n top: virtualItem.start,\n height: virtualItem.size\n }\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(PdfViewerThumbnail, {\n document: document,\n pageNumber: pageNumber,\n isActive: pageNumber === currentPage,\n onClick: () => onPageClick(pageNumber)\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.pageNumber\n }, pageNumber)));\n }))));\n}",".toolbar {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-pdf-viewer-toolbar-gap);\n padding: var(--osdk-surface-spacing);\n background-color: var(--osdk-pdf-viewer-toolbar-bg);\n border-bottom: var(--osdk-pdf-viewer-toolbar-border);\n color: var(--osdk-pdf-viewer-toolbar-color);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n flex-shrink: 0;\n}\n\n.toolbarGroup {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.separator {\n width: 1px;\n height: 20px;\n background-color: var(--osdk-surface-border-color-default);\n margin: 0 var(--osdk-surface-spacing);\n}\n\n.toolbarButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-muted);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.toolbarButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.toolbarButton:active {\n background-color: var(--osdk-surface-background-color-default-active);\n}\n\n.toolbarButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.toolbarButton:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.toolbarButtonActive {\n background-color: var(--osdk-surface-background-color-default-active);\n color: var(--osdk-typography-color-default-rest);\n}\n\n.pageInput {\n width: 48px;\n text-align: center;\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n padding: calc(0.5 * var(--osdk-surface-spacing)) var(--osdk-surface-spacing);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default-rest);\n background-color: var(--osdk-background-primary);\n}\n\n.pageInput:focus {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.pageCount {\n color: var(--osdk-typography-color-muted);\n}\n\n.scaleDisplay {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n min-width: 40px;\n text-align: center;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport { ChevronLeft, ChevronRight, Download, FloppyDisk, Highlight, Menu, Minus, Plus, RotatePage, Search } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"../constants.js\";\nimport styles from \"./PdfViewerToolbar.module.css\";\nexport function PdfViewerToolbar({\n currentPage,\n numPages,\n scale,\n sidebarOpen,\n onPageChange,\n onScaleChange,\n onSearchOpen,\n onSidebarToggle,\n onDownload,\n enableDownload,\n onRotateLeft,\n onRotateRight,\n enableHighlight,\n highlightModeActive,\n onHighlightToggle,\n enableFormSave = false,\n onFormSave\n}) {\n const [pageInputValue, setPageInputValue] = useState(String(currentPage));\n\n // Sync input display when currentPage changes from scrolling\n useEffect(function syncPageInput() {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n const handlePrevPage = useCallback(() => {\n if (currentPage > 1) {\n const newPage = currentPage - 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, onPageChange]);\n const handleNextPage = useCallback(() => {\n if (currentPage < numPages) {\n const newPage = currentPage + 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, numPages, onPageChange]);\n const handlePageInputChange = useCallback(e => {\n setPageInputValue(e.target.value);\n }, []);\n const handlePageInputKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n const page = parseInt(pageInputValue, 10);\n if (!isNaN(page) && page >= 1 && page <= numPages) {\n onPageChange(page);\n } else {\n setPageInputValue(String(currentPage));\n }\n }\n }, [pageInputValue, numPages, onPageChange, currentPage]);\n const handlePageInputBlur = useCallback(() => {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n const handleZoomIn = useCallback(() => {\n const newScale = Math.min(scale + SCALE_STEP, MAX_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n const handleZoomOut = useCallback(() => {\n const newScale = Math.max(scale - SCALE_STEP, MIN_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n const scalePercent = `${Math.round(scale * 100)}%`;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbar\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onSidebarToggle,\n \"aria-label\": sidebarOpen ? \"Close sidebar\" : \"Open sidebar\",\n title: sidebarOpen ? \"Close sidebar\" : \"Open sidebar\",\n \"aria-pressed\": sidebarOpen,\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Menu, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handlePrevPage,\n disabled: currentPage <= 1,\n \"aria-label\": \"Previous page\",\n title: \"Previous page\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronLeft, {\n size: 16\n })), /*#__PURE__*/React.createElement(Input, {\n className: styles.pageInput,\n type: \"text\",\n value: pageInputValue,\n onChange: handlePageInputChange,\n onKeyDown: handlePageInputKeyDown,\n onBlur: handlePageInputBlur,\n \"aria-label\": \"Page number\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.pageCount\n }, \"of \", numPages), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleNextPage,\n disabled: currentPage >= numPages,\n \"aria-label\": \"Next page\",\n title: \"Next page\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronRight, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleZoomOut,\n disabled: scale <= MIN_SCALE,\n \"aria-label\": \"Zoom out\",\n title: \"Zoom out\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Minus, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.scaleDisplay\n }, scalePercent), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleZoomIn,\n disabled: scale >= MAX_SCALE,\n \"aria-label\": \"Zoom in\",\n title: \"Zoom in\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Plus, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onRotateLeft,\n \"aria-label\": \"Rotate left\",\n title: \"Rotate left\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(RotatePage, {\n size: 16\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onRotateRight,\n \"aria-label\": \"Rotate right\",\n title: \"Rotate right\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(RotatePage, {\n size: 16,\n style: {\n transform: \"scaleX(-1)\"\n }\n }))), enableHighlight && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: classnames(styles.toolbarButton, highlightModeActive && styles.toolbarButtonActive),\n onClick: onHighlightToggle,\n \"aria-label\": highlightModeActive ? \"Disable highlight mode\" : \"Enable highlight mode\",\n title: highlightModeActive ? \"Disable highlight mode\" : \"Enable highlight mode\",\n \"aria-pressed\": highlightModeActive,\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Highlight, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onSearchOpen,\n \"aria-label\": \"Search\",\n title: \"Search\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Search, {\n size: 16\n })), enableDownload && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onDownload,\n \"aria-label\": \"Download\",\n title: \"Download\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Download, {\n size: 16\n }))), enableFormSave && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onFormSave,\n \"aria-label\": \"Save form\",\n title: \"Save form\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(FloppyDisk, {\n size: 16\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useMemo } from \"react\";\n/**\n * Groups a flat array of annotations by page number for efficient per-page lookup.\n */\nexport function usePdfAnnotationsByPage(annotations) {\n return useMemo(() => {\n const result = {};\n for (const ann of annotations) {\n (result[ann.page] ??= []).push(ann);\n }\n return result;\n }, [annotations]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { ANNOTATION_LAYER_RENDERED_EVENT } from \"../constants.js\";\n/** Get the viewer's container element (typed loosely by pdf.js). */\nfunction getViewerContainer(viewer) {\n return viewer.container;\n}\n\n/** Internal metadata for a single form field annotation. */\n\n/**\n * Normalizes a pdf.js field object type string to a simplified form type.\n * @internal Exported for testing.\n */\nexport function normalizeFieldType(type) {\n switch (type) {\n case \"checkbox\":\n case \"radiobutton\":\n case \"combobox\":\n case \"listbox\":\n return type;\n default:\n return \"text\";\n }\n}\n\n/**\n * Converts a pdf.js annotationStorage value to a consumer-friendly PdfFormFieldValue.\n * @internal Exported for testing.\n */\nexport function toFormFieldValue(storageValue, fieldType) {\n if (fieldType === \"checkbox\") {\n if (typeof storageValue === \"boolean\") {\n return storageValue;\n }\n // pdf.js stores checkbox as the export value when checked, \"Off\" when unchecked\n return storageValue !== \"Off\" && storageValue !== false;\n }\n if (fieldType === \"radiobutton\") {\n return typeof storageValue === \"string\" ? storageValue : \"\";\n }\n if (typeof storageValue === \"string\") {\n return storageValue;\n }\n if (Array.isArray(storageValue)) {\n return storageValue.map(String);\n }\n return \"\";\n}\n\n/**\n * Converts a consumer PdfFormFieldValue to a pdf.js annotationStorage value.\n * @internal Exported for testing.\n */\nexport function toStorageValue(formValue, fieldType) {\n if (fieldType === \"checkbox\") {\n if (typeof formValue === \"boolean\") {\n return formValue;\n }\n return formValue !== \"Off\" && formValue !== \"\";\n }\n return formValue;\n}\n\n/**\n * Hook that manages interactive PDF form fields.\n * Builds a field metadata map, pre-populates initial values,\n * listens for field changes, and collects values on submit.\n */\nexport function usePdfFormFields({\n pdfViewerRef,\n eventBusRef,\n document,\n formData,\n onFormSubmit,\n onFormChange\n}) {\n const [hasFormFields, setHasFormFields] = useState(false);\n\n // Stable refs for callbacks\n const onFormSubmitRef = useRef(onFormSubmit);\n const onFormChangeRef = useRef(onFormChange);\n const formDataRef = useRef(formData);\n useEffect(function syncCallbackRefs() {\n onFormSubmitRef.current = onFormSubmit;\n onFormChangeRef.current = onFormChange;\n formDataRef.current = formData;\n }, [onFormSubmit, onFormChange, formData]);\n\n // Map from annotation ID -> field metadata\n const fieldMapRef = useRef(new Map());\n // Reverse map from field name -> annotation IDs\n const nameToIdsRef = useRef(new Map());\n\n // Effect 1: Build field metadata map when document loads\n useEffect(function buildFieldMap() {\n const doc = document;\n if (doc == null) {\n fieldMapRef.current.clear();\n nameToIdsRef.current.clear();\n setHasFormFields(false);\n return;\n }\n let cancelled = false;\n void doc.getFieldObjects().then(fieldObjects => {\n if (cancelled || fieldObjects == null) {\n setHasFormFields(false);\n return;\n }\n const fieldMap = new Map();\n const nameToIds = new Map();\n for (const [fieldName, objects] of Object.entries(fieldObjects)) {\n const ids = [];\n for (const obj of objects) {\n const typedObj = obj;\n if (typedObj.id == null) continue;\n const fieldType = normalizeFieldType(typedObj.type ?? \"text\");\n fieldMap.set(typedObj.id, {\n fieldName,\n fieldType,\n exportValues: typedObj.exportValues,\n page: typedObj.page ?? 0\n });\n ids.push(typedObj.id);\n }\n if (ids.length > 0) {\n nameToIds.set(fieldName, ids);\n }\n }\n fieldMapRef.current = fieldMap;\n nameToIdsRef.current = nameToIds;\n setHasFormFields(fieldMap.size > 0);\n });\n return () => {\n cancelled = true;\n };\n }, [document]);\n\n // Populates form fields from formData into both annotation storage and DOM elements.\n // Scoped to the viewer container to avoid conflicts with multiple viewer instances.\n const populateFields = useCallback(() => {\n const data = formDataRef.current;\n const doc = document;\n const pdfViewer = pdfViewerRef.current;\n if (data == null || doc == null || pdfViewer == null) return;\n if (fieldMapRef.current.size === 0) return;\n const storage = doc.annotationStorage;\n const container = getViewerContainer(pdfViewer);\n for (const [fieldName, value] of Object.entries(data)) {\n const ids = nameToIdsRef.current.get(fieldName);\n if (ids == null) continue;\n for (const id of ids) {\n const entry = fieldMapRef.current.get(id);\n if (entry == null) continue;\n\n // Also update the DOM element directly (scoped to viewer container)\n const el = container?.querySelector(`[data-element-id=\"${CSS.escape(id)}\"]`);\n if (entry.fieldType === \"radiobutton\") {\n // Radio buttons: each ID is a separate option. Check the one\n // whose export value matches, uncheck the others.\n // Use exportValues if defined, otherwise fall back to the DOM\n // element's value attribute (mirrors handleFieldChange logic).\n const optionValue = entry.exportValues ?? (el instanceof HTMLInputElement ? el.value : undefined);\n const isSelected = optionValue === String(value);\n storage.setValue(id, {\n value: isSelected ? entry.exportValues ?? String(value) : \"Off\"\n });\n if (el instanceof HTMLInputElement) {\n el.checked = isSelected;\n }\n } else {\n const storageVal = toStorageValue(value, entry.fieldType);\n storage.setValue(id, {\n value: storageVal\n });\n if (el == null) continue;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n el.checked = typeof storageVal === \"boolean\" ? storageVal : storageVal !== \"Off\";\n } else if (el instanceof HTMLSelectElement) {\n el.value = String(value);\n } else if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n el.value = String(value);\n }\n }\n }\n }\n }, [document, pdfViewerRef]);\n\n // Effect 2: Populate initial form data when annotation layers render\n useEffect(function populateFormData() {\n const eventBus = eventBusRef.current;\n if (eventBus == null || document == null || formDataRef.current == null) {\n return;\n }\n\n // Attempt population immediately in case the field map was built\n // after the annotation layer already rendered (race condition fix).\n populateFields();\n const onAnnotationLayerRendered = () => {\n populateFields();\n };\n eventBus.on(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n return () => {\n eventBus.off(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n };\n }, [eventBusRef, document, hasFormFields, populateFields]);\n\n // Effect 3: Listen for field changes via MutationObserver + event listeners\n useEffect(function listenForFieldChanges() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n\n // Get the viewer's container element\n const container = getViewerContainer(pdfViewer);\n if (container == null) return;\n const listeners = new Map();\n function handleFieldChange(el) {\n const id = el.getAttribute(\"data-element-id\");\n if (id == null) return;\n const entry = fieldMapRef.current.get(id);\n if (entry == null) return;\n let value;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n value = el.checked;\n } else if (entry.fieldType === \"radiobutton\" && el instanceof HTMLInputElement) {\n // For radio buttons, the value is the button's export value when selected\n value = el.checked ? entry.exportValues ?? el.value : \"\";\n } else {\n value = el.value;\n }\n onFormChangeRef.current?.(entry.fieldName, value);\n }\n function attachListeners(root) {\n const elements = root.querySelectorAll?.(\".annotationLayer input, .annotationLayer select, .annotationLayer textarea\");\n if (elements == null) return;\n for (const el of elements) {\n if (listeners.has(el)) continue;\n const handler = () => {\n handleFieldChange(el);\n };\n el.addEventListener(\"input\", handler);\n el.addEventListener(\"change\", handler);\n listeners.set(el, handler);\n }\n }\n\n // Attach to any elements already in the DOM\n attachListeners(container);\n\n // Watch for new form elements being added (pages render lazily)\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element) {\n attachListeners(node);\n }\n }\n }\n });\n observer.observe(container, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n for (const [el, handler] of listeners) {\n el.removeEventListener(\"input\", handler);\n el.removeEventListener(\"change\", handler);\n }\n listeners.clear();\n };\n }, [pdfViewerRef, document]);\n\n // Callback: collect all form data and invoke onFormSubmit\n const submitFormData = useCallback(() => {\n const doc = document;\n if (doc == null) return;\n const storage = doc.annotationStorage;\n const allValues = storage.getAll();\n const result = {};\n\n // Track which radio group has been resolved\n const resolvedRadios = new Set();\n for (const [id, entry] of fieldMapRef.current) {\n const {\n fieldName,\n fieldType\n } = entry;\n\n // For radio buttons, only process each group once\n if (fieldType === \"radiobutton\") {\n if (resolvedRadios.has(fieldName)) continue;\n resolvedRadios.add(fieldName);\n\n // Find the selected radio in the group\n const groupIds = nameToIdsRef.current.get(fieldName) ?? [];\n let selectedValue = \"\";\n for (const radioId of groupIds) {\n const stored = allValues?.[radioId];\n const val = stored != null && typeof stored === \"object\" && \"value\" in stored ? stored.value : stored;\n if (val === true || typeof val === \"string\" && val !== \"Off\") {\n const radioEntry = fieldMapRef.current.get(radioId);\n selectedValue = radioEntry?.exportValues ?? String(val);\n break;\n }\n }\n result[fieldName] = selectedValue;\n continue;\n }\n const stored = allValues?.[id];\n const rawValue = stored != null && typeof stored === \"object\" && \"value\" in stored ? stored.value : stored;\n\n // Skip if we already have a value for this field name (e.g. duplicate IDs)\n if (fieldName in result) continue;\n result[fieldName] = toFormFieldValue(rawValue, fieldType);\n }\n onFormSubmitRef.current?.(result);\n }, [document]);\n return {\n hasFormFields,\n submitFormData\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n/**\n * Converts an RGB array (0.0–1.0 per channel) to a CSS hex color string.\n */\nexport function rgbArrayToHex(color) {\n const r = Math.round(color[0] * 255);\n const g = Math.round(color[1] * 255);\n const b = Math.round(color[2] * 255);\n return `#${r.toString(16).padStart(2, \"0\")}${g.toString(16).padStart(2, \"0\")}${b.toString(16).padStart(2, \"0\")}`;\n}\n\n/**\n * Converts quadPoints (PDF spec format) back to PdfRect[].\n * QuadPoints are 8 values per quad: [x1,y1, x2,y2, x3,y3, x4,y4]\n * representing the four corners of each highlight rect.\n *\n * PDF.js highlight editor produces axis-aligned quads with ordering:\n * (x1,y1)=top-left, (x2,y2)=top-right, (x3,y3)=bottom-left, (x4,y4)=bottom-right\n * We derive the bounding rect from x1, y1 (top), x2 (right edge), y3 (bottom).\n */\nexport function quadPointsToRects(quadPoints) {\n const rects = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n const x1 = quadPoints[i];\n const y1 = quadPoints[i + 1];\n const x2 = quadPoints[i + 2];\n const y3 = quadPoints[i + 5];\n const x = Math.min(x1, x2);\n const y = Math.min(y1, y3);\n const width = Math.abs(x2 - x1);\n const height = Math.abs(y1 - y3);\n rects.push({\n x,\n y,\n width,\n height\n });\n }\n return rects;\n}\n\n/**\n * Hook that manages the PDF.js built-in highlight annotation editor mode.\n * When active, users can select text to create highlights.\n * A callback fires with the annotation details for persistence.\n */\nexport function usePdfHighlightMode({\n pdfViewerRef,\n document,\n enabled,\n onTextHighlight,\n onHighlightDelete\n}) {\n const [highlightModeActive, setHighlightModeActive] = useState(false);\n const onTextHighlightRef = useRef(onTextHighlight);\n const onHighlightDeleteRef = useRef(onHighlightDelete);\n const knownEditorIdsRef = useRef(new Set());\n const editorEventsRef = useRef(new Map());\n\n // Keep callback refs in sync\n useEffect(function syncCallbackRef() {\n onTextHighlightRef.current = onTextHighlight;\n onHighlightDeleteRef.current = onHighlightDelete;\n }, [onTextHighlight, onHighlightDelete]);\n\n // Toggle the PDF.js annotation editor mode\n useEffect(function syncHighlightMode() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n try {\n if (highlightModeActive && enabled) {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.HIGHLIGHT\n };\n } else {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.NONE\n };\n }\n } catch {\n // AnnotationEditorUIManager may not be initialized yet\n }\n }, [pdfViewerRef, document, highlightModeActive, enabled]);\n\n // Deactivate highlight mode when the feature is disabled\n useEffect(function deactivateOnDisable() {\n if (!enabled) {\n setHighlightModeActive(false);\n }\n }, [enabled]);\n\n // Clear tracked editors when the document changes (but not on highlight toggle)\n const prevDocumentRef = useRef(undefined);\n useEffect(function clearOnDocumentChange() {\n if (document !== prevDocumentRef.current) {\n knownEditorIdsRef.current.clear();\n editorEventsRef.current.clear();\n prevDocumentRef.current = document;\n }\n }, [document]);\n\n // Listen for new highlights being added to annotation storage\n useEffect(function listenForHighlights() {\n if (document == null || !highlightModeActive || !enabled) {\n return;\n }\n const storage = document.annotationStorage;\n const previousOnAnnotationEditor = storage.onAnnotationEditor;\n\n // Monkey-patch storage.remove to detect highlight deletions.\n // This is fragile but necessary because PDF.js does not emit events\n // when editors are removed. Restore the original on cleanup.\n const originalRemove = storage.remove.bind(storage);\n storage.remove = key => {\n const savedEvent = editorEventsRef.current.get(key);\n if (savedEvent != null) {\n editorEventsRef.current.delete(key);\n knownEditorIdsRef.current.delete(key);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n originalRemove(key);\n };\n storage.onAnnotationEditor = type => {\n // onAnnotationEditor fires with the editor's static _type (string \"highlight\")\n if (type !== \"highlight\") {\n return;\n }\n\n // Find new editors in storage\n const allEntries = storage.getAll();\n if (allEntries == null) {\n return;\n }\n for (const [id, entry] of Object.entries(allEntries)) {\n if (knownEditorIdsRef.current.has(id)) {\n continue;\n }\n\n // Check if this is a highlight editor with serializable data\n if (typeof entry === \"object\" && entry != null && \"serialize\" in entry && typeof entry.serialize === \"function\") {\n knownEditorIdsRef.current.add(id);\n const serialized = entry.serialize(false);\n if (serialized == null || serialized.annotationType !== AnnotationEditorType.HIGHLIGHT) {\n continue;\n }\n const rects = serialized.quadPoints != null ? quadPointsToRects(serialized.quadPoints) : [];\n if (rects.length === 0) {\n continue;\n }\n const color = Array.isArray(serialized.color) ? rgbArrayToHex(serialized.color) : \"#fff066\";\n\n // Extract text from the editor's aria-label (stores selected text)\n const selectedText = typeof entry.div?.getAttribute === \"function\" ? entry.div.getAttribute(\"aria-label\") ?? \"\" : \"\";\n const event = {\n editorId: id,\n page: serialized.pageIndex + 1,\n rects,\n selectedText,\n color\n };\n\n // Store the event so we can provide it back on delete\n editorEventsRef.current.set(id, event);\n onTextHighlightRef.current?.(event);\n }\n }\n };\n return () => {\n storage.onAnnotationEditor = previousOnAnnotationEditor;\n storage.remove = originalRemove;\n };\n }, [document, highlightModeActive, enabled]);\n const toggleHighlightMode = useCallback(() => {\n setHighlightModeActive(prev => !prev);\n }, []);\n const deleteHighlight = useCallback(editorId => {\n if (document == null) return;\n const storage = document.annotationStorage;\n\n // Fire the delete callback directly. The monkey-patch on storage.remove\n // only exists while highlight mode is active, so we handle it here to\n // ensure the callback fires regardless of highlight mode state.\n // Clean up refs first so the monkey-patch (if active) won't double-fire.\n const savedEvent = editorEventsRef.current.get(editorId);\n if (savedEvent != null) {\n editorEventsRef.current.delete(editorId);\n knownEditorIdsRef.current.delete(editorId);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n\n // Remove the editor's DOM element if it exists\n const allEntries = storage.getAll();\n const entry = allEntries?.[editorId];\n if (hasDiv(entry) && entry.div instanceof HTMLElement) {\n entry.div.remove();\n }\n storage.remove(editorId);\n }, [document]);\n return {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight\n };\n}\nfunction hasDiv(obj) {\n return obj != null && typeof obj === \"object\" && \"div\" in obj;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from \"react\";\nimport { OUTLINE_HEADING_SIZE_RATIO, OUTLINE_MAX_HEADING_LENGTH } from \"../constants.js\";\nconst EMPTY_OUTLINE = [];\nexport function usePdfOutline(document) {\n const [outlineItems, setOutlineItems] = useState(EMPTY_OUTLINE);\n useEffect(function loadOutline() {\n if (document == null) {\n setOutlineItems(EMPTY_OUTLINE);\n return;\n }\n let cancelled = false;\n void (async () => {\n try {\n // Try embedded bookmarks first\n const outline = await document.getOutline();\n if (cancelled) return;\n if (outline != null && outline.length > 0) {\n const items = await resolveBookmarkOutline(document, outline);\n if (!cancelled) {\n setOutlineItems(items);\n }\n return;\n }\n\n // Fall back to extracting headings from text content\n const items = await extractHeadingsFromText(document);\n if (!cancelled) {\n setOutlineItems(items.length > 0 ? items : EMPTY_OUTLINE);\n }\n } catch {\n // If extraction fails entirely, leave outline empty\n if (!cancelled) {\n setOutlineItems(EMPTY_OUTLINE);\n }\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [document]);\n return outlineItems;\n}\nasync function resolveBookmarkOutline(document, outline) {\n const items = [];\n const resolveItems = async (nodes, depth) => {\n for (const node of nodes) {\n let pageNumber = 1;\n try {\n if (typeof node.dest === \"string\") {\n const dest = await document.getDestination(node.dest);\n if (dest != null) {\n const pageIndex = await document.getPageIndex(dest[0]);\n pageNumber = pageIndex + 1;\n }\n } else if (Array.isArray(node.dest) && node.dest.length > 0) {\n const pageIndex = await document.getPageIndex(node.dest[0]);\n pageNumber = pageIndex + 1;\n }\n } catch {\n // If destination resolution fails, default to page 1\n }\n items.push({\n title: node.title,\n depth,\n pageNumber,\n bold: node.bold,\n italic: node.italic\n });\n if (node.items.length > 0) {\n await resolveItems(node.items, depth + 1);\n }\n }\n };\n await resolveItems(outline, 0);\n return items;\n}\nfunction isTextItem(item) {\n return \"str\" in item && \"transform\" in item;\n}\nfunction roundFontSize(size) {\n return Math.round(size * 10) / 10;\n}\n\n/**\n * Extract the font size from a pdfjs TextItem.\n * Prefer `height` when available, otherwise derive from the transform matrix.\n * The transform is [scaleX, skewY, skewX, scaleY, translateX, translateY].\n * Font size = sqrt(skewX² + scaleY²), which handles rotated text too.\n */\nfunction getFontSize(item) {\n if (item.height > 0) {\n return item.height;\n }\n const transform = item.transform;\n if (Array.isArray(transform) && transform.length >= 4) {\n return Math.sqrt(transform[2] * transform[2] + transform[3] * transform[3]);\n }\n return 0;\n}\nasync function extractHeadingsFromText(document) {\n const numPages = document.numPages;\n\n // Fetch all pages' text content in parallel\n const pageContents = await Promise.all(Array.from({\n length: numPages\n }, (_, i) => document.getPage(i + 1).then(page => page.getTextContent())));\n\n // Collect font size frequencies across all pages\n const sizeCounts = new Map();\n for (const textContent of pageContents) {\n for (const rawItem of textContent.items) {\n const item = rawItem;\n if (!isTextItem(item) || item.str.trim().length === 0) {\n continue;\n }\n const fontSize = getFontSize(item);\n if (fontSize > 0) {\n const rounded = roundFontSize(fontSize);\n sizeCounts.set(rounded, (sizeCounts.get(rounded) ?? 0) + 1);\n }\n }\n }\n\n // Find the most common font size (body text)\n let bodySize = 0;\n let maxCount = 0;\n for (const [size, count] of sizeCounts) {\n if (count > maxCount) {\n maxCount = count;\n bodySize = size;\n }\n }\n if (bodySize === 0) {\n return [];\n }\n\n // Heading threshold: text significantly larger than body text\n const headingThreshold = bodySize * OUTLINE_HEADING_SIZE_RATIO;\n\n // Collect all unique heading sizes above threshold\n const headingSizes = new Set();\n for (const [size] of sizeCounts) {\n if (size >= headingThreshold) {\n headingSizes.add(size);\n }\n }\n if (headingSizes.size === 0) {\n return [];\n }\n\n // Sort heading sizes descending (largest = depth 0)\n const sortedSizes = [...headingSizes].sort((a, b) => b - a);\n const sizeToDepth = new Map();\n for (let i = 0; i < sortedSizes.length; i++) {\n sizeToDepth.set(sortedSizes[i], i);\n }\n\n // Extract headings with page numbers.\n // pdfjs splits visual lines into multiple TextItems (e.g. \"1.\" and\n // \"Introduction\" are separate items). We accumulate all items on the\n // same visual line and treat the line as a heading if most of its\n // content is at a heading font size.\n const candidateHeadings = [];\n for (let pageIdx = 0; pageIdx < pageContents.length; pageIdx++) {\n const textContent = pageContents[pageIdx];\n const pageNumber = pageIdx + 1;\n let lineItems = [];\n let linePageNumber = pageNumber;\n let lineFontName = \"\";\n let lineHeadingFontSize = 0;\n let lastFlushWasHeading = false;\n const flushLine = () => {\n if (lineItems.length === 0) return;\n\n // Check if the majority of the line's non-whitespace content is heading-sized\n let headingChars = 0;\n let totalChars = 0;\n for (const li of lineItems) {\n const len = li.text.trim().length;\n totalChars += len;\n if (sizeToDepth.has(roundFontSize(li.fontSize))) {\n headingChars += len;\n }\n }\n if (totalChars > 0 && headingChars / totalChars > 0.5) {\n const fullText = lineItems.map(li => li.text).join(\"\").trim();\n if (fullText.length > 0) {\n candidateHeadings.push({\n text: fullText,\n fontSize: lineHeadingFontSize,\n pageNumber: linePageNumber,\n fontName: lineFontName,\n contiguous: lastFlushWasHeading\n });\n }\n lastFlushWasHeading = true;\n } else {\n lastFlushWasHeading = false;\n }\n lineItems = [];\n lineHeadingFontSize = 0;\n };\n for (const rawItem of textContent.items) {\n const item = rawItem;\n if (!isTextItem(item)) {\n continue;\n }\n const fontSize = getFontSize(item);\n const rounded = roundFontSize(fontSize);\n const isHeadingSized = sizeToDepth.has(rounded);\n if (isHeadingSized && lineHeadingFontSize === 0) {\n lineHeadingFontSize = rounded;\n linePageNumber = pageNumber;\n lineFontName = item.fontName;\n }\n if (lineHeadingFontSize > 0) {\n lineItems.push({\n text: item.str,\n fontSize\n });\n }\n if (item.hasEOL) {\n flushLine();\n }\n }\n\n // Flush remaining items at end of page\n flushLine();\n }\n\n // Merge consecutive heading lines that were contiguous (no body text between them)\n // and at the same font size. This joins multi-line titles that wrap in the PDF.\n const mergedHeadings = [];\n for (const heading of candidateHeadings) {\n const prev = mergedHeadings[mergedHeadings.length - 1];\n if (prev != null && heading.contiguous && Math.abs(prev.fontSize - heading.fontSize) < 0.1) {\n prev.text += \" \" + heading.text;\n } else {\n mergedHeadings.push({\n ...heading\n });\n }\n }\n return mergedHeadings.filter(heading => heading.text.trim().length <= OUTLINE_MAX_HEADING_LENGTH).map(heading => ({\n title: heading.text.trim(),\n depth: sizeToDepth.get(heading.fontSize) ?? 0,\n pageNumber: heading.pageNumber,\n bold: false,\n italic: false\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from \"react\";\nimport { PAGE_RENDERED_EVENT } from \"../constants.js\";\nexport function usePdfAnnotationPortals(pdfViewerRef, eventBusRef, document) {\n const [portalTargets, setPortalTargets] = useState([]);\n useEffect(function subscribePageRendered() {\n const eventBus = eventBusRef.current;\n const pdfViewer = pdfViewerRef.current;\n if (eventBus == null || pdfViewer == null) {\n return;\n }\n const handlePageRendered = evt => {\n const pageIndex = evt.pageNumber - 1;\n const pageView = pdfViewer.getPageView(pageIndex);\n if (pageView?.div == null || pageView?.viewport == null) {\n return;\n }\n const viewport = pageView.viewport;\n setPortalTargets(prev => {\n // Replace existing entry for this page or add new one\n const filtered = prev.filter(t => t.pageNumber !== evt.pageNumber);\n return [...filtered, {\n pageNumber: evt.pageNumber,\n container: pageView.div,\n pageHeight: viewport.viewBox[3],\n // viewBox is [xMin, yMin, width, height] and we need the original height before scaling\n scale: viewport.scale\n }].sort((a, b) => a.pageNumber - b.pageNumber);\n });\n };\n eventBus.on(PAGE_RENDERED_EVENT, handlePageRendered);\n return () => {\n eventBus.off(PAGE_RENDERED_EVENT, handlePageRendered);\n setPortalTargets([]);\n };\n }, [eventBusRef, pdfViewerRef, document]);\n return portalTargets;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getDocument, GlobalWorkerOptions } from \"pdfjs-dist\";\nconst pdfWorkerUrl = new URL(\"pdfjs-dist/build/pdf.worker.min.mjs\", import.meta.url);\nimport { useEffect, useState } from \"react\";\nconst pdfWorker = {\n workerInitialized: false,\n ensureWorker() {\n GlobalWorkerOptions.workerSrc = pdfWorkerUrl.href;\n this.workerInitialized = true;\n }\n};\nexport function usePdfDocument(src) {\n const [document, setDocument] = useState(undefined);\n const [numPages, setNumPages] = useState(0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(undefined);\n useEffect(function loadPdfDocument() {\n pdfWorker.ensureWorker();\n setLoading(true);\n setError(undefined);\n const loadingTask = getDocument(typeof src === \"string\" ? {\n url: src\n } : {\n data: src\n });\n let cancelled = false;\n loadingTask.promise.then(pdf => {\n if (!cancelled) {\n setDocument(pdf);\n setNumPages(pdf.numPages);\n setLoading(false);\n }\n }, err => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n void loadingTask.destroy();\n };\n }, [src]);\n return {\n document,\n numPages,\n loading,\n error\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport { EventBus, PDFFindController, PDFLinkService, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport { useEffect, useRef } from \"react\";\nimport { PAGES_LOADED_EVENT } from \"../constants.js\";\nexport function usePdfViewer(containerRef, viewerRef, document, initialScale, initialPage) {\n const pdfViewerRef = useRef(null);\n const eventBusRef = useRef(null);\n const findControllerRef = useRef(null);\n useEffect(function initializePdfViewer() {\n const container = containerRef.current;\n const viewer = viewerRef.current;\n if (container == null || viewer == null || document == null) {\n return;\n }\n const eventBus = new EventBus();\n const linkService = new PDFLinkService({\n eventBus\n });\n const findController = new PDFFindController({\n linkService,\n eventBus,\n updateMatchesCountOnProgress: true\n });\n const pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n linkService,\n findController,\n removePageBorders: true,\n annotationEditorMode: AnnotationEditorType.NONE,\n annotationEditorHighlightColors: \"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\"\n });\n linkService.setViewer(pdfViewer);\n linkService.setDocument(document);\n findController.setDocument(document);\n pdfViewer.setDocument(document);\n\n // Apply initial scale and page after pages are loaded to avoid\n // \"scrollPageIntoView: not a valid pageNumber\" console errors.\n const onPagesLoaded = () => {\n if (initialScale != null) {\n pdfViewer.currentScale = initialScale;\n }\n if (initialPage != null && initialPage > 1) {\n pdfViewer.currentPageNumber = initialPage;\n pdfViewer.scrollPageIntoView({\n pageNumber: initialPage\n });\n }\n eventBus.off(PAGES_LOADED_EVENT, onPagesLoaded);\n };\n eventBus.on(PAGES_LOADED_EVENT, onPagesLoaded);\n eventBusRef.current = eventBus;\n findControllerRef.current = findController;\n pdfViewerRef.current = pdfViewer;\n return () => {\n pdfViewerRef.current = null;\n eventBusRef.current = null;\n findControllerRef.current = null;\n pdfViewer.cleanup();\n };\n }, [containerRef, viewerRef, document]);\n return {\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { PAGE_CHANGING_EVENT, SCALE_CHANGING_EVENT } from \"../constants.js\";\nexport function usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n document,\n scale,\n onScaleChange,\n onPageChange\n}) {\n const lastScaleRef = useRef(scale);\n\n // Sync React scale → PDFViewer\n useEffect(function syncScaleToViewer() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null) {\n return;\n }\n if (Math.abs(lastScaleRef.current - scale) > 0.001) {\n lastScaleRef.current = scale;\n pdfViewer.currentScale = scale;\n }\n }, [pdfViewerRef, scale]);\n\n // Listen to PDFViewer events → React state\n useEffect(function subscribeViewerEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n const handlePageChanging = evt => {\n onPageChange(evt.pageNumber);\n };\n const handleScaleChanging = evt => {\n lastScaleRef.current = evt.scale;\n onScaleChange(evt.scale);\n };\n eventBus.on(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.on(SCALE_CHANGING_EVENT, handleScaleChanging);\n return () => {\n eventBus.off(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.off(SCALE_CHANGING_EVENT, handleScaleChanging);\n };\n }, [eventBusRef, document, onPageChange, onScaleChange]);\n const scrollToPage = useCallback(page => {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.currentPageNumber = page;\n }\n }, [pdfViewerRef]);\n return {\n scrollToPage\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport { usePdfAnnotationPortals } from \"./usePdfAnnotationPortals.js\";\nimport { usePdfDocument } from \"./usePdfDocument.js\";\nimport { usePdfViewer } from \"./usePdfViewer.js\";\nimport { usePdfViewerSync } from \"./usePdfViewerSync.js\";\nexport function usePdfViewerCore({\n src,\n initialPage = 1,\n initialScale = 1.0\n}) {\n const {\n document,\n numPages,\n loading,\n error\n } = usePdfDocument(src);\n const [scale, setScale] = useState(initialScale);\n const [currentPage, setCurrentPage] = useState(initialPage);\n const containerRef = useRef(null);\n const viewerRef = useRef(null);\n const {\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n } = usePdfViewer(containerRef, viewerRef, document, initialScale, initialPage);\n const handleScaleChange = useCallback(newScale => {\n setScale(newScale);\n }, []);\n const handlePageChange = useCallback(page => {\n setCurrentPage(page);\n }, []);\n const {\n scrollToPage: syncScrollToPage\n } = usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n document,\n scale,\n onScaleChange: handleScaleChange,\n onPageChange: handlePageChange\n });\n const scrollToPage = useCallback(page => {\n setCurrentPage(page);\n syncScrollToPage(page);\n }, [syncScrollToPage]);\n const portalTargets = usePdfAnnotationPortals(pdfViewerRef, eventBusRef, document);\n return useMemo(() => ({\n document,\n numPages,\n loading,\n error,\n containerRef,\n viewerRef,\n currentPage,\n scrollToPage,\n scale,\n setScale,\n portalTargets,\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n }), [document, numPages, loading, error, currentPage, scrollToPage, scale, setScale, portalTargets]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { EMPTY_STRING, FIND_EVENT, UPDATE_FIND_CONTROL_STATE_EVENT, UPDATE_FIND_MATCHES_COUNT_EVENT } from \"../constants.js\";\nexport function usePdfViewerSearch(eventBusRef, findControllerRef, document) {\n const [query, setQueryState] = useState(EMPTY_STRING);\n const [totalMatches, setTotalMatches] = useState(0);\n const [currentMatchIndex, setCurrentMatchIndex] = useState(0);\n const [isSearchOpen, setIsSearchOpen] = useState(false);\n const dispatchFind = useCallback((queryString, findPrevious) => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"\",\n query: queryString,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious\n });\n }, [eventBusRef]);\n const dispatchFindAgain = useCallback(findPrevious => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"again\",\n query,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious\n });\n }, [eventBusRef, query]);\n const setQuery = useCallback(input => {\n setQueryState(input);\n if (input === EMPTY_STRING) {\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Dispatch empty query to clear highlights\n dispatchFind(EMPTY_STRING, false);\n return;\n }\n dispatchFind(input, false);\n }, [dispatchFind]);\n const nextMatch = useCallback(() => {\n dispatchFindAgain(false);\n }, [dispatchFindAgain]);\n const prevMatch = useCallback(() => {\n dispatchFindAgain(true);\n }, [dispatchFindAgain]);\n const openSearch = useCallback(() => {\n setIsSearchOpen(true);\n }, []);\n const closeSearch = useCallback(() => {\n setIsSearchOpen(false);\n setQueryState(EMPTY_STRING);\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Clear highlights\n dispatchFind(EMPTY_STRING, false);\n }, [dispatchFind]);\n useEffect(function subscribeSearchEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n const handleMatchesCount = evt => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0);\n };\n const handleControlState = evt => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0);\n };\n eventBus.on(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.on(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n return () => {\n eventBus.off(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.off(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n };\n }, [eventBusRef, findControllerRef, document]);\n return useMemo(() => ({\n query,\n totalMatches,\n currentMatchIndex,\n isSearchOpen,\n setQuery,\n nextMatch,\n prevMatch,\n openSearch,\n closeSearch\n }), [query, totalMatches, currentMatchIndex, isSearchOpen, setQuery, nextMatch, prevMatch, openSearch, closeSearch]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"../constants.js\";\nimport { usePdfOutline } from \"./usePdfOutline.js\";\nimport { usePdfViewerCore } from \"./usePdfViewerCore.js\";\nimport { usePdfViewerSearch } from \"./usePdfViewerSearch.js\";\nexport function usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialSidebarOpen = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n onDownload\n}) {\n const core = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const [rotation, setRotation] = useState(0);\n const [sidebarOpen, setSidebarOpen] = useState(initialSidebarOpen);\n const [sidebarMode, setSidebarMode] = useState(sidebarModeProp);\n const search = usePdfViewerSearch(core.eventBusRef, core.findControllerRef, core.document);\n const outlineItems = usePdfOutline(core.document);\n\n // Sync sidebarMode prop changes to state\n useEffect(function syncSidebarMode() {\n setSidebarMode(sidebarModeProp);\n }, [sidebarModeProp]);\n\n // Sync rotation → PDFViewer\n useEffect(function syncRotationToViewer() {\n const pdfViewer = core.pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.pagesRotation = rotation;\n }\n }, [core.pdfViewerRef, rotation]);\n\n // Ctrl+F keyboard shortcut\n useEffect(function registerSearchShortcut() {\n const handleKeyDown = e => {\n if ((e.ctrlKey || e.metaKey) && e.key === \"f\") {\n e.preventDefault();\n search.openSearch();\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [search.openSearch]);\n const zoomIn = useCallback(() => {\n core.setScale(Math.min(core.scale + SCALE_STEP, MAX_SCALE));\n }, [core.scale, core.setScale]);\n const zoomOut = useCallback(() => {\n core.setScale(Math.max(core.scale - SCALE_STEP, MIN_SCALE));\n }, [core.scale, core.setScale]);\n const rotateLeft = useCallback(() => {\n setRotation(prev => (prev - 90 + 360) % 360);\n }, []);\n const rotateRight = useCallback(() => {\n setRotation(prev => (prev + 90) % 360);\n }, []);\n const toggleSidebar = useCallback(() => {\n setSidebarOpen(prev => !prev);\n }, []);\n const download = useCallback(filename => {\n if (core.document == null) {\n return;\n }\n void core.document.getData().then(data => {\n const blob = new Blob([data.buffer], {\n type: \"application/pdf\"\n });\n const url = URL.createObjectURL(blob);\n const resolvedFilename = resolveDownloadFilename(src, filename);\n const a = globalThis.document.createElement(\"a\");\n a.href = url;\n a.download = resolvedFilename;\n a.click();\n URL.revokeObjectURL(url);\n onDownload?.({\n success: true,\n filename: resolvedFilename\n });\n }).catch(err => {\n onDownload?.({\n success: false,\n error: err instanceof Error ? err : new Error(\"Failed to download PDF\")\n });\n });\n }, [core.document, src, onDownload]);\n return useMemo(() => ({\n ...core,\n zoomIn,\n zoomOut,\n rotation,\n rotateLeft,\n rotateRight,\n sidebarOpen,\n sidebarMode,\n setSidebarMode,\n toggleSidebar,\n search,\n outlineItems,\n download\n }), [core, zoomIn, zoomOut, rotation, rotateLeft, rotateRight, sidebarOpen, sidebarMode, setSidebarMode, toggleSidebar, search, outlineItems, download]);\n}\n\n/** Derive a download filename from an explicit name, the src URL, or a fallback. */\nfunction resolveDownloadFilename(src, filename) {\n if (filename != null) {\n return filename;\n }\n if (typeof src === \"string\") {\n return src.split(\"/\").pop()?.split(\"?\")[0] || \"document.pdf\";\n }\n return \"document.pdf\";\n}",".pdfViewer {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: var(--osdk-pdf-viewer-bg);\n border: var(--osdk-pdf-viewer-border);\n border-radius: var(--osdk-surface-border-radius);\n overflow: hidden;\n position: relative;\n}\n\n.contentArea {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n}\n\n.scrollContainerWrapper {\n flex: 1;\n position: relative;\n overflow: hidden;\n}\n\n.scrollContainer {\n overflow: auto;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.loadingContainer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-muted);\n}\n\n.errorContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-surface-spacing);\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-danger-rest);\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinnerIcon {\n animation: spin 1s linear infinite;\n color: var(--osdk-typography-color-muted);\n}\n\n.errorIcon {\n flex-shrink: 0;\n}\n\n/* PDFViewer page overrides */\n:global(.pdfViewer .page) {\n box-shadow: var(--osdk-pdf-viewer-page-shadow);\n background-color: var(--osdk-palette-white);\n margin: 0 auto var(--osdk-pdf-viewer-page-gap);\n}\n\n/* Search highlight overrides — match pdf.js FindController CSS classes */\n:global(.textLayer) .highlight {\n background-color: var(--osdk-pdf-viewer-search-highlight);\n border-radius: 1px;\n}\n\n:global(.textLayer) .highlight.selected {\n background-color: var(--osdk-pdf-viewer-search-active);\n}\n\n:global(.textLayer)::selection {\n background: var(--osdk-intent-primary-rest);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { forwardRef, useImperativeHandle } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { PdfViewerAnnotationLayer } from \"./components/PdfViewerAnnotationLayer.js\";\nimport { PdfViewerOutlineSidebar } from \"./components/PdfViewerOutlineSidebar.js\";\nimport { PdfViewerSearchBar } from \"./components/PdfViewerSearchBar.js\";\nimport { PdfViewerSidebar } from \"./components/PdfViewerSidebar.js\";\nimport { PdfViewerToolbar } from \"./components/PdfViewerToolbar.js\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\nimport styles from \"./PdfViewer.module.css\";\nexport const BasePdfViewer = /*#__PURE__*/forwardRef(function BasePdfViewer({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n onDownload,\n enableHighlight = false,\n onTextHighlight,\n onHighlightDelete,\n formData,\n onFormSubmit,\n onFormChange,\n initialPage = 1,\n initialScale = 1.0,\n initialSidebarOpen = false,\n enableDownload = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n outlineIcons,\n className\n}, ref) {\n const viewer = usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialSidebarOpen,\n sidebarMode: sidebarModeProp,\n onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: enableHighlight,\n onTextHighlight,\n onHighlightDelete\n });\n useImperativeHandle(ref, () => ({\n scrollToPage: viewer.scrollToPage,\n deleteHighlight\n }), [viewer.scrollToPage, deleteHighlight]);\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormSubmit,\n onFormChange\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(PdfViewerToolbar, {\n currentPage: viewer.currentPage,\n numPages: viewer.numPages,\n scale: viewer.scale,\n sidebarOpen: viewer.sidebarOpen,\n onPageChange: viewer.scrollToPage,\n onScaleChange: viewer.setScale,\n onSearchOpen: viewer.search.openSearch,\n onSidebarToggle: viewer.toggleSidebar,\n onDownload: viewer.download,\n enableDownload: enableDownload,\n onRotateLeft: viewer.rotateLeft,\n onRotateRight: viewer.rotateRight,\n enableHighlight: enableHighlight,\n highlightModeActive: highlightModeActive,\n onHighlightToggle: toggleHighlightMode,\n enableFormSave: onFormSubmit != null && hasFormFields,\n onFormSave: submitFormData\n }), viewer.search.isSearchOpen && /*#__PURE__*/React.createElement(PdfViewerSearchBar, {\n query: viewer.search.query,\n totalMatches: viewer.search.totalMatches,\n currentMatchIndex: viewer.search.currentMatchIndex,\n onQueryChange: viewer.search.setQuery,\n onNext: viewer.search.nextMatch,\n onPrev: viewer.search.prevMatch,\n onClose: viewer.search.closeSearch\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.contentArea\n }, viewer.sidebarOpen && viewer.sidebarMode === \"thumbnails\" && /*#__PURE__*/React.createElement(PdfViewerSidebar, {\n document: viewer.document,\n numPages: viewer.numPages,\n currentPage: viewer.currentPage,\n onPageClick: viewer.scrollToPage,\n sidebarMode: viewer.sidebarMode,\n onSidebarModeChange: viewer.setSidebarMode\n }), viewer.sidebarOpen && viewer.sidebarMode === \"outline\" && /*#__PURE__*/React.createElement(PdfViewerOutlineSidebar, {\n outlineItems: viewer.outlineItems,\n currentPage: viewer.currentPage,\n onItemClick: viewer.scrollToPage,\n sidebarMode: viewer.sidebarMode,\n onSidebarModeChange: viewer.setSidebarMode,\n outlineIcons: outlineIcons\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(PdfViewerAnnotationLayer, {\n key: target.pageNumber,\n annotations: pageAnnotations,\n pageHeight: target.pageHeight,\n scale: target.scale,\n onAnnotationClick: onAnnotationClick\n }), target.container);\n })))));\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"../constants.js\";\nimport { usePdfAnnotationsByPage } from \"../hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"../hooks/usePdfFormFields.js\";\nimport { usePdfViewerCore } from \"../hooks/usePdfViewerCore.js\";\nimport styles from \"../PdfViewer.module.css\";\nimport { PdfViewerAnnotationLayer } from \"./PdfViewerAnnotationLayer.js\";\nexport function PdfViewerContent({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n initialPage = 1,\n initialScale = 1.0,\n onPageChange: onPageChangeProp,\n onScaleChange: onScaleChangeProp,\n formData,\n onFormChange,\n className\n}) {\n const viewer = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormChange\n });\n\n // Use refs for callbacks to avoid firing on initial mount\n const onPageChangeRef = useRef(onPageChangeProp);\n onPageChangeRef.current = onPageChangeProp;\n const onScaleChangeRef = useRef(onScaleChangeProp);\n onScaleChangeRef.current = onScaleChangeProp;\n const isInitialMountRef = useRef(true);\n useEffect(function notifyPageChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onPageChangeRef.current?.(viewer.currentPage);\n }, [viewer.currentPage]);\n useEffect(function notifyScaleChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onScaleChangeRef.current?.(viewer.scale);\n }, [viewer.scale]);\n useEffect(function clearInitialMount() {\n isInitialMountRef.current = false;\n }, []);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(PdfViewerAnnotationLayer, {\n key: target.pageNumber,\n annotations: pageAnnotations,\n pageHeight: target.pageHeight,\n scale: target.scale,\n onAnnotationClick: onAnnotationClick\n }), target.container);\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\n\n/** The shape of the value provided by {@link PdfViewerProvider}. */\n\nconst PdfViewerContext = /*#__PURE__*/createContext(null);\n/** Provides {@link PdfViewerContextValue} to descendant components. */\nexport function PdfViewerProvider({\n value,\n children\n}) {\n return /*#__PURE__*/React.createElement(PdfViewerContext.Provider, {\n value: value\n }, children);\n}\n\n/**\n * Returns the nearest {@link PdfViewerContextValue} from a {@link PdfViewerProvider}.\n * Throws if called outside a provider.\n */\nexport function usePdfViewerContext() {\n const ctx = useContext(PdfViewerContext);\n if (ctx == null) {\n throw new Error(\"usePdfViewerContext must be used within a PdfViewerProvider\");\n }\n return ctx;\n}\n\n/**\n * Consumer-facing setup hook analogous to react-hook-form's `useForm()`.\n * Accepts viewer options and returns a {@link PdfViewerContextValue} suitable\n * for passing to {@link PdfViewerProvider}.\n */\nexport function usePdfViewerInstance(options) {\n const viewer = usePdfViewerState({\n src: options.src,\n initialPage: options.initialPage,\n initialScale: options.initialScale,\n initialSidebarOpen: options.initialSidebarOpen,\n sidebarMode: options.sidebarMode,\n onDownload: options.onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: options.highlightEnabled ?? false,\n onTextHighlight: options.onTextHighlight,\n onHighlightDelete: options.onHighlightDelete\n });\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData: options.formData,\n onFormSubmit: options.onFormSubmit,\n onFormChange: options.onFormChange\n });\n const annotations = options.annotations ?? EMPTY_ANNOTATION_ARRAY;\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n const highlightEnabled = options.highlightEnabled ?? false;\n const enableDownload = options.enableDownload ?? false;\n const enableFormSave = options.onFormSubmit != null && hasFormFields;\n const {\n onAnnotationClick,\n outlineIcons\n } = options;\n return useMemo(() => ({\n ...viewer,\n highlightEnabled,\n highlightModeActive,\n toggleHighlightMode,\n hasFormFields,\n submitFormData,\n annotations,\n annotationsByPage,\n onAnnotationClick,\n enableDownload,\n enableFormSave,\n outlineIcons\n }), [viewer, highlightEnabled, highlightModeActive, toggleHighlightMode, hasFormFields, submitFormData, annotations, annotationsByPage, onAnnotationClick, enableDownload, enableFormSave, outlineIcons]);\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useEffect, useState } from \"react\";\nimport { BasePdfViewer } from \"./PdfViewer.js\";\nimport styles from \"./PdfViewer.module.css\";\nasync function fetchMediaContents(media) {\n const result = await media.fetchContents();\n return result.arrayBuffer();\n}\nexport function PdfViewer({\n media,\n className,\n ...pdfViewerProps\n}) {\n const [src, setSrc] = useState(undefined);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(undefined);\n\n // This is required until we either support React 19+ or a data fetching hook\n useEffect(function fetchMediaSource() {\n let cancelled = false;\n setLoading(true);\n setError(undefined);\n setSrc(undefined);\n fetchMediaContents(media).then(buffer => {\n if (!cancelled) {\n setSrc(buffer);\n setLoading(false);\n }\n }).catch(err => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [media]);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", error.message));\n }\n if (src == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(BasePdfViewer, _extends({\n src: src,\n className: className\n }, pdfViewerProps));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// PdfViewer\nexport { BasePdfViewer } from \"../../pdf-viewer/PdfViewer.js\";\n// PdfViewer building blocks\nexport { PdfViewerAnnotationLayer } from \"../../pdf-viewer/components/PdfViewerAnnotationLayer.js\";\nexport { PdfViewerContent } from \"../../pdf-viewer/components/PdfViewerContent.js\";\nexport { PdfViewerOutlineSidebar } from \"../../pdf-viewer/components/PdfViewerOutlineSidebar.js\";\nexport { PdfViewerSearchBar } from \"../../pdf-viewer/components/PdfViewerSearchBar.js\";\nexport { PdfViewerSidebar } from \"../../pdf-viewer/components/PdfViewerSidebar.js\";\nexport { PdfViewerToolbar } from \"../../pdf-viewer/components/PdfViewerToolbar.js\";\n\n// PdfViewer hooks — primitive\nexport { usePdfAnnotationPortals } from \"../../pdf-viewer/hooks/usePdfAnnotationPortals.js\";\nexport { usePdfAnnotationsByPage } from \"../../pdf-viewer/hooks/usePdfAnnotationsByPage.js\";\nexport { usePdfDocument } from \"../../pdf-viewer/hooks/usePdfDocument.js\";\nexport { usePdfFormFields } from \"../../pdf-viewer/hooks/usePdfFormFields.js\";\nexport { usePdfHighlightMode } from \"../../pdf-viewer/hooks/usePdfHighlightMode.js\";\nexport { usePdfOutline } from \"../../pdf-viewer/hooks/usePdfOutline.js\";\nexport { usePdfViewer } from \"../../pdf-viewer/hooks/usePdfViewer.js\";\nexport { usePdfViewerSearch } from \"../../pdf-viewer/hooks/usePdfViewerSearch.js\";\nexport { usePdfViewerSync } from \"../../pdf-viewer/hooks/usePdfViewerSync.js\";\n// PdfViewer context\nexport { PdfViewerProvider, usePdfViewerContext, usePdfViewerInstance } from \"../../pdf-viewer/PdfViewerContext.js\";\n// PdfViewer hooks — composition\nexport { usePdfViewerCore } from \"../../pdf-viewer/hooks/usePdfViewerCore.js\";\nexport { usePdfViewerState } from \"../../pdf-viewer/hooks/usePdfViewerState.js\";\n\n// PdfViewer (Media wrapper)\nimport { PdfViewer as _PdfViewer } from \"../../pdf-viewer/PdfRenderer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const PdfViewer = withOsdkMetrics(_PdfViewer, \"PdfViewer\");"]}
1
+ {"version":3,"sources":["../../src/pdf-viewer/components/PdfViewerAnnotationLayer.module.css","../../src/pdf-viewer/components/PdfViewerAnnotationLayer.tsx","../../src/pdf-viewer/components/PdfViewerOutlineSidebar.module.css","../../src/pdf-viewer/components/PdfViewerSidebarHeader.module.css","../../src/pdf-viewer/components/PdfViewerSidebarHeader.tsx","../../src/pdf-viewer/components/PdfViewerOutlineSidebar.tsx","../../src/pdf-viewer/components/PdfViewerSearchBar.module.css","../../src/pdf-viewer/components/PdfViewerSearchBar.tsx","../../src/pdf-viewer/constants.ts","../../src/pdf-viewer/components/PdfViewerSidebar.module.css","../../src/pdf-viewer/components/PdfViewerThumbnail.module.css","../../src/pdf-viewer/components/PdfViewerThumbnail.tsx","../../src/pdf-viewer/components/PdfViewerSidebar.tsx","../../src/pdf-viewer/components/PdfViewerToolbar.module.css","../../src/pdf-viewer/components/PdfViewerToolbar.tsx","../../src/pdf-viewer/hooks/usePdfAnnotationsByPage.ts","../../src/pdf-viewer/hooks/usePdfFormFields.ts","../../src/pdf-viewer/hooks/usePdfHighlightMode.ts","../../src/pdf-viewer/hooks/usePdfOutline.ts","../../src/pdf-viewer/hooks/usePdfAnnotationPortals.ts","../../src/pdf-viewer/hooks/usePdfDocument.ts","../../src/pdf-viewer/hooks/usePdfViewer.ts","../../src/pdf-viewer/hooks/usePdfViewerSync.ts","../../src/pdf-viewer/hooks/usePdfViewerCore.ts","../../src/pdf-viewer/hooks/usePdfViewerSearch.ts","../../src/pdf-viewer/hooks/usePdfViewerState.ts","../../src/pdf-viewer/PdfViewer.module.css","../../src/pdf-viewer/PdfViewer.tsx","../../src/pdf-viewer/components/PdfViewerContent.tsx","../../src/pdf-viewer/PdfViewerContext.tsx","../../src/pdf-viewer/PdfRenderer.tsx","../../src/public/experimental/pdf-viewer.ts"],"names":["useCallback","classnames","useMemo","React","ToggleGroup","Toggle","GridView","Properties","ChevronUp","ChevronDown","Cross","useRef","useState","useEffect","useVirtualizer","Button","Menu","ChevronLeft","Input","ChevronRight","Minus","Plus","RotatePage","Highlight","Search","Download","FloppyDisk","stored","AnnotationEditorType","items","importMetaUrl","GlobalWorkerOptions","getDocument","EventBus","PDFLinkService","PDFFindController","PDFViewer","forwardRef","BasePdfViewer","useImperativeHandle","Spin","ErrorIcon","createPortal","useContext","PdfViewer","withOsdkMetrics"],"mappings":"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","file":"chunk-YLTIGE7W.cjs","sourcesContent":[".annotationLayer {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 3;\n}\n\n.annotationGroup {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.annotationGroup:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.annotationGroup .annotation {\n pointer-events: auto;\n}\n\n.annotation {\n position: absolute;\n pointer-events: auto;\n cursor: pointer;\n transition: opacity var(--osdk-emphasis-transition-duration)\n var(--osdk-emphasis-ease-default);\n}\n\n.annotation:hover {\n opacity: 0.8;\n}\n\n.annotation:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.highlight {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-highlight)\n );\n border-radius: 2px;\n}\n\n.underline {\n background-color: transparent;\n border-bottom: 2px solid\n var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-underline)\n );\n}\n\n.comment {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-comment)\n );\n border-radius: 50%;\n width: 16px !important;\n height: 16px !important;\n}\n\n.pin {\n background-color: var(\n --osdk-pdf-annotation-color,\n var(--osdk-pdf-viewer-annotation-pin)\n );\n border-radius: 50% 50% 50% 0;\n width: 16px !important;\n height: 16px !important;\n transform: rotate(-45deg);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerAnnotationLayer.module.css\";\n/** Convert a single PDF rect (bottom-left origin) to CSS positioning (top-left origin). */\nfunction computeRectStyle(rect, pageHeight, scale, color) {\n return {\n left: rect.x * scale,\n top: (pageHeight - rect.y - rect.height) * scale,\n width: rect.width * scale,\n height: rect.height * scale,\n ...(color != null ? {\n \"--osdk-pdf-annotation-color\": color\n } : {})\n };\n}\nfunction useAnnotationHandlers(annotation, onClick) {\n const handleClick = useCallback(() => {\n onClick?.(annotation);\n }, [onClick, annotation]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n onClick?.(annotation);\n }\n }, [onClick, annotation]);\n return {\n handleClick,\n handleKeyDown\n };\n}\nfunction AnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick\n}) {\n const {\n handleClick,\n handleKeyDown\n } = useAnnotationHandlers(annotation, onClick);\n const className = classnames(styles.annotation, styles[annotation.type]);\n const multiRects = annotation.rects;\n const hasMultipleRects = multiRects != null && multiRects.length > 1;\n const style = useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, annotation.color), [annotation, pageHeight, scale]);\n\n // Multi-rect: render a group wrapper with one div per rect\n if (hasMultipleRects) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotationGroup,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n }, multiRects.map((rect, i) => /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: className,\n style: computeRectStyle(rect, pageHeight, scale, annotation.color)\n })));\n }\n\n // Single rect: existing behavior\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: style,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n });\n}\nfunction CustomAnnotationItem({\n annotation,\n pageHeight,\n scale,\n onClick\n}) {\n const {\n handleClick,\n handleKeyDown\n } = useAnnotationHandlers(annotation, onClick);\n const style = useMemo(() => computeRectStyle(annotation.rect, pageHeight, scale, undefined), [annotation, pageHeight, scale]);\n const renderProps = useMemo(() => ({\n annotation,\n scale,\n pageHeight\n }), [annotation, scale, pageHeight]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotation,\n style: style,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n title: annotation.label,\n \"data-annotation-id\": annotation.id\n }, annotation.render(renderProps));\n}\nexport function PdfViewerAnnotationLayer({\n annotations,\n pageHeight,\n scale,\n onAnnotationClick\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.annotationLayer\n }, annotations.map(annotation => annotation.type === \"custom\" ? /*#__PURE__*/React.createElement(CustomAnnotationItem, {\n key: annotation.id,\n annotation: annotation,\n pageHeight: pageHeight,\n scale: scale,\n onClick: onAnnotationClick\n }) : /*#__PURE__*/React.createElement(AnnotationItem, {\n key: annotation.id,\n annotation: annotation,\n pageHeight: pageHeight,\n scale: scale,\n onClick: onAnnotationClick\n })));\n}",".sidebar {\n width: var(--osdk-pdf-viewer-sidebar-width);\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--osdk-pdf-viewer-sidebar-bg);\n border-right: var(--osdk-pdf-viewer-sidebar-border);\n overflow: hidden;\n}\n\n\n.scrollContainer {\n flex: 1;\n overflow-y: auto;\n padding: var(--osdk-pdf-viewer-sidebar-thumbnail-gap) 0;\n}\n\n.outlineItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-pdf-viewer-outline-item-gap, 6px);\n padding: var(--osdk-pdf-viewer-outline-item-padding-y, 4px)\n var(--osdk-pdf-viewer-outline-item-padding-x, 12px);\n cursor: pointer;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default);\n text-decoration: none;\n border: none;\n background: none;\n text-align: left;\n width: 100%;\n line-height: 1.4;\n border-radius: var(--osdk-pdf-viewer-outline-item-radius, 4px);\n transition: background-color 0.15s ease;\n}\n\n.outlineItem:hover {\n background-color: var(--osdk-pdf-viewer-outline-item-hover-bg, rgba(0, 0, 0, 0.06));\n}\n\n.outlineItem:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.outlineItemActive {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n color: var(--osdk-pdf-viewer-outline-item-active-color, var(--osdk-intent-primary));\n font-weight: var(--osdk-typography-weight-semibold);\n}\n\n.outlineItemBold {\n font-weight: var(--osdk-typography-weight-bold);\n}\n\n.outlineItemItalic {\n font-style: italic;\n}\n\n.outlineItemIcon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n\n.outlineItemTitle {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.emptyState {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-pdf-viewer-outline-empty-gap, 12px);\n padding: var(--osdk-pdf-viewer-outline-empty-padding, 24px);\n flex: 1;\n text-align: center;\n}\n\n.emptyStateText {\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.sidebarHeader {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: var(--osdk-surface-spacing);\n border-bottom: var(--osdk-pdf-viewer-sidebar-border);\n flex-shrink: 0;\n}\n\n.toggleGroup {\n display: flex;\n align-items: center;\n gap: var(--osdk-spacing-2xs, 2px);\n padding: var(--osdk-spacing-2xs, 2px);\n border: none;\n border-radius: var(--osdk-surface-border-radius);\n background-color: var(--osdk-surface-background-color, transparent);\n}\n\n.modeButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-muted);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.modeButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.modeButton:active {\n background-color: var(--osdk-surface-background-color-default-active);\n}\n\n.modeButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.modeButton[data-pressed] {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n color: var(--osdk-pdf-viewer-outline-item-active-color, var(--osdk-intent-primary));\n}\n\n.modeButton[data-pressed]:hover {\n background-color: var(--osdk-pdf-viewer-outline-item-active-bg, rgba(45, 114, 210, 0.1));\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Toggle } from \"@base-ui/react/toggle\";\nimport { ToggleGroup } from \"@base-ui/react/toggle-group\";\nimport { GridView, Properties } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSidebarHeader.module.css\";\nconst SIDEBAR_MODE_VALUE = Object.freeze([\"thumbnails\"]);\nconst OUTLINE_MODE_VALUE = Object.freeze([\"outline\"]);\nexport function PdfViewerSidebarHeader({\n sidebarMode,\n onSidebarModeChange\n}) {\n const value = sidebarMode === \"thumbnails\" ? SIDEBAR_MODE_VALUE : OUTLINE_MODE_VALUE;\n const handleValueChange = useCallback(newValue => {\n if (newValue.length > 0) {\n onSidebarModeChange(newValue[0]);\n }\n }, [onSidebarModeChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebarHeader\n }, /*#__PURE__*/React.createElement(ToggleGroup, {\n value: value,\n onValueChange: handleValueChange,\n className: styles.toggleGroup\n }, /*#__PURE__*/React.createElement(Toggle, {\n value: \"thumbnails\",\n className: styles.modeButton,\n \"aria-label\": \"Page thumbnails\"\n }, /*#__PURE__*/React.createElement(GridView, {\n size: 16\n })), /*#__PURE__*/React.createElement(Toggle, {\n value: \"outline\",\n className: styles.modeButton,\n \"aria-label\": \"Document outline\"\n }, /*#__PURE__*/React.createElement(Properties, {\n size: 16\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport styles from \"./PdfViewerOutlineSidebar.module.css\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\nconst INDENT_PER_DEPTH = 16;\nexport function PdfViewerOutlineSidebar({\n outlineItems,\n currentPage,\n onItemClick,\n sidebarMode,\n onSidebarModeChange,\n outlineIcons\n}) {\n const activeIndex = useMemo(() => {\n return computeActiveIndex(outlineItems, currentPage);\n }, [outlineItems, currentPage]);\n if (outlineItems.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyState\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.emptyStateText\n }, \"No outline available\")));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainer\n }, outlineItems.map((item, index) => /*#__PURE__*/React.createElement(PdfViewerOutlineItem, {\n key: index,\n item: item,\n isActive: index === activeIndex,\n onClick: onItemClick,\n iconComponent: outlineIcons?.[item.depth]\n }))));\n}\nfunction PdfViewerOutlineItem({\n item,\n isActive,\n onClick,\n iconComponent: IconComponent\n}) {\n const handleClick = useCallback(() => {\n onClick(item.pageNumber);\n }, [onClick, item.pageNumber]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick(item.pageNumber);\n }\n }, [onClick, item.pageNumber]);\n const itemClassName = classnames(styles.outlineItem, isActive && styles.outlineItemActive, item.bold && styles.outlineItemBold, item.italic && styles.outlineItemItalic);\n const paddingLeft = INDENT_PER_DEPTH * item.depth + 12;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: itemClassName,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": item.title,\n \"aria-current\": isActive ? \"location\" : undefined,\n style: {\n paddingLeft\n }\n }, IconComponent != null && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.outlineItemIcon\n }, /*#__PURE__*/React.createElement(IconComponent, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.outlineItemTitle\n }, item.title));\n}\nfunction computeActiveIndex(items, currentPage) {\n const idx = items.findIndex(item => item.pageNumber > currentPage);\n return idx === -1 ? items.length - 1 : idx - 1;\n}",".searchBar {\n position: absolute;\n top: 0;\n right: 0;\n z-index: var(--osdk-surface-z-index-3);\n display: flex;\n align-items: center;\n gap: var(--osdk-pdf-viewer-toolbar-gap);\n padding: var(--osdk-surface-spacing);\n background-color: var(--osdk-pdf-viewer-search-bar-bg);\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-surface-shadow-2);\n margin: var(--osdk-surface-spacing);\n}\n\n.searchInput {\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 2);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default-rest);\n background-color: var(--osdk-background-primary);\n outline: none;\n min-width: 200px;\n}\n\n.searchInput:focus {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.matchCount {\n font-size: var(--osdk-typography-size-body-x-small);\n color: var(--osdk-typography-color-muted);\n white-space: nowrap;\n}\n\n.navButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-default-rest);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.navButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.navButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.closeButton {\n composes: navButton;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChevronDown, ChevronUp, Cross } from \"@blueprintjs/icons\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./PdfViewerSearchBar.module.css\";\nexport function PdfViewerSearchBar({\n query,\n totalMatches,\n currentMatchIndex,\n onQueryChange,\n onNext,\n onPrev,\n onClose\n}) {\n const handleInputChange = useCallback(e => {\n onQueryChange(e.target.value);\n }, [onQueryChange]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (e.shiftKey) {\n onPrev();\n } else {\n onNext();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n onClose();\n }\n }, [onNext, onPrev, onClose]);\n const matchDisplay = totalMatches > 0 ? `${currentMatchIndex + 1} of ${totalMatches}` : query.length > 0 ? \"No results\" : \"\";\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.searchBar\n }, /*#__PURE__*/React.createElement(\"input\", {\n autoFocus: true,\n className: styles.searchInput,\n type: \"text\",\n value: query,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n placeholder: \"Find in document...\",\n \"aria-label\": \"Search in PDF\"\n }), matchDisplay.length > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.matchCount\n }, matchDisplay), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.navButton,\n onClick: onPrev,\n disabled: totalMatches === 0,\n \"aria-label\": \"Previous match\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.navButton,\n onClick: onNext,\n disabled: totalMatches === 0,\n \"aria-label\": \"Next match\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"button\", {\n className: styles.closeButton,\n onClick: onClose,\n \"aria-label\": \"Close search\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Cross, {\n size: 16\n })));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default empty values (stable references to avoid re-renders)\nexport const EMPTY_ANNOTATION_ARRAY = [];\nexport const EMPTY_STRING = \"\";\n\n// Scale and dimension configuration\nexport const SCALE_STEP = 0.25;\nexport const MIN_SCALE = 0.25;\nexport const MAX_SCALE = 5.0;\nexport const DEFAULT_PAGE_HEIGHT = 792;\nexport const THUMBNAIL_GAP = 12;\nexport const THUMBNAIL_SCALE = 0.2;\nexport const DEVICE_PIXEL_RATIO = typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1;\n\n// Outline heading extraction\n/** Text must be at least 15% larger than the most common font size to be considered a heading. */\nexport const OUTLINE_HEADING_SIZE_RATIO = 1.15;\n/** Headings longer than this are likely paragraphs and are filtered out. */\nexport const OUTLINE_MAX_HEADING_LENGTH = 200;\n\n// pdfjs EventBus event names\nexport const FIND_EVENT = \"find\";\nexport const UPDATE_FIND_CONTROL_STATE_EVENT = \"updatefindcontrolstate\";\nexport const UPDATE_FIND_MATCHES_COUNT_EVENT = \"updatefindmatchescount\";\nexport const PAGE_CHANGING_EVENT = \"pagechanging\";\nexport const SCALE_CHANGING_EVENT = \"scalechanging\";\nexport const PAGE_RENDERED_EVENT = \"pagerendered\";\nexport const PAGES_LOADED_EVENT = \"pagesloaded\";\n// cspell:disable-next-line -- pdfjs EventBus event name\nexport const ANNOTATION_LAYER_RENDERED_EVENT = \"annotationlayerrendered\";",".sidebar {\n width: var(--osdk-pdf-viewer-sidebar-width);\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n background-color: var(--osdk-pdf-viewer-sidebar-bg);\n border-right: var(--osdk-pdf-viewer-sidebar-border);\n overflow: hidden;\n}\n\n\n.scrollContainer {\n flex: 1;\n overflow-y: auto;\n}\n\n.thumbnailsContainer {\n position: relative;\n}\n\n.thumbnailWrapper {\n position: absolute;\n left: 0;\n width: 100%;\n display: flex;\n justify-content: center;\n padding: var(--osdk-pdf-viewer-sidebar-thumbnail-gap)\n var(--osdk-pdf-viewer-sidebar-thumbnail-gap) 0;\n}\n\n.pageNumber {\n text-align: center;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n margin-top: 4px;\n}\n",".thumbnailContainer {\n position: relative;\n cursor: pointer;\n border: 2px solid transparent;\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-pdf-viewer-page-shadow);\n overflow: hidden;\n transition: border-color var(--osdk-emphasis-transition-duration)\n var(--osdk-emphasis-ease-default);\n}\n\n.thumbnailContainer:hover {\n border-color: var(--osdk-pdf-viewer-sidebar-border);\n}\n\n.active {\n border-color: var(--osdk-pdf-viewer-sidebar-active-border);\n}\n\n.active:hover {\n border-color: var(--osdk-pdf-viewer-sidebar-active-border);\n}\n\n.canvas {\n display: block;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { DEVICE_PIXEL_RATIO, THUMBNAIL_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerThumbnail.module.css\";\nexport function PdfViewerThumbnail({\n document,\n pageNumber,\n isActive,\n onClick\n}) {\n const canvasRef = useRef(null);\n const renderTaskRef = useRef(null);\n const [dimensions, setDimensions] = useState(undefined);\n useEffect(() => {\n let cancelled = false;\n void document.getPage(pageNumber).then(page => {\n if (cancelled || canvasRef.current == null) {\n return;\n }\n const viewport = page.getViewport({\n scale: THUMBNAIL_SCALE\n });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return;\n }\n canvas.width = Math.floor(viewport.width * DEVICE_PIXEL_RATIO);\n canvas.height = Math.floor(viewport.height * DEVICE_PIXEL_RATIO);\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n setDimensions({\n width: Math.floor(viewport.width),\n height: Math.floor(viewport.height)\n });\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n }\n context.setTransform(DEVICE_PIXEL_RATIO, 0, 0, DEVICE_PIXEL_RATIO, 0, 0);\n const renderTask = page.render({\n canvasContext: context,\n viewport\n });\n renderTaskRef.current = renderTask;\n void renderTask.promise.catch(err => {\n if (err instanceof Error && err.message.includes(\"cancelled\")) {\n return;\n }\n throw err;\n });\n });\n return () => {\n cancelled = true;\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n renderTaskRef.current = null;\n }\n };\n }, [document, pageNumber]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n }, [onClick]);\n const containerClassName = classnames(styles.thumbnailContainer, isActive && styles.active);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: containerClassName,\n onClick: onClick,\n onKeyDown: handleKeyDown,\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": `Page ${pageNumber}`,\n \"aria-current\": isActive ? \"page\" : undefined,\n style: dimensions != null ? {\n width: dimensions.width,\n height: dimensions.height\n } : undefined\n }, /*#__PURE__*/React.createElement(\"canvas\", {\n ref: canvasRef,\n className: styles.canvas\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useEffect, useRef } from \"react\";\nimport { DEFAULT_PAGE_HEIGHT, THUMBNAIL_GAP, THUMBNAIL_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerSidebar.module.css\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\nimport { PdfViewerThumbnail } from \"./PdfViewerThumbnail.js\";\nexport function PdfViewerSidebar({\n document,\n numPages,\n currentPage,\n onPageClick,\n sidebarMode,\n onSidebarModeChange\n}) {\n const scrollContainerRef = useRef(null);\n const estimatedItemHeight = Math.floor(DEFAULT_PAGE_HEIGHT * THUMBNAIL_SCALE) + THUMBNAIL_GAP + 20;\n const virtualizer = useVirtualizer({\n count: numPages,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => estimatedItemHeight,\n overscan: 2\n });\n\n // Auto-scroll to keep the active thumbnail visible\n useEffect(function syncActiveThumbnail() {\n virtualizer.scrollToIndex(currentPage - 1, {\n align: \"auto\"\n });\n }, [currentPage, virtualizer]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.sidebar\n }, /*#__PURE__*/React.createElement(PdfViewerSidebarHeader, {\n sidebarMode: sidebarMode,\n onSidebarModeChange: onSidebarModeChange\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollContainerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.thumbnailsContainer,\n style: {\n height: virtualizer.getTotalSize()\n }\n }, virtualizer.getVirtualItems().map(virtualItem => {\n const pageNumber = virtualItem.index + 1;\n return /*#__PURE__*/React.createElement(\"div\", {\n key: virtualItem.key,\n className: styles.thumbnailWrapper,\n style: {\n top: virtualItem.start,\n height: virtualItem.size\n }\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(PdfViewerThumbnail, {\n document: document,\n pageNumber: pageNumber,\n isActive: pageNumber === currentPage,\n onClick: () => onPageClick(pageNumber)\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.pageNumber\n }, pageNumber)));\n }))));\n}",".toolbar {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-pdf-viewer-toolbar-gap);\n padding: var(--osdk-surface-spacing);\n background-color: var(--osdk-pdf-viewer-toolbar-bg);\n border-bottom: var(--osdk-pdf-viewer-toolbar-border);\n color: var(--osdk-pdf-viewer-toolbar-color);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n flex-shrink: 0;\n}\n\n.toolbarGroup {\n display: flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.separator {\n width: 1px;\n height: 20px;\n background-color: var(--osdk-surface-border-color-default);\n margin: 0 var(--osdk-surface-spacing);\n}\n\n.toolbarButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n color: var(--osdk-typography-color-muted);\n cursor: pointer;\n border-radius: var(--osdk-surface-border-radius);\n padding: 0;\n}\n\n.toolbarButton:hover {\n background-color: var(--osdk-surface-background-color-default-hover);\n}\n\n.toolbarButton:active {\n background-color: var(--osdk-surface-background-color-default-active);\n}\n\n.toolbarButton:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.toolbarButton:disabled {\n opacity: 0.5;\n cursor: default;\n}\n\n.toolbarButtonActive {\n background-color: var(--osdk-surface-background-color-default-active);\n color: var(--osdk-typography-color-default-rest);\n}\n\n.pageInput {\n width: 48px;\n text-align: center;\n border: var(--osdk-surface-border);\n border-radius: var(--osdk-surface-border-radius);\n padding: calc(0.5 * var(--osdk-surface-spacing)) var(--osdk-surface-spacing);\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-default-rest);\n background-color: var(--osdk-background-primary);\n}\n\n.pageInput:focus {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n}\n\n.pageCount {\n color: var(--osdk-typography-color-muted);\n}\n\n.scaleDisplay {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n min-width: 40px;\n text-align: center;\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport { ChevronLeft, ChevronRight, Download, FloppyDisk, Highlight, Menu, Minus, Plus, RotatePage, Search } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"../constants.js\";\nimport styles from \"./PdfViewerToolbar.module.css\";\nexport function PdfViewerToolbar({\n currentPage,\n numPages,\n scale,\n sidebarOpen,\n onPageChange,\n onScaleChange,\n onSearchOpen,\n onSidebarToggle,\n onDownload,\n enableDownload,\n onRotateLeft,\n onRotateRight,\n enableHighlight,\n highlightModeActive,\n onHighlightToggle,\n enableFormSave = false,\n onFormSave\n}) {\n const [pageInputValue, setPageInputValue] = useState(String(currentPage));\n\n // Sync input display when currentPage changes from scrolling\n useEffect(function syncPageInput() {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n const handlePrevPage = useCallback(() => {\n if (currentPage > 1) {\n const newPage = currentPage - 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, onPageChange]);\n const handleNextPage = useCallback(() => {\n if (currentPage < numPages) {\n const newPage = currentPage + 1;\n onPageChange(newPage);\n setPageInputValue(String(newPage));\n }\n }, [currentPage, numPages, onPageChange]);\n const handlePageInputChange = useCallback(e => {\n setPageInputValue(e.target.value);\n }, []);\n const handlePageInputKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n const page = parseInt(pageInputValue, 10);\n if (!isNaN(page) && page >= 1 && page <= numPages) {\n onPageChange(page);\n } else {\n setPageInputValue(String(currentPage));\n }\n }\n }, [pageInputValue, numPages, onPageChange, currentPage]);\n const handlePageInputBlur = useCallback(() => {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n const handleZoomIn = useCallback(() => {\n const newScale = Math.min(scale + SCALE_STEP, MAX_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n const handleZoomOut = useCallback(() => {\n const newScale = Math.max(scale - SCALE_STEP, MIN_SCALE);\n onScaleChange(newScale);\n }, [scale, onScaleChange]);\n const scalePercent = `${Math.round(scale * 100)}%`;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbar\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onSidebarToggle,\n \"aria-label\": sidebarOpen ? \"Close sidebar\" : \"Open sidebar\",\n title: sidebarOpen ? \"Close sidebar\" : \"Open sidebar\",\n \"aria-pressed\": sidebarOpen,\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Menu, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handlePrevPage,\n disabled: currentPage <= 1,\n \"aria-label\": \"Previous page\",\n title: \"Previous page\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronLeft, {\n size: 16\n })), /*#__PURE__*/React.createElement(Input, {\n className: styles.pageInput,\n type: \"text\",\n value: pageInputValue,\n onChange: handlePageInputChange,\n onKeyDown: handlePageInputKeyDown,\n onBlur: handlePageInputBlur,\n \"aria-label\": \"Page number\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.pageCount\n }, \"of \", numPages), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleNextPage,\n disabled: currentPage >= numPages,\n \"aria-label\": \"Next page\",\n title: \"Next page\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(ChevronRight, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleZoomOut,\n disabled: scale <= MIN_SCALE,\n \"aria-label\": \"Zoom out\",\n title: \"Zoom out\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Minus, {\n size: 16\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.scaleDisplay\n }, scalePercent), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: handleZoomIn,\n disabled: scale >= MAX_SCALE,\n \"aria-label\": \"Zoom in\",\n title: \"Zoom in\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Plus, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.toolbarGroup\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onRotateLeft,\n \"aria-label\": \"Rotate left\",\n title: \"Rotate left\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(RotatePage, {\n size: 16\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onRotateRight,\n \"aria-label\": \"Rotate right\",\n title: \"Rotate right\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(RotatePage, {\n size: 16,\n style: {\n transform: \"scaleX(-1)\"\n }\n }))), enableHighlight && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: classnames(styles.toolbarButton, highlightModeActive && styles.toolbarButtonActive),\n onClick: onHighlightToggle,\n \"aria-label\": highlightModeActive ? \"Disable highlight mode\" : \"Enable highlight mode\",\n title: highlightModeActive ? \"Disable highlight mode\" : \"Enable highlight mode\",\n \"aria-pressed\": highlightModeActive,\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Highlight, {\n size: 16\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onSearchOpen,\n \"aria-label\": \"Search\",\n title: \"Search\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Search, {\n size: 16\n })), enableDownload && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onDownload,\n \"aria-label\": \"Download\",\n title: \"Download\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(Download, {\n size: 16\n }))), enableFormSave && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.separator\n }), /*#__PURE__*/React.createElement(Button, {\n className: styles.toolbarButton,\n onClick: onFormSave,\n \"aria-label\": \"Save form\",\n title: \"Save form\",\n type: \"button\"\n }, /*#__PURE__*/React.createElement(FloppyDisk, {\n size: 16\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useMemo } from \"react\";\n/**\n * Groups a flat array of annotations by page number for efficient per-page lookup.\n */\nexport function usePdfAnnotationsByPage(annotations) {\n return useMemo(() => {\n const result = {};\n for (const ann of annotations) {\n (result[ann.page] ??= []).push(ann);\n }\n return result;\n }, [annotations]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { ANNOTATION_LAYER_RENDERED_EVENT } from \"../constants.js\";\n/** Get the viewer's container element (typed loosely by pdf.js). */\nfunction getViewerContainer(viewer) {\n return viewer.container;\n}\n\n/** Internal metadata for a single form field annotation. */\n\n/**\n * Normalizes a pdf.js field object type string to a simplified form type.\n * @internal Exported for testing.\n */\nexport function normalizeFieldType(type) {\n switch (type) {\n case \"checkbox\":\n case \"radiobutton\":\n case \"combobox\":\n case \"listbox\":\n return type;\n default:\n return \"text\";\n }\n}\n\n/**\n * Converts a pdf.js annotationStorage value to a consumer-friendly PdfFormFieldValue.\n * @internal Exported for testing.\n */\nexport function toFormFieldValue(storageValue, fieldType) {\n if (fieldType === \"checkbox\") {\n if (typeof storageValue === \"boolean\") {\n return storageValue;\n }\n // pdf.js stores checkbox as the export value when checked, \"Off\" when unchecked\n return storageValue !== \"Off\" && storageValue !== false;\n }\n if (fieldType === \"radiobutton\") {\n return typeof storageValue === \"string\" ? storageValue : \"\";\n }\n if (typeof storageValue === \"string\") {\n return storageValue;\n }\n if (Array.isArray(storageValue)) {\n return storageValue.map(String);\n }\n return \"\";\n}\n\n/**\n * Converts a consumer PdfFormFieldValue to a pdf.js annotationStorage value.\n * @internal Exported for testing.\n */\nexport function toStorageValue(formValue, fieldType) {\n if (fieldType === \"checkbox\") {\n if (typeof formValue === \"boolean\") {\n return formValue;\n }\n return formValue !== \"Off\" && formValue !== \"\";\n }\n return formValue;\n}\n\n/**\n * Hook that manages interactive PDF form fields.\n * Builds a field metadata map, pre-populates initial values,\n * listens for field changes, and collects values on submit.\n */\nexport function usePdfFormFields({\n pdfViewerRef,\n eventBusRef,\n document,\n formData,\n onFormSubmit,\n onFormChange\n}) {\n const [hasFormFields, setHasFormFields] = useState(false);\n\n // Stable refs for callbacks\n const onFormSubmitRef = useRef(onFormSubmit);\n const onFormChangeRef = useRef(onFormChange);\n const formDataRef = useRef(formData);\n useEffect(function syncCallbackRefs() {\n onFormSubmitRef.current = onFormSubmit;\n onFormChangeRef.current = onFormChange;\n formDataRef.current = formData;\n }, [onFormSubmit, onFormChange, formData]);\n\n // Map from annotation ID -> field metadata\n const fieldMapRef = useRef(new Map());\n // Reverse map from field name -> annotation IDs\n const nameToIdsRef = useRef(new Map());\n\n // Effect 1: Build field metadata map when document loads\n useEffect(function buildFieldMap() {\n const doc = document;\n if (doc == null) {\n fieldMapRef.current.clear();\n nameToIdsRef.current.clear();\n setHasFormFields(false);\n return;\n }\n let cancelled = false;\n void doc.getFieldObjects().then(fieldObjects => {\n if (cancelled || fieldObjects == null) {\n setHasFormFields(false);\n return;\n }\n const fieldMap = new Map();\n const nameToIds = new Map();\n for (const [fieldName, objects] of Object.entries(fieldObjects)) {\n const ids = [];\n for (const obj of objects) {\n const typedObj = obj;\n if (typedObj.id == null) continue;\n const fieldType = normalizeFieldType(typedObj.type ?? \"text\");\n fieldMap.set(typedObj.id, {\n fieldName,\n fieldType,\n exportValues: typedObj.exportValues,\n page: typedObj.page ?? 0\n });\n ids.push(typedObj.id);\n }\n if (ids.length > 0) {\n nameToIds.set(fieldName, ids);\n }\n }\n fieldMapRef.current = fieldMap;\n nameToIdsRef.current = nameToIds;\n setHasFormFields(fieldMap.size > 0);\n });\n return () => {\n cancelled = true;\n };\n }, [document]);\n\n // Populates form fields from formData into both annotation storage and DOM elements.\n // Scoped to the viewer container to avoid conflicts with multiple viewer instances.\n const populateFields = useCallback(() => {\n const data = formDataRef.current;\n const doc = document;\n const pdfViewer = pdfViewerRef.current;\n if (data == null || doc == null || pdfViewer == null) return;\n if (fieldMapRef.current.size === 0) return;\n const storage = doc.annotationStorage;\n const container = getViewerContainer(pdfViewer);\n for (const [fieldName, value] of Object.entries(data)) {\n const ids = nameToIdsRef.current.get(fieldName);\n if (ids == null) continue;\n for (const id of ids) {\n const entry = fieldMapRef.current.get(id);\n if (entry == null) continue;\n\n // Also update the DOM element directly (scoped to viewer container)\n const el = container?.querySelector(`[data-element-id=\"${CSS.escape(id)}\"]`);\n if (entry.fieldType === \"radiobutton\") {\n // Radio buttons: each ID is a separate option. Check the one\n // whose export value matches, uncheck the others.\n // Use exportValues if defined, otherwise fall back to the DOM\n // element's value attribute (mirrors handleFieldChange logic).\n const optionValue = entry.exportValues ?? (el instanceof HTMLInputElement ? el.value : undefined);\n const isSelected = optionValue === String(value);\n storage.setValue(id, {\n value: isSelected ? entry.exportValues ?? String(value) : \"Off\"\n });\n if (el instanceof HTMLInputElement) {\n el.checked = isSelected;\n }\n } else {\n const storageVal = toStorageValue(value, entry.fieldType);\n storage.setValue(id, {\n value: storageVal\n });\n if (el == null) continue;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n el.checked = typeof storageVal === \"boolean\" ? storageVal : storageVal !== \"Off\";\n } else if (el instanceof HTMLSelectElement) {\n el.value = String(value);\n } else if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n el.value = String(value);\n }\n }\n }\n }\n }, [document, pdfViewerRef]);\n\n // Effect 2: Populate initial form data when annotation layers render\n useEffect(function populateFormData() {\n const eventBus = eventBusRef.current;\n if (eventBus == null || document == null || formDataRef.current == null) {\n return;\n }\n\n // Attempt population immediately in case the field map was built\n // after the annotation layer already rendered (race condition fix).\n populateFields();\n const onAnnotationLayerRendered = () => {\n populateFields();\n };\n eventBus.on(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n return () => {\n eventBus.off(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n };\n }, [eventBusRef, document, hasFormFields, populateFields]);\n\n // Effect 3: Listen for field changes via MutationObserver + event listeners\n useEffect(function listenForFieldChanges() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n\n // Get the viewer's container element\n const container = getViewerContainer(pdfViewer);\n if (container == null) return;\n const listeners = new Map();\n function handleFieldChange(el) {\n const id = el.getAttribute(\"data-element-id\");\n if (id == null) return;\n const entry = fieldMapRef.current.get(id);\n if (entry == null) return;\n let value;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n value = el.checked;\n } else if (entry.fieldType === \"radiobutton\" && el instanceof HTMLInputElement) {\n // For radio buttons, the value is the button's export value when selected\n value = el.checked ? entry.exportValues ?? el.value : \"\";\n } else {\n value = el.value;\n }\n onFormChangeRef.current?.(entry.fieldName, value);\n }\n function attachListeners(root) {\n const elements = root.querySelectorAll?.(\".annotationLayer input, .annotationLayer select, .annotationLayer textarea\");\n if (elements == null) return;\n for (const el of elements) {\n if (listeners.has(el)) continue;\n const handler = () => {\n handleFieldChange(el);\n };\n el.addEventListener(\"input\", handler);\n el.addEventListener(\"change\", handler);\n listeners.set(el, handler);\n }\n }\n\n // Attach to any elements already in the DOM\n attachListeners(container);\n\n // Watch for new form elements being added (pages render lazily)\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element) {\n attachListeners(node);\n }\n }\n }\n });\n observer.observe(container, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n for (const [el, handler] of listeners) {\n el.removeEventListener(\"input\", handler);\n el.removeEventListener(\"change\", handler);\n }\n listeners.clear();\n };\n }, [pdfViewerRef, document]);\n\n // Callback: collect all form data and invoke onFormSubmit\n const submitFormData = useCallback(() => {\n const doc = document;\n if (doc == null) return;\n const storage = doc.annotationStorage;\n const allValues = storage.getAll();\n const result = {};\n\n // Track which radio group has been resolved\n const resolvedRadios = new Set();\n for (const [id, entry] of fieldMapRef.current) {\n const {\n fieldName,\n fieldType\n } = entry;\n\n // For radio buttons, only process each group once\n if (fieldType === \"radiobutton\") {\n if (resolvedRadios.has(fieldName)) continue;\n resolvedRadios.add(fieldName);\n\n // Find the selected radio in the group\n const groupIds = nameToIdsRef.current.get(fieldName) ?? [];\n let selectedValue = \"\";\n for (const radioId of groupIds) {\n const stored = allValues?.[radioId];\n const val = stored != null && typeof stored === \"object\" && \"value\" in stored ? stored.value : stored;\n if (val === true || typeof val === \"string\" && val !== \"Off\") {\n const radioEntry = fieldMapRef.current.get(radioId);\n selectedValue = radioEntry?.exportValues ?? String(val);\n break;\n }\n }\n result[fieldName] = selectedValue;\n continue;\n }\n const stored = allValues?.[id];\n const rawValue = stored != null && typeof stored === \"object\" && \"value\" in stored ? stored.value : stored;\n\n // Skip if we already have a value for this field name (e.g. duplicate IDs)\n if (fieldName in result) continue;\n result[fieldName] = toFormFieldValue(rawValue, fieldType);\n }\n onFormSubmitRef.current?.(result);\n }, [document]);\n return {\n hasFormFields,\n submitFormData\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n/**\n * Converts an RGB array (0.0–1.0 per channel) to a CSS hex color string.\n */\nexport function rgbArrayToHex(color) {\n const r = Math.round(color[0] * 255);\n const g = Math.round(color[1] * 255);\n const b = Math.round(color[2] * 255);\n return `#${r.toString(16).padStart(2, \"0\")}${g.toString(16).padStart(2, \"0\")}${b.toString(16).padStart(2, \"0\")}`;\n}\n\n/**\n * Converts quadPoints (PDF spec format) back to PdfRect[].\n * QuadPoints are 8 values per quad: [x1,y1, x2,y2, x3,y3, x4,y4]\n * representing the four corners of each highlight rect.\n *\n * PDF.js highlight editor produces axis-aligned quads with ordering:\n * (x1,y1)=top-left, (x2,y2)=top-right, (x3,y3)=bottom-left, (x4,y4)=bottom-right\n * We derive the bounding rect from x1, y1 (top), x2 (right edge), y3 (bottom).\n */\nexport function quadPointsToRects(quadPoints) {\n const rects = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n const x1 = quadPoints[i];\n const y1 = quadPoints[i + 1];\n const x2 = quadPoints[i + 2];\n const y3 = quadPoints[i + 5];\n const x = Math.min(x1, x2);\n const y = Math.min(y1, y3);\n const width = Math.abs(x2 - x1);\n const height = Math.abs(y1 - y3);\n rects.push({\n x,\n y,\n width,\n height\n });\n }\n return rects;\n}\n\n/**\n * Hook that manages the PDF.js built-in highlight annotation editor mode.\n * When active, users can select text to create highlights.\n * A callback fires with the annotation details for persistence.\n */\nexport function usePdfHighlightMode({\n pdfViewerRef,\n document,\n enabled,\n onTextHighlight,\n onHighlightDelete\n}) {\n const [highlightModeActive, setHighlightModeActive] = useState(false);\n const onTextHighlightRef = useRef(onTextHighlight);\n const onHighlightDeleteRef = useRef(onHighlightDelete);\n const knownEditorIdsRef = useRef(new Set());\n const editorEventsRef = useRef(new Map());\n\n // Keep callback refs in sync\n useEffect(function syncCallbackRef() {\n onTextHighlightRef.current = onTextHighlight;\n onHighlightDeleteRef.current = onHighlightDelete;\n }, [onTextHighlight, onHighlightDelete]);\n\n // Toggle the PDF.js annotation editor mode\n useEffect(function syncHighlightMode() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null || document == null) {\n return;\n }\n try {\n if (highlightModeActive && enabled) {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.HIGHLIGHT\n };\n } else {\n pdfViewer.annotationEditorMode = {\n mode: AnnotationEditorType.NONE\n };\n }\n } catch {\n // AnnotationEditorUIManager may not be initialized yet\n }\n }, [pdfViewerRef, document, highlightModeActive, enabled]);\n\n // Deactivate highlight mode when the feature is disabled\n useEffect(function deactivateOnDisable() {\n if (!enabled) {\n setHighlightModeActive(false);\n }\n }, [enabled]);\n\n // Clear tracked editors when the document changes (but not on highlight toggle)\n const prevDocumentRef = useRef(undefined);\n useEffect(function clearOnDocumentChange() {\n if (document !== prevDocumentRef.current) {\n knownEditorIdsRef.current.clear();\n editorEventsRef.current.clear();\n prevDocumentRef.current = document;\n }\n }, [document]);\n\n // Listen for new highlights being added to annotation storage\n useEffect(function listenForHighlights() {\n if (document == null || !highlightModeActive || !enabled) {\n return;\n }\n const storage = document.annotationStorage;\n const previousOnAnnotationEditor = storage.onAnnotationEditor;\n\n // Monkey-patch storage.remove to detect highlight deletions.\n // This is fragile but necessary because PDF.js does not emit events\n // when editors are removed. Restore the original on cleanup.\n const originalRemove = storage.remove.bind(storage);\n storage.remove = key => {\n const savedEvent = editorEventsRef.current.get(key);\n if (savedEvent != null) {\n editorEventsRef.current.delete(key);\n knownEditorIdsRef.current.delete(key);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n originalRemove(key);\n };\n storage.onAnnotationEditor = type => {\n // onAnnotationEditor fires with the editor's static _type (string \"highlight\")\n if (type !== \"highlight\") {\n return;\n }\n\n // Find new editors in storage\n const allEntries = storage.getAll();\n if (allEntries == null) {\n return;\n }\n for (const [id, entry] of Object.entries(allEntries)) {\n if (knownEditorIdsRef.current.has(id)) {\n continue;\n }\n\n // Check if this is a highlight editor with serializable data\n if (typeof entry === \"object\" && entry != null && \"serialize\" in entry && typeof entry.serialize === \"function\") {\n knownEditorIdsRef.current.add(id);\n const serialized = entry.serialize(false);\n if (serialized == null || serialized.annotationType !== AnnotationEditorType.HIGHLIGHT) {\n continue;\n }\n const rects = serialized.quadPoints != null ? quadPointsToRects(serialized.quadPoints) : [];\n if (rects.length === 0) {\n continue;\n }\n const color = Array.isArray(serialized.color) ? rgbArrayToHex(serialized.color) : \"#fff066\";\n\n // Extract text from the editor's aria-label (stores selected text)\n const selectedText = typeof entry.div?.getAttribute === \"function\" ? entry.div.getAttribute(\"aria-label\") ?? \"\" : \"\";\n const event = {\n editorId: id,\n page: serialized.pageIndex + 1,\n rects,\n selectedText,\n color\n };\n\n // Store the event so we can provide it back on delete\n editorEventsRef.current.set(id, event);\n onTextHighlightRef.current?.(event);\n }\n }\n };\n return () => {\n storage.onAnnotationEditor = previousOnAnnotationEditor;\n storage.remove = originalRemove;\n };\n }, [document, highlightModeActive, enabled]);\n const toggleHighlightMode = useCallback(() => {\n setHighlightModeActive(prev => !prev);\n }, []);\n const deleteHighlight = useCallback(editorId => {\n if (document == null) return;\n const storage = document.annotationStorage;\n\n // Fire the delete callback directly. The monkey-patch on storage.remove\n // only exists while highlight mode is active, so we handle it here to\n // ensure the callback fires regardless of highlight mode state.\n // Clean up refs first so the monkey-patch (if active) won't double-fire.\n const savedEvent = editorEventsRef.current.get(editorId);\n if (savedEvent != null) {\n editorEventsRef.current.delete(editorId);\n knownEditorIdsRef.current.delete(editorId);\n onHighlightDeleteRef.current?.(savedEvent);\n }\n\n // Remove the editor's DOM element if it exists\n const allEntries = storage.getAll();\n const entry = allEntries?.[editorId];\n if (hasDiv(entry) && entry.div instanceof HTMLElement) {\n entry.div.remove();\n }\n storage.remove(editorId);\n }, [document]);\n return {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight\n };\n}\nfunction hasDiv(obj) {\n return obj != null && typeof obj === \"object\" && \"div\" in obj;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from \"react\";\nimport { OUTLINE_HEADING_SIZE_RATIO, OUTLINE_MAX_HEADING_LENGTH } from \"../constants.js\";\nconst EMPTY_OUTLINE = [];\nexport function usePdfOutline(document) {\n const [outlineItems, setOutlineItems] = useState(EMPTY_OUTLINE);\n useEffect(function loadOutline() {\n if (document == null) {\n setOutlineItems(EMPTY_OUTLINE);\n return;\n }\n let cancelled = false;\n void (async () => {\n try {\n // Try embedded bookmarks first\n const outline = await document.getOutline();\n if (cancelled) return;\n if (outline != null && outline.length > 0) {\n const items = await resolveBookmarkOutline(document, outline);\n if (!cancelled) {\n setOutlineItems(items);\n }\n return;\n }\n\n // Fall back to extracting headings from text content\n const items = await extractHeadingsFromText(document);\n if (!cancelled) {\n setOutlineItems(items.length > 0 ? items : EMPTY_OUTLINE);\n }\n } catch {\n // If extraction fails entirely, leave outline empty\n if (!cancelled) {\n setOutlineItems(EMPTY_OUTLINE);\n }\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [document]);\n return outlineItems;\n}\nasync function resolveBookmarkOutline(document, outline) {\n const items = [];\n const resolveItems = async (nodes, depth) => {\n for (const node of nodes) {\n let pageNumber = 1;\n try {\n if (typeof node.dest === \"string\") {\n const dest = await document.getDestination(node.dest);\n if (dest != null) {\n const pageIndex = await document.getPageIndex(dest[0]);\n pageNumber = pageIndex + 1;\n }\n } else if (Array.isArray(node.dest) && node.dest.length > 0) {\n const pageIndex = await document.getPageIndex(node.dest[0]);\n pageNumber = pageIndex + 1;\n }\n } catch {\n // If destination resolution fails, default to page 1\n }\n items.push({\n title: node.title,\n depth,\n pageNumber,\n bold: node.bold,\n italic: node.italic\n });\n if (node.items.length > 0) {\n await resolveItems(node.items, depth + 1);\n }\n }\n };\n await resolveItems(outline, 0);\n return items;\n}\nfunction isTextItem(item) {\n return \"str\" in item && \"transform\" in item;\n}\nfunction roundFontSize(size) {\n return Math.round(size * 10) / 10;\n}\n\n/**\n * Extract the font size from a pdfjs TextItem.\n * Prefer `height` when available, otherwise derive from the transform matrix.\n * The transform is [scaleX, skewY, skewX, scaleY, translateX, translateY].\n * Font size = sqrt(skewX² + scaleY²), which handles rotated text too.\n */\nfunction getFontSize(item) {\n if (item.height > 0) {\n return item.height;\n }\n const transform = item.transform;\n if (Array.isArray(transform) && transform.length >= 4) {\n return Math.sqrt(transform[2] * transform[2] + transform[3] * transform[3]);\n }\n return 0;\n}\nasync function extractHeadingsFromText(document) {\n const numPages = document.numPages;\n\n // Fetch all pages' text content in parallel\n const pageContents = await Promise.all(Array.from({\n length: numPages\n }, (_, i) => document.getPage(i + 1).then(page => page.getTextContent())));\n\n // Collect font size frequencies across all pages\n const sizeCounts = new Map();\n for (const textContent of pageContents) {\n for (const rawItem of textContent.items) {\n const item = rawItem;\n if (!isTextItem(item) || item.str.trim().length === 0) {\n continue;\n }\n const fontSize = getFontSize(item);\n if (fontSize > 0) {\n const rounded = roundFontSize(fontSize);\n sizeCounts.set(rounded, (sizeCounts.get(rounded) ?? 0) + 1);\n }\n }\n }\n\n // Find the most common font size (body text)\n let bodySize = 0;\n let maxCount = 0;\n for (const [size, count] of sizeCounts) {\n if (count > maxCount) {\n maxCount = count;\n bodySize = size;\n }\n }\n if (bodySize === 0) {\n return [];\n }\n\n // Heading threshold: text significantly larger than body text\n const headingThreshold = bodySize * OUTLINE_HEADING_SIZE_RATIO;\n\n // Collect all unique heading sizes above threshold\n const headingSizes = new Set();\n for (const [size] of sizeCounts) {\n if (size >= headingThreshold) {\n headingSizes.add(size);\n }\n }\n if (headingSizes.size === 0) {\n return [];\n }\n\n // Sort heading sizes descending (largest = depth 0)\n const sortedSizes = [...headingSizes].sort((a, b) => b - a);\n const sizeToDepth = new Map();\n for (let i = 0; i < sortedSizes.length; i++) {\n sizeToDepth.set(sortedSizes[i], i);\n }\n\n // Extract headings with page numbers.\n // pdfjs splits visual lines into multiple TextItems (e.g. \"1.\" and\n // \"Introduction\" are separate items). We accumulate all items on the\n // same visual line and treat the line as a heading if most of its\n // content is at a heading font size.\n const candidateHeadings = [];\n for (let pageIdx = 0; pageIdx < pageContents.length; pageIdx++) {\n const textContent = pageContents[pageIdx];\n const pageNumber = pageIdx + 1;\n let lineItems = [];\n let linePageNumber = pageNumber;\n let lineFontName = \"\";\n let lineHeadingFontSize = 0;\n let lastFlushWasHeading = false;\n const flushLine = () => {\n if (lineItems.length === 0) return;\n\n // Check if the majority of the line's non-whitespace content is heading-sized\n let headingChars = 0;\n let totalChars = 0;\n for (const li of lineItems) {\n const len = li.text.trim().length;\n totalChars += len;\n if (sizeToDepth.has(roundFontSize(li.fontSize))) {\n headingChars += len;\n }\n }\n if (totalChars > 0 && headingChars / totalChars > 0.5) {\n const fullText = lineItems.map(li => li.text).join(\"\").trim();\n if (fullText.length > 0) {\n candidateHeadings.push({\n text: fullText,\n fontSize: lineHeadingFontSize,\n pageNumber: linePageNumber,\n fontName: lineFontName,\n contiguous: lastFlushWasHeading\n });\n }\n lastFlushWasHeading = true;\n } else {\n lastFlushWasHeading = false;\n }\n lineItems = [];\n lineHeadingFontSize = 0;\n };\n for (const rawItem of textContent.items) {\n const item = rawItem;\n if (!isTextItem(item)) {\n continue;\n }\n const fontSize = getFontSize(item);\n const rounded = roundFontSize(fontSize);\n const isHeadingSized = sizeToDepth.has(rounded);\n if (isHeadingSized && lineHeadingFontSize === 0) {\n lineHeadingFontSize = rounded;\n linePageNumber = pageNumber;\n lineFontName = item.fontName;\n }\n if (lineHeadingFontSize > 0) {\n lineItems.push({\n text: item.str,\n fontSize\n });\n }\n if (item.hasEOL) {\n flushLine();\n }\n }\n\n // Flush remaining items at end of page\n flushLine();\n }\n\n // Merge consecutive heading lines that were contiguous (no body text between them)\n // and at the same font size. This joins multi-line titles that wrap in the PDF.\n const mergedHeadings = [];\n for (const heading of candidateHeadings) {\n const prev = mergedHeadings[mergedHeadings.length - 1];\n if (prev != null && heading.contiguous && Math.abs(prev.fontSize - heading.fontSize) < 0.1) {\n prev.text += \" \" + heading.text;\n } else {\n mergedHeadings.push({\n ...heading\n });\n }\n }\n return mergedHeadings.filter(heading => heading.text.trim().length <= OUTLINE_MAX_HEADING_LENGTH).map(heading => ({\n title: heading.text.trim(),\n depth: sizeToDepth.get(heading.fontSize) ?? 0,\n pageNumber: heading.pageNumber,\n bold: false,\n italic: false\n }));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from \"react\";\nimport { PAGE_RENDERED_EVENT } from \"../constants.js\";\nexport function usePdfAnnotationPortals(pdfViewerRef, eventBusRef, document) {\n const [portalTargets, setPortalTargets] = useState([]);\n useEffect(function subscribePageRendered() {\n const eventBus = eventBusRef.current;\n const pdfViewer = pdfViewerRef.current;\n if (eventBus == null || pdfViewer == null) {\n return;\n }\n const handlePageRendered = evt => {\n const pageIndex = evt.pageNumber - 1;\n const pageView = pdfViewer.getPageView(pageIndex);\n if (pageView?.div == null || pageView?.viewport == null) {\n return;\n }\n const viewport = pageView.viewport;\n setPortalTargets(prev => {\n // Replace existing entry for this page or add new one\n const filtered = prev.filter(t => t.pageNumber !== evt.pageNumber);\n return [...filtered, {\n pageNumber: evt.pageNumber,\n container: pageView.div,\n pageHeight: viewport.viewBox[3],\n // viewBox is [xMin, yMin, width, height] and we need the original height before scaling\n scale: viewport.scale\n }].sort((a, b) => a.pageNumber - b.pageNumber);\n });\n };\n eventBus.on(PAGE_RENDERED_EVENT, handlePageRendered);\n return () => {\n eventBus.off(PAGE_RENDERED_EVENT, handlePageRendered);\n setPortalTargets([]);\n };\n }, [eventBusRef, pdfViewerRef, document]);\n return portalTargets;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getDocument, GlobalWorkerOptions } from \"pdfjs-dist\";\nconst pdfWorkerUrl = new URL(\"pdfjs-dist/build/pdf.worker.min.mjs\", import.meta.url);\nimport { useEffect, useState } from \"react\";\nconst pdfWorker = {\n workerInitialized: false,\n ensureWorker() {\n GlobalWorkerOptions.workerSrc = pdfWorkerUrl.href;\n this.workerInitialized = true;\n }\n};\nexport function usePdfDocument(src) {\n const [document, setDocument] = useState(undefined);\n const [numPages, setNumPages] = useState(0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(undefined);\n useEffect(function loadPdfDocument() {\n pdfWorker.ensureWorker();\n setLoading(true);\n setError(undefined);\n const loadingTask = getDocument(typeof src === \"string\" ? {\n url: src\n } : {\n data: src\n });\n let cancelled = false;\n loadingTask.promise.then(pdf => {\n if (!cancelled) {\n setDocument(pdf);\n setNumPages(pdf.numPages);\n setLoading(false);\n }\n }, err => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n void loadingTask.destroy();\n };\n }, [src]);\n return {\n document,\n numPages,\n loading,\n error\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType } from \"pdfjs-dist\";\nimport { EventBus, PDFFindController, PDFLinkService, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport { useEffect, useRef } from \"react\";\nimport { PAGES_LOADED_EVENT } from \"../constants.js\";\nexport function usePdfViewer(containerRef, viewerRef, document, initialScale, initialPage) {\n const pdfViewerRef = useRef(null);\n const eventBusRef = useRef(null);\n const findControllerRef = useRef(null);\n useEffect(function initializePdfViewer() {\n const container = containerRef.current;\n const viewer = viewerRef.current;\n if (container == null || viewer == null || document == null) {\n return;\n }\n const eventBus = new EventBus();\n const linkService = new PDFLinkService({\n eventBus\n });\n const findController = new PDFFindController({\n linkService,\n eventBus,\n updateMatchesCountOnProgress: true\n });\n const pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n linkService,\n findController,\n removePageBorders: true,\n annotationEditorMode: AnnotationEditorType.NONE,\n annotationEditorHighlightColors: \"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\"\n });\n linkService.setViewer(pdfViewer);\n linkService.setDocument(document);\n findController.setDocument(document);\n pdfViewer.setDocument(document);\n\n // Apply initial scale and page after pages are loaded to avoid\n // \"scrollPageIntoView: not a valid pageNumber\" console errors.\n const onPagesLoaded = () => {\n if (initialScale != null) {\n pdfViewer.currentScale = initialScale;\n }\n if (initialPage != null && initialPage > 1) {\n pdfViewer.currentPageNumber = initialPage;\n pdfViewer.scrollPageIntoView({\n pageNumber: initialPage\n });\n }\n eventBus.off(PAGES_LOADED_EVENT, onPagesLoaded);\n };\n eventBus.on(PAGES_LOADED_EVENT, onPagesLoaded);\n eventBusRef.current = eventBus;\n findControllerRef.current = findController;\n pdfViewerRef.current = pdfViewer;\n return () => {\n pdfViewerRef.current = null;\n eventBusRef.current = null;\n findControllerRef.current = null;\n pdfViewer.cleanup();\n };\n }, [containerRef, viewerRef, document]);\n return {\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { PAGE_CHANGING_EVENT, SCALE_CHANGING_EVENT } from \"../constants.js\";\nexport function usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n document,\n scale,\n onScaleChange,\n onPageChange\n}) {\n const lastScaleRef = useRef(scale);\n\n // Sync React scale → PDFViewer\n useEffect(function syncScaleToViewer() {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer == null) {\n return;\n }\n if (Math.abs(lastScaleRef.current - scale) > 0.001) {\n lastScaleRef.current = scale;\n pdfViewer.currentScale = scale;\n }\n }, [pdfViewerRef, scale]);\n\n // Listen to PDFViewer events → React state\n useEffect(function subscribeViewerEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n const handlePageChanging = evt => {\n onPageChange(evt.pageNumber);\n };\n const handleScaleChanging = evt => {\n lastScaleRef.current = evt.scale;\n onScaleChange(evt.scale);\n };\n eventBus.on(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.on(SCALE_CHANGING_EVENT, handleScaleChanging);\n return () => {\n eventBus.off(PAGE_CHANGING_EVENT, handlePageChanging);\n eventBus.off(SCALE_CHANGING_EVENT, handleScaleChanging);\n };\n }, [eventBusRef, document, onPageChange, onScaleChange]);\n const scrollToPage = useCallback(page => {\n const pdfViewer = pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.currentPageNumber = page;\n }\n }, [pdfViewerRef]);\n return {\n scrollToPage\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport { usePdfAnnotationPortals } from \"./usePdfAnnotationPortals.js\";\nimport { usePdfDocument } from \"./usePdfDocument.js\";\nimport { usePdfViewer } from \"./usePdfViewer.js\";\nimport { usePdfViewerSync } from \"./usePdfViewerSync.js\";\nexport function usePdfViewerCore({\n src,\n initialPage = 1,\n initialScale = 1.0\n}) {\n const {\n document,\n numPages,\n loading,\n error\n } = usePdfDocument(src);\n const [scale, setScale] = useState(initialScale);\n const [currentPage, setCurrentPage] = useState(initialPage);\n const containerRef = useRef(null);\n const viewerRef = useRef(null);\n const {\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n } = usePdfViewer(containerRef, viewerRef, document, initialScale, initialPage);\n const handleScaleChange = useCallback(newScale => {\n setScale(newScale);\n }, []);\n const handlePageChange = useCallback(page => {\n setCurrentPage(page);\n }, []);\n const {\n scrollToPage: syncScrollToPage\n } = usePdfViewerSync({\n pdfViewerRef,\n eventBusRef,\n document,\n scale,\n onScaleChange: handleScaleChange,\n onPageChange: handlePageChange\n });\n const scrollToPage = useCallback(page => {\n setCurrentPage(page);\n syncScrollToPage(page);\n }, [syncScrollToPage]);\n const portalTargets = usePdfAnnotationPortals(pdfViewerRef, eventBusRef, document);\n return useMemo(() => ({\n document,\n numPages,\n loading,\n error,\n containerRef,\n viewerRef,\n currentPage,\n scrollToPage,\n scale,\n setScale,\n portalTargets,\n pdfViewerRef,\n eventBusRef,\n findControllerRef\n }), [document, numPages, loading, error, currentPage, scrollToPage, scale, setScale, portalTargets]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { EMPTY_STRING, FIND_EVENT, UPDATE_FIND_CONTROL_STATE_EVENT, UPDATE_FIND_MATCHES_COUNT_EVENT } from \"../constants.js\";\nexport function usePdfViewerSearch(eventBusRef, findControllerRef, document) {\n const [query, setQueryState] = useState(EMPTY_STRING);\n const [totalMatches, setTotalMatches] = useState(0);\n const [currentMatchIndex, setCurrentMatchIndex] = useState(0);\n const [isSearchOpen, setIsSearchOpen] = useState(false);\n const dispatchFind = useCallback((queryString, findPrevious) => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"\",\n query: queryString,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious\n });\n }, [eventBusRef]);\n const dispatchFindAgain = useCallback(findPrevious => {\n eventBusRef.current?.dispatch(FIND_EVENT, {\n source: undefined,\n type: \"again\",\n query,\n caseSensitive: false,\n highlightAll: true,\n phraseSearch: true,\n findPrevious\n });\n }, [eventBusRef, query]);\n const setQuery = useCallback(input => {\n setQueryState(input);\n if (input === EMPTY_STRING) {\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Dispatch empty query to clear highlights\n dispatchFind(EMPTY_STRING, false);\n return;\n }\n dispatchFind(input, false);\n }, [dispatchFind]);\n const nextMatch = useCallback(() => {\n dispatchFindAgain(false);\n }, [dispatchFindAgain]);\n const prevMatch = useCallback(() => {\n dispatchFindAgain(true);\n }, [dispatchFindAgain]);\n const openSearch = useCallback(() => {\n setIsSearchOpen(true);\n }, []);\n const closeSearch = useCallback(() => {\n setIsSearchOpen(false);\n setQueryState(EMPTY_STRING);\n setTotalMatches(0);\n setCurrentMatchIndex(0);\n // Clear highlights\n dispatchFind(EMPTY_STRING, false);\n }, [dispatchFind]);\n useEffect(function subscribeSearchEvents() {\n const eventBus = eventBusRef.current;\n if (eventBus == null) {\n return;\n }\n const handleMatchesCount = evt => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0);\n };\n const handleControlState = evt => {\n setTotalMatches(evt.matchesCount.total);\n setCurrentMatchIndex(evt.matchesCount.current > 0 ? evt.matchesCount.current - 1 : 0);\n };\n eventBus.on(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.on(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n return () => {\n eventBus.off(UPDATE_FIND_MATCHES_COUNT_EVENT, handleMatchesCount);\n eventBus.off(UPDATE_FIND_CONTROL_STATE_EVENT, handleControlState);\n };\n }, [eventBusRef, findControllerRef, document]);\n return useMemo(() => ({\n query,\n totalMatches,\n currentMatchIndex,\n isSearchOpen,\n setQuery,\n nextMatch,\n prevMatch,\n openSearch,\n closeSearch\n }), [query, totalMatches, currentMatchIndex, isSearchOpen, setQuery, nextMatch, prevMatch, openSearch, closeSearch]);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE, SCALE_STEP } from \"../constants.js\";\nimport { usePdfOutline } from \"./usePdfOutline.js\";\nimport { usePdfViewerCore } from \"./usePdfViewerCore.js\";\nimport { usePdfViewerSearch } from \"./usePdfViewerSearch.js\";\nexport function usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialSidebarOpen = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n onDownload\n}) {\n const core = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const [rotation, setRotation] = useState(0);\n const [sidebarOpen, setSidebarOpen] = useState(initialSidebarOpen);\n const [sidebarMode, setSidebarMode] = useState(sidebarModeProp);\n const search = usePdfViewerSearch(core.eventBusRef, core.findControllerRef, core.document);\n const outlineItems = usePdfOutline(core.document);\n\n // Sync sidebarMode prop changes to state\n useEffect(function syncSidebarMode() {\n setSidebarMode(sidebarModeProp);\n }, [sidebarModeProp]);\n\n // Sync rotation → PDFViewer\n useEffect(function syncRotationToViewer() {\n const pdfViewer = core.pdfViewerRef.current;\n if (pdfViewer != null) {\n pdfViewer.pagesRotation = rotation;\n }\n }, [core.pdfViewerRef, rotation]);\n\n // Ctrl+F keyboard shortcut\n useEffect(function registerSearchShortcut() {\n const handleKeyDown = e => {\n if ((e.ctrlKey || e.metaKey) && e.key === \"f\") {\n e.preventDefault();\n search.openSearch();\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [search.openSearch]);\n const zoomIn = useCallback(() => {\n core.setScale(Math.min(core.scale + SCALE_STEP, MAX_SCALE));\n }, [core.scale, core.setScale]);\n const zoomOut = useCallback(() => {\n core.setScale(Math.max(core.scale - SCALE_STEP, MIN_SCALE));\n }, [core.scale, core.setScale]);\n const rotateLeft = useCallback(() => {\n setRotation(prev => (prev - 90 + 360) % 360);\n }, []);\n const rotateRight = useCallback(() => {\n setRotation(prev => (prev + 90) % 360);\n }, []);\n const toggleSidebar = useCallback(() => {\n setSidebarOpen(prev => !prev);\n }, []);\n const download = useCallback(filename => {\n if (core.document == null) {\n return;\n }\n void core.document.getData().then(data => {\n const blob = new Blob([data.buffer], {\n type: \"application/pdf\"\n });\n const url = URL.createObjectURL(blob);\n const resolvedFilename = resolveDownloadFilename(src, filename);\n const a = globalThis.document.createElement(\"a\");\n a.href = url;\n a.download = resolvedFilename;\n a.click();\n URL.revokeObjectURL(url);\n onDownload?.({\n success: true,\n filename: resolvedFilename\n });\n }).catch(err => {\n onDownload?.({\n success: false,\n error: err instanceof Error ? err : new Error(\"Failed to download PDF\")\n });\n });\n }, [core.document, src, onDownload]);\n return useMemo(() => ({\n ...core,\n zoomIn,\n zoomOut,\n rotation,\n rotateLeft,\n rotateRight,\n sidebarOpen,\n sidebarMode,\n setSidebarMode,\n toggleSidebar,\n search,\n outlineItems,\n download\n }), [core, zoomIn, zoomOut, rotation, rotateLeft, rotateRight, sidebarOpen, sidebarMode, setSidebarMode, toggleSidebar, search, outlineItems, download]);\n}\n\n/** Derive a download filename from an explicit name, the src URL, or a fallback. */\nfunction resolveDownloadFilename(src, filename) {\n if (filename != null) {\n return filename;\n }\n if (typeof src === \"string\") {\n return src.split(\"/\").pop()?.split(\"?\")[0] || \"document.pdf\";\n }\n return \"document.pdf\";\n}",".pdfViewer {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: var(--osdk-pdf-viewer-bg);\n border: var(--osdk-pdf-viewer-border);\n border-radius: var(--osdk-surface-border-radius);\n overflow: hidden;\n position: relative;\n}\n\n.contentArea {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n}\n\n.scrollContainerWrapper {\n flex: 1;\n position: relative;\n overflow: hidden;\n}\n\n.scrollContainer {\n overflow: auto;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.loadingContainer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-muted);\n}\n\n.errorContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-surface-spacing);\n height: 100%;\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n color: var(--osdk-typography-color-danger-rest);\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinnerIcon {\n animation: spin 1s linear infinite;\n color: var(--osdk-typography-color-muted);\n}\n\n.errorIcon {\n flex-shrink: 0;\n}\n\n/* PDFViewer page overrides */\n:global(.pdfViewer .page) {\n box-shadow: var(--osdk-pdf-viewer-page-shadow);\n background-color: var(--osdk-palette-white);\n margin: 0 auto var(--osdk-pdf-viewer-page-gap);\n}\n\n/* Search highlight overrides — match pdf.js FindController CSS classes */\n:global(.textLayer) .highlight {\n background-color: var(--osdk-pdf-viewer-search-highlight);\n border-radius: 1px;\n}\n\n:global(.textLayer) .highlight.selected {\n background-color: var(--osdk-pdf-viewer-search-active);\n}\n\n:global(.textLayer)::selection {\n background: var(--osdk-intent-primary-rest);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { forwardRef, useImperativeHandle } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { PdfViewerAnnotationLayer } from \"./components/PdfViewerAnnotationLayer.js\";\nimport { PdfViewerOutlineSidebar } from \"./components/PdfViewerOutlineSidebar.js\";\nimport { PdfViewerSearchBar } from \"./components/PdfViewerSearchBar.js\";\nimport { PdfViewerSidebar } from \"./components/PdfViewerSidebar.js\";\nimport { PdfViewerToolbar } from \"./components/PdfViewerToolbar.js\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\nimport styles from \"./PdfViewer.module.css\";\nexport const BasePdfViewer = /*#__PURE__*/forwardRef(function BasePdfViewer({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n onDownload,\n enableHighlight = false,\n onTextHighlight,\n onHighlightDelete,\n formData,\n onFormSubmit,\n onFormChange,\n initialPage = 1,\n initialScale = 1.0,\n initialSidebarOpen = false,\n enableDownload = false,\n sidebarMode: sidebarModeProp = \"thumbnails\",\n outlineIcons,\n className\n}, ref) {\n const viewer = usePdfViewerState({\n src,\n initialPage,\n initialScale,\n initialSidebarOpen,\n sidebarMode: sidebarModeProp,\n onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode,\n deleteHighlight\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: enableHighlight,\n onTextHighlight,\n onHighlightDelete\n });\n useImperativeHandle(ref, () => ({\n scrollToPage: viewer.scrollToPage,\n deleteHighlight\n }), [viewer.scrollToPage, deleteHighlight]);\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormSubmit,\n onFormChange\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(PdfViewerToolbar, {\n currentPage: viewer.currentPage,\n numPages: viewer.numPages,\n scale: viewer.scale,\n sidebarOpen: viewer.sidebarOpen,\n onPageChange: viewer.scrollToPage,\n onScaleChange: viewer.setScale,\n onSearchOpen: viewer.search.openSearch,\n onSidebarToggle: viewer.toggleSidebar,\n onDownload: viewer.download,\n enableDownload: enableDownload,\n onRotateLeft: viewer.rotateLeft,\n onRotateRight: viewer.rotateRight,\n enableHighlight: enableHighlight,\n highlightModeActive: highlightModeActive,\n onHighlightToggle: toggleHighlightMode,\n enableFormSave: onFormSubmit != null && hasFormFields,\n onFormSave: submitFormData\n }), viewer.search.isSearchOpen && /*#__PURE__*/React.createElement(PdfViewerSearchBar, {\n query: viewer.search.query,\n totalMatches: viewer.search.totalMatches,\n currentMatchIndex: viewer.search.currentMatchIndex,\n onQueryChange: viewer.search.setQuery,\n onNext: viewer.search.nextMatch,\n onPrev: viewer.search.prevMatch,\n onClose: viewer.search.closeSearch\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.contentArea\n }, viewer.sidebarOpen && viewer.sidebarMode === \"thumbnails\" && /*#__PURE__*/React.createElement(PdfViewerSidebar, {\n document: viewer.document,\n numPages: viewer.numPages,\n currentPage: viewer.currentPage,\n onPageClick: viewer.scrollToPage,\n sidebarMode: viewer.sidebarMode,\n onSidebarModeChange: viewer.setSidebarMode\n }), viewer.sidebarOpen && viewer.sidebarMode === \"outline\" && /*#__PURE__*/React.createElement(PdfViewerOutlineSidebar, {\n outlineItems: viewer.outlineItems,\n currentPage: viewer.currentPage,\n onItemClick: viewer.scrollToPage,\n sidebarMode: viewer.sidebarMode,\n onSidebarModeChange: viewer.setSidebarMode,\n outlineIcons: outlineIcons\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(PdfViewerAnnotationLayer, {\n key: target.pageNumber,\n annotations: pageAnnotations,\n pageHeight: target.pageHeight,\n scale: target.scale,\n onAnnotationClick: onAnnotationClick\n }), target.container);\n })))));\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport \"pdfjs-dist/web/pdf_viewer.css\";\nimport React, { useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"../constants.js\";\nimport { usePdfAnnotationsByPage } from \"../hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"../hooks/usePdfFormFields.js\";\nimport { usePdfViewerCore } from \"../hooks/usePdfViewerCore.js\";\nimport styles from \"../PdfViewer.module.css\";\nimport { PdfViewerAnnotationLayer } from \"./PdfViewerAnnotationLayer.js\";\nexport function PdfViewerContent({\n src,\n annotations = EMPTY_ANNOTATION_ARRAY,\n onAnnotationClick,\n initialPage = 1,\n initialScale = 1.0,\n onPageChange: onPageChangeProp,\n onScaleChange: onScaleChangeProp,\n formData,\n onFormChange,\n className\n}) {\n const viewer = usePdfViewerCore({\n src,\n initialPage,\n initialScale\n });\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData,\n onFormChange\n });\n\n // Use refs for callbacks to avoid firing on initial mount\n const onPageChangeRef = useRef(onPageChangeProp);\n onPageChangeRef.current = onPageChangeProp;\n const onScaleChangeRef = useRef(onScaleChangeProp);\n onScaleChangeRef.current = onScaleChangeProp;\n const isInitialMountRef = useRef(true);\n useEffect(function notifyPageChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onPageChangeRef.current?.(viewer.currentPage);\n }, [viewer.currentPage]);\n useEffect(function notifyScaleChange() {\n if (isInitialMountRef.current) {\n return;\n }\n onScaleChangeRef.current?.(viewer.scale);\n }, [viewer.scale]);\n useEffect(function clearInitialMount() {\n isInitialMountRef.current = false;\n }, []);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (viewer.loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (viewer.error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", viewer.error.message));\n }\n if (viewer.document == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.scrollContainerWrapper\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.containerRef,\n className: styles.scrollContainer\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: viewer.viewerRef,\n className: \"pdfViewer\"\n }), viewer.portalTargets.map(target => {\n const pageAnnotations = annotationsByPage[target.pageNumber] ?? EMPTY_ANNOTATION_ARRAY;\n if (pageAnnotations.length === 0) {\n return null;\n }\n return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement(PdfViewerAnnotationLayer, {\n key: target.pageNumber,\n annotations: pageAnnotations,\n pageHeight: target.pageHeight,\n scale: target.scale,\n onAnnotationClick: onAnnotationClick\n }), target.container);\n }))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport { EMPTY_ANNOTATION_ARRAY } from \"./constants.js\";\nimport { usePdfAnnotationsByPage } from \"./hooks/usePdfAnnotationsByPage.js\";\nimport { usePdfFormFields } from \"./hooks/usePdfFormFields.js\";\nimport { usePdfHighlightMode } from \"./hooks/usePdfHighlightMode.js\";\nimport { usePdfViewerState } from \"./hooks/usePdfViewerState.js\";\n\n/** The shape of the value provided by {@link PdfViewerProvider}. */\n\nconst PdfViewerContext = /*#__PURE__*/createContext(null);\n/** Provides {@link PdfViewerContextValue} to descendant components. */\nexport function PdfViewerProvider({\n value,\n children\n}) {\n return /*#__PURE__*/React.createElement(PdfViewerContext.Provider, {\n value: value\n }, children);\n}\n\n/**\n * Returns the nearest {@link PdfViewerContextValue} from a {@link PdfViewerProvider}.\n * Throws if called outside a provider.\n */\nexport function usePdfViewerContext() {\n const ctx = useContext(PdfViewerContext);\n if (ctx == null) {\n throw new Error(\"usePdfViewerContext must be used within a PdfViewerProvider\");\n }\n return ctx;\n}\n\n/**\n * Consumer-facing setup hook analogous to react-hook-form's `useForm()`.\n * Accepts viewer options and returns a {@link PdfViewerContextValue} suitable\n * for passing to {@link PdfViewerProvider}.\n */\nexport function usePdfViewerInstance(options) {\n const viewer = usePdfViewerState({\n src: options.src,\n initialPage: options.initialPage,\n initialScale: options.initialScale,\n initialSidebarOpen: options.initialSidebarOpen,\n sidebarMode: options.sidebarMode,\n onDownload: options.onDownload\n });\n const {\n highlightModeActive,\n toggleHighlightMode\n } = usePdfHighlightMode({\n pdfViewerRef: viewer.pdfViewerRef,\n document: viewer.document,\n enabled: options.highlightEnabled ?? false,\n onTextHighlight: options.onTextHighlight,\n onHighlightDelete: options.onHighlightDelete\n });\n const {\n hasFormFields,\n submitFormData\n } = usePdfFormFields({\n pdfViewerRef: viewer.pdfViewerRef,\n eventBusRef: viewer.eventBusRef,\n document: viewer.document,\n formData: options.formData,\n onFormSubmit: options.onFormSubmit,\n onFormChange: options.onFormChange\n });\n const annotations = options.annotations ?? EMPTY_ANNOTATION_ARRAY;\n const annotationsByPage = usePdfAnnotationsByPage(annotations);\n const highlightEnabled = options.highlightEnabled ?? false;\n const enableDownload = options.enableDownload ?? false;\n const enableFormSave = options.onFormSubmit != null && hasFormFields;\n const {\n onAnnotationClick,\n outlineIcons\n } = options;\n return useMemo(() => ({\n ...viewer,\n highlightEnabled,\n highlightModeActive,\n toggleHighlightMode,\n hasFormFields,\n submitFormData,\n annotations,\n annotationsByPage,\n onAnnotationClick,\n enableDownload,\n enableFormSave,\n outlineIcons\n }), [viewer, highlightEnabled, highlightModeActive, toggleHighlightMode, hasFormFields, submitFormData, annotations, annotationsByPage, onAnnotationClick, enableDownload, enableFormSave, outlineIcons]);\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon, Spin } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useEffect, useState } from \"react\";\nimport { BasePdfViewer } from \"./PdfViewer.js\";\nimport styles from \"./PdfViewer.module.css\";\nasync function fetchMediaContents(media) {\n const result = await media.fetchContents();\n return result.arrayBuffer();\n}\nexport function PdfViewer({\n media,\n className,\n ...pdfViewerProps\n}) {\n const [src, setSrc] = useState(undefined);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(undefined);\n\n // This is required until we either support React 19+ or a data fetching hook\n useEffect(function fetchMediaSource() {\n let cancelled = false;\n setLoading(true);\n setError(undefined);\n setSrc(undefined);\n fetchMediaContents(media).then(buffer => {\n if (!cancelled) {\n setSrc(buffer);\n setLoading(false);\n }\n }).catch(err => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [media]);\n const rootClassName = classnames(styles.pdfViewer, className);\n if (loading) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, /*#__PURE__*/React.createElement(Spin, {\n className: styles.spinnerIcon\n }), \"Loading\\u2026\"));\n }\n if (error != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.errorContainer\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n className: styles.errorIcon\n }), \"Failed to load PDF: \", error.message));\n }\n if (src == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: rootClassName\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.loadingContainer\n }, \"No document\"));\n }\n return /*#__PURE__*/React.createElement(BasePdfViewer, _extends({\n src: src,\n className: className\n }, pdfViewerProps));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// PdfViewer\nexport { BasePdfViewer } from \"../../pdf-viewer/PdfViewer.js\";\n// PdfViewer building blocks\nexport { PdfViewerAnnotationLayer } from \"../../pdf-viewer/components/PdfViewerAnnotationLayer.js\";\nexport { PdfViewerContent } from \"../../pdf-viewer/components/PdfViewerContent.js\";\nexport { PdfViewerOutlineSidebar } from \"../../pdf-viewer/components/PdfViewerOutlineSidebar.js\";\nexport { PdfViewerSearchBar } from \"../../pdf-viewer/components/PdfViewerSearchBar.js\";\nexport { PdfViewerSidebar } from \"../../pdf-viewer/components/PdfViewerSidebar.js\";\nexport { PdfViewerToolbar } from \"../../pdf-viewer/components/PdfViewerToolbar.js\";\n\n// PdfViewer hooks — primitive\nexport { usePdfAnnotationPortals } from \"../../pdf-viewer/hooks/usePdfAnnotationPortals.js\";\nexport { usePdfAnnotationsByPage } from \"../../pdf-viewer/hooks/usePdfAnnotationsByPage.js\";\nexport { usePdfDocument } from \"../../pdf-viewer/hooks/usePdfDocument.js\";\nexport { usePdfFormFields } from \"../../pdf-viewer/hooks/usePdfFormFields.js\";\nexport { usePdfHighlightMode } from \"../../pdf-viewer/hooks/usePdfHighlightMode.js\";\nexport { usePdfOutline } from \"../../pdf-viewer/hooks/usePdfOutline.js\";\nexport { usePdfViewer } from \"../../pdf-viewer/hooks/usePdfViewer.js\";\nexport { usePdfViewerSearch } from \"../../pdf-viewer/hooks/usePdfViewerSearch.js\";\nexport { usePdfViewerSync } from \"../../pdf-viewer/hooks/usePdfViewerSync.js\";\n// PdfViewer context\nexport { PdfViewerProvider, usePdfViewerContext, usePdfViewerInstance } from \"../../pdf-viewer/PdfViewerContext.js\";\n// PdfViewer hooks — composition\nexport { usePdfViewerCore } from \"../../pdf-viewer/hooks/usePdfViewerCore.js\";\nexport { usePdfViewerState } from \"../../pdf-viewer/hooks/usePdfViewerState.js\";\n\n// PdfViewer (Media wrapper)\nimport { PdfViewer as _PdfViewer } from \"../../pdf-viewer/PdfRenderer.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const PdfViewer = withOsdkMetrics(_PdfViewer, \"PdfViewer\");"]}