@osdk/react-components 0.34.0 → 0.34.1-main-e39a72892d538f3130e2cd51cee05d83d11fa493
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/build/browser/action-form/ActionForm.js.map +1 -1
- package/build/browser/action-form/ActionFormApi.js.map +1 -1
- package/build/browser/action-form/BaseForm.js +3 -3
- package/build/browser/action-form/BaseForm.js.map +1 -1
- package/build/browser/action-form/FormField.js.map +1 -1
- package/build/browser/action-form/FormFieldApi.js.map +1 -1
- package/build/browser/action-form/FormHeader.js.map +1 -1
- package/build/browser/action-form/FormSection.js.map +1 -1
- package/build/browser/action-form/fields/AsyncDropdownField.js +1 -1
- package/build/browser/action-form/fields/AsyncDropdownField.js.map +1 -1
- package/build/browser/action-form/fields/CustomField.js.map +1 -1
- package/build/browser/action-form/fields/DropdownField.js +2 -2
- package/build/browser/action-form/fields/DropdownField.js.map +1 -1
- package/build/browser/action-form/fields/FieldBridge.js.map +1 -1
- package/build/browser/action-form/fields/FilePickerField.js.map +1 -1
- package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/browser/action-form/fields/NumberInputField.js.map +1 -1
- package/build/browser/action-form/fields/ObjectSelectField.js.map +1 -1
- package/build/browser/action-form/fields/ObjectSetField.js.map +1 -1
- package/build/browser/action-form/fields/RadioButtonsField.js.map +1 -1
- package/build/browser/action-form/fields/SwitchField.js.map +1 -1
- package/build/browser/action-form/fields/TextAreaField.js.map +1 -1
- package/build/browser/action-form/fields/TextInputField.js.map +1 -1
- package/build/browser/action-form/utils/coerceFieldValue.js.map +1 -1
- package/build/browser/action-form/utils/extractValidationRules.js.map +1 -1
- package/build/browser/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
- package/build/browser/aip-agent-chat/AipAgentChat.js.map +1 -1
- package/build/browser/aip-agent-chat/BaseAipAgentChat.js +1 -1
- package/build/browser/aip-agent-chat/BaseAipAgentChat.js.map +1 -1
- package/build/browser/aip-agent-chat/components/AipAgentChatComposer.js.map +1 -1
- package/build/browser/aip-agent-chat/components/AipAgentChatLoader.js.map +1 -1
- package/build/browser/aip-agent-chat/components/AipAgentChatMessage.js.map +1 -1
- package/build/browser/aip-agent-chat/components/AipAgentChatMessageList.js +1 -1
- package/build/browser/aip-agent-chat/components/AipAgentChatMessageList.js.map +1 -1
- package/build/browser/aip-agent-chat/components/AipAgentChatModelPicker.js.map +1 -1
- package/build/browser/aip-agent-chat/hooks/useChatAutoScroll.js.map +1 -1
- package/build/browser/base-components/action-button/ActionButton.js.map +1 -1
- package/build/browser/base-components/callout/Callout.js.map +1 -1
- package/build/browser/base-components/checkbox/Checkbox.js.map +1 -1
- package/build/browser/base-components/combobox/Combobox.js.map +1 -1
- package/build/browser/base-components/dialog/Dialog.js.map +1 -1
- package/build/browser/base-components/draggable-list/DraggableList.js +1 -1
- package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -1
- package/build/browser/base-components/icon/BlueprintIcon.js.map +1 -1
- package/build/browser/base-components/search-bar/SearchBar.js.map +1 -1
- package/build/browser/base-components/searchable-menu/SearchableMenu.js.map +1 -1
- package/build/browser/base-components/select/Select.js.map +1 -1
- package/build/browser/base-components/skeleton/SkeletonBar.js.map +1 -1
- package/build/browser/base-components/switch/Switch.js.map +1 -1
- package/build/browser/base-components/tooltip/Tooltip.js.map +1 -1
- package/build/browser/cbac-picker/CbacBanner.js.map +1 -1
- package/build/browser/cbac-picker/CbacBannerPopover.js.map +1 -1
- package/build/browser/cbac-picker/CbacPicker.js.map +1 -1
- package/build/browser/cbac-picker/CbacPickerDialog.js.map +1 -1
- package/build/browser/cbac-picker/base/BaseCbacBanner.js.map +1 -1
- package/build/browser/cbac-picker/base/BaseCbacBannerPopover.js.map +1 -1
- package/build/browser/cbac-picker/base/BaseCbacPicker.js +1 -1
- package/build/browser/cbac-picker/base/BaseCbacPicker.js.map +1 -1
- package/build/browser/cbac-picker/base/BaseCbacPickerDialog.js.map +1 -1
- package/build/browser/cbac-picker/base/CategoryMarkingGroup.js +1 -1
- package/build/browser/cbac-picker/base/CategoryMarkingGroup.js.map +1 -1
- package/build/browser/cbac-picker/base/CbacPickerDialogFooter.js.map +1 -1
- package/build/browser/cbac-picker/base/InfoBanner.js.map +1 -1
- package/build/browser/cbac-picker/base/MarkingButton.js +1 -1
- package/build/browser/cbac-picker/base/MarkingButton.js.map +1 -1
- package/build/browser/cbac-picker/base/MaxClassificationField.js.map +1 -1
- package/build/browser/cbac-picker/base/OverflowButton.js +1 -1
- package/build/browser/cbac-picker/base/OverflowButton.js.map +1 -1
- package/build/browser/cbac-picker/base/OverflowItem.js +1 -1
- package/build/browser/cbac-picker/base/OverflowItem.js.map +1 -1
- package/build/browser/cbac-picker/base/ValidationWarning.js.map +1 -1
- package/build/browser/cbac-picker/base/selectionStateHelpers.js.map +1 -1
- package/build/browser/cbac-picker/useCbacPickerState.js.map +1 -1
- package/build/browser/cbac-picker/useCbacSelection.js.map +1 -1
- package/build/browser/cbac-picker/useConstraintCallout.js.map +1 -1
- package/build/browser/cbac-picker/utils/cbacPickerUtils.js.map +1 -1
- package/build/browser/cbac-picker/utils/errorMessages.js.map +1 -1
- package/build/browser/cbac-picker/utils/selectionLogic.js.map +1 -1
- package/build/browser/cbac-picker/utils/validationMessages.js.map +1 -1
- package/build/browser/document-viewer/DocumentViewer.js +1 -1
- package/build/browser/document-viewer/DocumentViewer.js.map +1 -1
- package/build/browser/document-viewer/DocumentViewerApi.js.map +1 -1
- package/build/browser/document-viewer/TiffDocumentViewer.js +1 -1
- package/build/browser/document-viewer/TiffDocumentViewer.js.map +1 -1
- package/build/browser/document-viewer/hooks/useTiffToPdf.js.map +1 -1
- package/build/browser/email-viewer/BaseEmailViewer.js.map +1 -1
- package/build/browser/email-viewer/EmailViewer.js +1 -1
- package/build/browser/email-viewer/EmailViewer.js.map +1 -1
- package/build/browser/email-viewer/EmailViewerApi.js.map +1 -1
- package/build/browser/email-viewer/parseEmail.js.map +1 -1
- package/build/browser/excel-viewer/BaseExcelViewer.js +1 -0
- package/build/browser/excel-viewer/BaseExcelViewer.js.map +1 -1
- package/build/browser/excel-viewer/ExcelViewer.js +1 -1
- package/build/browser/excel-viewer/ExcelViewer.js.map +1 -1
- package/build/browser/excel-viewer/ExcelViewerApi.js.map +1 -1
- package/build/browser/excel-viewer/parseSpreadsheet.js.map +1 -1
- package/build/browser/filter-list/FilterInput.js.map +1 -1
- package/build/browser/filter-list/FilterList.js.map +1 -1
- package/build/browser/filter-list/FilterListApi.js.map +1 -1
- package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
- package/build/browser/filter-list/base/AddFilterPopover.js +1 -1
- package/build/browser/filter-list/base/AddFilterPopover.js.map +1 -1
- package/build/browser/filter-list/base/BaseFilterList.js +1 -1
- package/build/browser/filter-list/base/BaseFilterList.js.map +1 -1
- package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -1
- package/build/browser/filter-list/base/ExcludeDropdown.js +1 -1
- package/build/browser/filter-list/base/ExcludeDropdown.js.map +1 -1
- package/build/browser/filter-list/base/FilterInputExcludeRow.js.map +1 -1
- package/build/browser/filter-list/base/FilterListContent.js +1 -1
- package/build/browser/filter-list/base/FilterListContent.js.map +1 -1
- package/build/browser/filter-list/base/FilterListHeader.js.map +1 -1
- package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
- package/build/browser/filter-list/base/FilterPopover.js.map +1 -1
- package/build/browser/filter-list/base/SortableFilterListItem.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ContainsTextInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/DateRangeHistogramInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/EmptyStringLabel.js +1 -0
- package/build/browser/filter-list/base/inputs/EmptyStringLabel.js.map +1 -1
- package/build/browser/filter-list/base/inputs/HistogramTooltip.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.js +2 -2
- package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramSkeleton.js.map +1 -1
- package/build/browser/filter-list/base/inputs/MultiDateInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/MultiSelectDropdownLayout.js.map +1 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInlineLayout.js.map +1 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js +2 -2
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/NoValueLabel.js.map +1 -1
- package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
- package/build/browser/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/OptionLabel.js.map +1 -1
- package/build/browser/filter-list/base/inputs/RangeInput.js +1 -1
- package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/SelectInputSkeleton.js.map +1 -1
- package/build/browser/filter-list/base/inputs/SingleDateInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js +1 -1
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ToggleInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/comboboxFilter.js.map +1 -1
- package/build/browser/filter-list/base/inputs/createDateHistogramBuckets.js.map +1 -1
- package/build/browser/filter-list/base/inputs/createHistogramBuckets.js.map +1 -1
- package/build/browser/filter-list/hooks/useDualScopeAggregation.js.map +1 -1
- package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/browser/filter-list/hooks/useFilterPropertyAggregation.js.map +1 -1
- package/build/browser/filter-list/hooks/useFilterVisibility.js.map +1 -1
- package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
- package/build/browser/filter-list/inputs/ContainsTextFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/DateRangeFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/LinkedPropertyInput.js +1 -1
- package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
- package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/MultiDateFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/SingleDateFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/TimelineFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/ToggleFilterInput.js.map +1 -1
- package/build/browser/filter-list/types/CustomRendererTypes.js.map +1 -1
- package/build/browser/filter-list/types/KeywordSearchTypes.js.map +1 -1
- package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/browser/filter-list/types/StaticValuesTypes.js.map +1 -1
- package/build/browser/filter-list/utils/aggregationHelpers.js.map +1 -1
- package/build/browser/filter-list/utils/coerceFilterValue.js.map +1 -1
- package/build/browser/filter-list/utils/emptyFilterDisplayState.js.map +1 -1
- package/build/browser/filter-list/utils/filterStateSerialization.js.map +1 -1
- package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
- package/build/browser/filter-list/utils/filterValues.js.map +1 -1
- package/build/browser/filter-list/utils/getFilterKey.js.map +1 -1
- package/build/browser/filter-list/utils/getFilterLabel.js.map +1 -1
- package/build/browser/filter-list/utils/narrowObjectSet.js.map +1 -1
- package/build/browser/filter-list/utils/summarizeFilterValue.js.map +1 -1
- package/build/browser/images/image-viewer/BaseImageViewer.js.map +1 -1
- package/build/browser/images/image-viewer/ImageViewer.js.map +1 -1
- package/build/browser/images/image-viewer/ImageViewerApi.js.map +1 -1
- package/build/browser/images/tiff-renderer/TiffRenderer.js +1 -0
- package/build/browser/images/tiff-renderer/TiffRenderer.js.map +1 -1
- package/build/browser/images/tiff-renderer/TiffViewerMedia.js.map +1 -1
- package/build/browser/markdown-renderer/MarkdownRenderer.js.map +1 -1
- package/build/browser/markdown-renderer/MarkdownViewerMedia.js.map +1 -1
- package/build/browser/object-table/CellContextMenu.js.map +1 -1
- package/build/browser/object-table/ColumnConfigDialog.js.map +1 -1
- package/build/browser/object-table/DefaultCellRenderer.js +4 -3
- package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
- package/build/browser/object-table/EditableCell.js +1 -1
- package/build/browser/object-table/EditableCell.js.map +1 -1
- package/build/browser/object-table/LoadingCell.js.map +1 -1
- package/build/browser/object-table/LoadingRow.js +1 -1
- package/build/browser/object-table/LoadingRow.js.map +1 -1
- package/build/browser/object-table/LoadingStateTable.js +3 -3
- package/build/browser/object-table/LoadingStateTable.js.map +1 -1
- package/build/browser/object-table/MultiColumnSortDialog.js +1 -1
- package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -1
- package/build/browser/object-table/NonIdealState.js.map +1 -1
- package/build/browser/object-table/ObjectTable.js.map +1 -1
- package/build/browser/object-table/ObjectTableApi.js.map +1 -1
- package/build/browser/object-table/SelectionCells.js.map +1 -1
- package/build/browser/object-table/SortableItemsList.js.map +1 -1
- package/build/browser/object-table/Table.js +1 -1
- package/build/browser/object-table/Table.js.map +1 -1
- package/build/browser/object-table/TableBody.js +1 -1
- package/build/browser/object-table/TableBody.js.map +1 -1
- package/build/browser/object-table/TableCell.js +1 -1
- package/build/browser/object-table/TableCell.js.map +1 -1
- package/build/browser/object-table/TableEditContainer.js.map +1 -1
- package/build/browser/object-table/TableHeader.js +1 -1
- package/build/browser/object-table/TableHeader.js.map +1 -1
- package/build/browser/object-table/TableHeaderContent.js.map +1 -1
- package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -1
- package/build/browser/object-table/TableRow.js.map +1 -1
- package/build/browser/object-table/components/AsyncValueCell.js.map +1 -1
- package/build/browser/object-table/components/CbacMarkingCell.js.map +1 -1
- package/build/browser/object-table/components/DatePickerCellField.js +1 -1
- package/build/browser/object-table/components/DatePickerCellField.js.map +1 -1
- package/build/browser/object-table/components/DropdownCellField.js +1 -1
- package/build/browser/object-table/components/DropdownCellField.js.map +1 -1
- package/build/browser/object-table/components/MandatoryMarkingCell.js.map +1 -1
- package/build/browser/object-table/components/ReadonlyDisplayCell.js.map +1 -1
- package/build/browser/object-table/components/TextInputCellField.js.map +1 -1
- package/build/browser/object-table/hooks/useCellContextMenu.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnPinning.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnResize.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -1
- package/build/browser/object-table/hooks/useEditableTable.js.map +1 -1
- package/build/browser/object-table/hooks/useFocusedRow.js.map +1 -1
- package/build/browser/object-table/hooks/useFunctionColumnsData.js.map +1 -1
- package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
- package/build/browser/object-table/hooks/useObjectTableSnapshot.js.map +1 -1
- package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
- package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
- package/build/browser/object-table/hooks/useTableSorting.js.map +1 -1
- package/build/browser/object-table/utils/AsyncCellData.js.map +1 -1
- package/build/browser/object-table/utils/PortalTracker.js.map +1 -1
- package/build/browser/object-table/utils/deriveSelectionObjectSet.js.map +1 -1
- package/build/browser/object-table/utils/editableUtils.js.map +1 -1
- package/build/browser/object-table/utils/functionColumns.js.map +1 -1
- package/build/browser/object-table/utils/getColumnPinningStyles.js.map +1 -1
- package/build/browser/object-table/utils/getRowId.js.map +1 -1
- package/build/browser/object-table/utils/objectTableSnapshot.js.map +1 -1
- package/build/browser/object-table/utils/shouldShowEditableCell.js.map +1 -1
- package/build/browser/object-table/utils/types.js.map +1 -1
- package/build/browser/pdf-viewer/PdfRenderer.js.map +1 -1
- package/build/browser/pdf-viewer/PdfViewer.js.map +1 -1
- package/build/browser/pdf-viewer/PdfViewerContext.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfAnnotationOverlay.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerContent.js +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerContent.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerOutlineSidebar.js +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerOutlineSidebar.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerSearchBar.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerSidebar.js +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerSidebar.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerSidebarHeader.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerThumbnail.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerToolbar.js.map +1 -1
- package/build/browser/pdf-viewer/constants.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfAnnotationsByPage.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfDocument.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfFormFields.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfHighlightMode.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfOutline.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfViewer.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfViewerCore.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfViewerSearch.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfViewerState.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfViewerSync.js.map +1 -1
- package/build/browser/public/experimental/action-form.js.map +1 -1
- package/build/browser/public/experimental/cbac-picker.js.map +1 -1
- package/build/browser/public/experimental/document-viewer.js.map +1 -1
- package/build/browser/public/experimental/email-viewer.js.map +1 -1
- package/build/browser/public/experimental/excel-viewer.js.map +1 -1
- package/build/browser/public/experimental/filter-list.js.map +1 -1
- package/build/browser/public/experimental/image-viewer.js.map +1 -1
- package/build/browser/public/experimental/markdown-renderer.js.map +1 -1
- package/build/browser/public/experimental/object-table.js.map +1 -1
- package/build/browser/public/experimental/pdf-viewer.js.map +1 -1
- package/build/browser/public/experimental/tiff-renderer.js.map +1 -1
- package/build/browser/public/experimental/video-viewer.js.map +1 -1
- package/build/browser/public/experimental/xml-viewer.js.map +1 -1
- package/build/browser/shared/ErrorBoundary.js.map +1 -1
- package/build/browser/shared/PortalContainerContext.js.map +1 -1
- package/build/browser/shared/PortalDismissLayer.js.map +1 -1
- package/build/browser/shared/calendar/DateCalendar.js +1 -1
- package/build/browser/shared/calendar/DateCalendar.js.map +1 -1
- package/build/browser/shared/calendar/DatePicker.js +2 -2
- package/build/browser/shared/calendar/DatePicker.js.map +1 -1
- package/build/browser/shared/calendar/DateRangeCalendar.js.map +1 -1
- package/build/browser/shared/calendar/DateRangePicker.js +2 -2
- package/build/browser/shared/calendar/DateRangePicker.js.map +1 -1
- package/build/browser/shared/calendar/LazyDateCalendar.js.map +1 -1
- package/build/browser/shared/calendar/LazyDateRangeCalendar.js.map +1 -1
- package/build/browser/shared/calendar/TimePicker.js.map +1 -1
- package/build/browser/shared/calendar/calendarShared.js.map +1 -1
- package/build/browser/shared/calendar/useDateEditState.js.map +1 -1
- package/build/browser/shared/dateUtils.js.map +1 -1
- package/build/browser/shared/hooks/useAsyncAction.js.map +1 -1
- package/build/browser/shared/hooks/useDebouncedValue.js.map +1 -1
- package/build/browser/shared/hooks/useEventCallback.js.map +1 -1
- package/build/browser/shared/hooks/useInfiniteScroll.js.map +1 -1
- package/build/browser/shared/hooks/useMediaContents.js.map +1 -1
- package/build/browser/theme/OsdkThemeContext.js.map +1 -1
- package/build/browser/theme/OsdkThemeProvider.js.map +1 -1
- package/build/browser/theme/useOsdkTheme.js.map +1 -1
- package/build/browser/theme/useSystemTheme.js.map +1 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/browser/util/withOsdkMetrics.js.map +1 -1
- package/build/browser/video-viewer/BaseVideoViewer.js.map +1 -1
- package/build/browser/video-viewer/VideoViewer.js.map +1 -1
- package/build/browser/video-viewer/VideoViewerApi.js.map +1 -1
- package/build/browser/xml-viewer/BaseXmlViewer.js.map +1 -1
- package/build/browser/xml-viewer/XmlViewer.js.map +1 -1
- package/build/browser/xml-viewer/XmlViewerApi.js.map +1 -1
- package/build/cjs/{DateCalendar-OCDSESQR.cjs → DateCalendar-FCZXD24P.cjs} +6 -6
- package/build/cjs/{DateCalendar-OCDSESQR.cjs.map → DateCalendar-FCZXD24P.cjs.map} +1 -1
- package/build/cjs/{DateCalendar-FTW3OIEP.css → DateCalendar-VBZGPZ5P.css} +39 -39
- package/build/cjs/DateCalendar-VBZGPZ5P.css.map +1 -0
- package/build/cjs/{DateRangeCalendar-I4JHCZAK.css → DateRangeCalendar-2M2I5Q3Z.css} +39 -39
- package/build/cjs/DateRangeCalendar-2M2I5Q3Z.css.map +1 -0
- package/build/cjs/DateRangeCalendar-XN2ZWAFK.cjs +12 -0
- package/build/cjs/{DateRangeCalendar-PHC3VPW3.cjs.map → DateRangeCalendar-XN2ZWAFK.cjs.map} +1 -1
- package/build/cjs/{chunk-DA22W6ZO.cjs → chunk-BE226IHU.cjs} +8 -8
- package/build/cjs/chunk-BE226IHU.cjs.map +1 -0
- package/build/cjs/{chunk-XWT6S3FL.cjs → chunk-BFRUHBWM.cjs} +12 -12
- package/build/cjs/{chunk-XWT6S3FL.cjs.map → chunk-BFRUHBWM.cjs.map} +1 -1
- package/build/cjs/chunk-CXMIRPQU.cjs +11 -0
- package/build/cjs/{chunk-PYOEFNQH.cjs.map → chunk-CXMIRPQU.cjs.map} +1 -1
- package/build/cjs/{chunk-CASYBF4M.cjs → chunk-ENE2RWIL.cjs} +25 -23
- package/build/cjs/chunk-ENE2RWIL.cjs.map +1 -0
- package/build/cjs/{chunk-IHVPE5CD.cjs → chunk-G6AOIKDH.cjs} +66 -66
- package/build/cjs/chunk-G6AOIKDH.cjs.map +1 -0
- package/build/cjs/{chunk-U74WOMFV.cjs → chunk-GJ2KJKWI.cjs} +17 -17
- package/build/cjs/{chunk-U74WOMFV.cjs.map → chunk-GJ2KJKWI.cjs.map} +1 -1
- package/build/cjs/chunk-HBU5ZLVP.cjs +11 -0
- package/build/cjs/{chunk-F4JELV7M.cjs.map → chunk-HBU5ZLVP.cjs.map} +1 -1
- package/build/cjs/{chunk-KNZXFIIH.cjs → chunk-HWWTZKC5.cjs} +24 -24
- package/build/cjs/{chunk-KNZXFIIH.cjs.map → chunk-HWWTZKC5.cjs.map} +1 -1
- package/build/cjs/{chunk-YTDSW5OV.cjs → chunk-IHTYJU2F.cjs} +29 -28
- package/build/cjs/chunk-IHTYJU2F.cjs.map +1 -0
- package/build/cjs/{chunk-5KTGUKJT.cjs → chunk-JCN6P3YW.cjs} +4 -4
- package/build/cjs/{chunk-5KTGUKJT.cjs.map → chunk-JCN6P3YW.cjs.map} +1 -1
- package/build/cjs/{chunk-XK4H7EHE.cjs → chunk-KQ4B2XDH.cjs} +5 -5
- package/build/cjs/chunk-KQ4B2XDH.cjs.map +1 -0
- package/build/cjs/{chunk-IISDOJPR.cjs → chunk-LB3IHFAB.cjs} +2 -2
- package/build/cjs/{chunk-IISDOJPR.cjs.map → chunk-LB3IHFAB.cjs.map} +1 -1
- package/build/cjs/{chunk-PUQBJVFU.cjs → chunk-MUDJXY6I.cjs} +22 -22
- package/build/cjs/{chunk-PUQBJVFU.cjs.map → chunk-MUDJXY6I.cjs.map} +1 -1
- package/build/cjs/chunk-NN5IHTYW.cjs +11 -0
- package/build/cjs/{chunk-W6DWGABB.cjs.map → chunk-NN5IHTYW.cjs.map} +1 -1
- package/build/cjs/{chunk-PKJFOG2Z.cjs → chunk-OISZU73V.cjs} +2 -2
- package/build/cjs/{chunk-PKJFOG2Z.cjs.map → chunk-OISZU73V.cjs.map} +1 -1
- package/build/cjs/chunk-PPVWOEYX.cjs +11 -0
- package/build/cjs/{chunk-VRTFHF24.cjs.map → chunk-PPVWOEYX.cjs.map} +1 -1
- package/build/cjs/{chunk-3SJODG6U.cjs → chunk-S2FQCZAB.cjs} +2 -2
- package/build/cjs/{chunk-3SJODG6U.cjs.map → chunk-S2FQCZAB.cjs.map} +1 -1
- package/build/cjs/{chunk-4VNWCW75.cjs → chunk-V3ZJM4N2.cjs} +16 -16
- package/build/cjs/chunk-V3ZJM4N2.cjs.map +1 -0
- package/build/cjs/{chunk-MMPVBH5H.cjs → chunk-VT7TNOMD.cjs} +24 -21
- package/build/cjs/chunk-VT7TNOMD.cjs.map +1 -0
- package/build/cjs/chunk-WKKN2KJU.cjs +11 -0
- package/build/cjs/{chunk-Q5H4KPSL.cjs.map → chunk-WKKN2KJU.cjs.map} +1 -1
- package/build/cjs/{chunk-WE4REEMW.cjs → chunk-YIBSLDUU.cjs} +3 -3
- package/build/cjs/chunk-YIBSLDUU.cjs.map +1 -0
- package/build/cjs/chunk-YK3PUDSD.cjs +11 -0
- package/build/cjs/{chunk-LGGRMQCE.cjs.map → chunk-YK3PUDSD.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +8 -8
- package/build/cjs/public/experimental/action-form.css +98 -98
- package/build/cjs/public/experimental/action-form.css.map +1 -1
- package/build/cjs/public/experimental/aip-agent-chat.cjs +2 -0
- package/build/cjs/public/experimental/aip-agent-chat.cjs.map +1 -1
- package/build/cjs/public/experimental/cbac-picker.cjs +11 -11
- package/build/cjs/public/experimental/cbac-picker.css +110 -110
- package/build/cjs/public/experimental/cbac-picker.css.map +1 -1
- package/build/cjs/public/experimental/document-viewer.cjs +8 -8
- package/build/cjs/public/experimental/document-viewer.css +72 -72
- package/build/cjs/public/experimental/document-viewer.css.map +1 -1
- package/build/cjs/public/experimental/email-viewer.cjs +5 -5
- package/build/cjs/public/experimental/excel-viewer.cjs +5 -5
- package/build/cjs/public/experimental/filter-list.cjs +18 -18
- package/build/cjs/public/experimental/filter-list.css +225 -225
- package/build/cjs/public/experimental/filter-list.css.map +1 -1
- package/build/cjs/public/experimental/image-viewer.cjs +3 -3
- package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
- package/build/cjs/public/experimental/object-table.cjs +12 -12
- package/build/cjs/public/experimental/object-table.css +151 -151
- package/build/cjs/public/experimental/object-table.css.map +1 -1
- package/build/cjs/public/experimental/pdf-viewer.cjs +25 -25
- package/build/cjs/public/experimental/pdf-viewer.css +72 -72
- package/build/cjs/public/experimental/pdf-viewer.css.map +1 -1
- package/build/cjs/public/experimental/pdf-viewer.d.cts +1 -1
- package/build/cjs/public/experimental/tiff-renderer.cjs +5 -5
- package/build/cjs/public/experimental/video-viewer.cjs +3 -3
- package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
- package/build/cjs/public/experimental.cjs +86 -86
- package/build/cjs/public/experimental.css +632 -632
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/esm/action-form/ActionForm.js.map +1 -1
- package/build/esm/action-form/ActionFormApi.js.map +1 -1
- package/build/esm/action-form/BaseForm.js +3 -3
- package/build/esm/action-form/BaseForm.js.map +1 -1
- package/build/esm/action-form/FormField.js.map +1 -1
- package/build/esm/action-form/FormFieldApi.js.map +1 -1
- package/build/esm/action-form/FormHeader.js.map +1 -1
- package/build/esm/action-form/FormSection.js.map +1 -1
- package/build/esm/action-form/fields/AsyncDropdownField.js +1 -1
- package/build/esm/action-form/fields/AsyncDropdownField.js.map +1 -1
- package/build/esm/action-form/fields/CustomField.js.map +1 -1
- package/build/esm/action-form/fields/DropdownField.js +2 -2
- package/build/esm/action-form/fields/DropdownField.js.map +1 -1
- package/build/esm/action-form/fields/FieldBridge.js.map +1 -1
- package/build/esm/action-form/fields/FilePickerField.js.map +1 -1
- package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/esm/action-form/fields/NumberInputField.js.map +1 -1
- package/build/esm/action-form/fields/ObjectSelectField.js.map +1 -1
- package/build/esm/action-form/fields/ObjectSetField.js.map +1 -1
- package/build/esm/action-form/fields/RadioButtonsField.js.map +1 -1
- package/build/esm/action-form/fields/SwitchField.js.map +1 -1
- package/build/esm/action-form/fields/TextAreaField.js.map +1 -1
- package/build/esm/action-form/fields/TextInputField.js.map +1 -1
- package/build/esm/action-form/utils/coerceFieldValue.js.map +1 -1
- package/build/esm/action-form/utils/extractValidationRules.js.map +1 -1
- package/build/esm/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
- package/build/esm/aip-agent-chat/AipAgentChat.js.map +1 -1
- package/build/esm/aip-agent-chat/BaseAipAgentChat.js +1 -1
- package/build/esm/aip-agent-chat/BaseAipAgentChat.js.map +1 -1
- package/build/esm/aip-agent-chat/components/AipAgentChatComposer.js.map +1 -1
- package/build/esm/aip-agent-chat/components/AipAgentChatLoader.js.map +1 -1
- package/build/esm/aip-agent-chat/components/AipAgentChatMessage.js.map +1 -1
- package/build/esm/aip-agent-chat/components/AipAgentChatMessageList.js +1 -1
- package/build/esm/aip-agent-chat/components/AipAgentChatMessageList.js.map +1 -1
- package/build/esm/aip-agent-chat/components/AipAgentChatModelPicker.js.map +1 -1
- package/build/esm/aip-agent-chat/hooks/useChatAutoScroll.js.map +1 -1
- package/build/esm/base-components/action-button/ActionButton.js.map +1 -1
- package/build/esm/base-components/callout/Callout.js.map +1 -1
- package/build/esm/base-components/checkbox/Checkbox.js.map +1 -1
- package/build/esm/base-components/combobox/Combobox.js.map +1 -1
- package/build/esm/base-components/dialog/Dialog.js.map +1 -1
- package/build/esm/base-components/draggable-list/DraggableList.js +1 -1
- package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -1
- package/build/esm/base-components/icon/BlueprintIcon.js.map +1 -1
- package/build/esm/base-components/search-bar/SearchBar.js.map +1 -1
- package/build/esm/base-components/searchable-menu/SearchableMenu.js.map +1 -1
- package/build/esm/base-components/select/Select.js.map +1 -1
- package/build/esm/base-components/skeleton/SkeletonBar.js.map +1 -1
- package/build/esm/base-components/switch/Switch.js.map +1 -1
- package/build/esm/base-components/tooltip/Tooltip.js.map +1 -1
- package/build/esm/cbac-picker/CbacBanner.js.map +1 -1
- package/build/esm/cbac-picker/CbacBannerPopover.js.map +1 -1
- package/build/esm/cbac-picker/CbacPicker.js.map +1 -1
- package/build/esm/cbac-picker/CbacPickerDialog.js.map +1 -1
- package/build/esm/cbac-picker/base/BaseCbacBanner.js.map +1 -1
- package/build/esm/cbac-picker/base/BaseCbacBannerPopover.js.map +1 -1
- package/build/esm/cbac-picker/base/BaseCbacPicker.js +1 -1
- package/build/esm/cbac-picker/base/BaseCbacPicker.js.map +1 -1
- package/build/esm/cbac-picker/base/BaseCbacPickerDialog.js.map +1 -1
- package/build/esm/cbac-picker/base/CategoryMarkingGroup.js +1 -1
- package/build/esm/cbac-picker/base/CategoryMarkingGroup.js.map +1 -1
- package/build/esm/cbac-picker/base/CbacPickerDialogFooter.js.map +1 -1
- package/build/esm/cbac-picker/base/InfoBanner.js.map +1 -1
- package/build/esm/cbac-picker/base/MarkingButton.js +1 -1
- package/build/esm/cbac-picker/base/MarkingButton.js.map +1 -1
- package/build/esm/cbac-picker/base/MaxClassificationField.js.map +1 -1
- package/build/esm/cbac-picker/base/OverflowButton.js +1 -1
- package/build/esm/cbac-picker/base/OverflowButton.js.map +1 -1
- package/build/esm/cbac-picker/base/OverflowItem.js +1 -1
- package/build/esm/cbac-picker/base/OverflowItem.js.map +1 -1
- package/build/esm/cbac-picker/base/ValidationWarning.js.map +1 -1
- package/build/esm/cbac-picker/base/selectionStateHelpers.js.map +1 -1
- package/build/esm/cbac-picker/useCbacPickerState.js.map +1 -1
- package/build/esm/cbac-picker/useCbacSelection.js.map +1 -1
- package/build/esm/cbac-picker/useConstraintCallout.js.map +1 -1
- package/build/esm/cbac-picker/utils/cbacPickerUtils.js.map +1 -1
- package/build/esm/cbac-picker/utils/errorMessages.js.map +1 -1
- package/build/esm/cbac-picker/utils/selectionLogic.js.map +1 -1
- package/build/esm/cbac-picker/utils/validationMessages.js.map +1 -1
- package/build/esm/document-viewer/DocumentViewer.js +1 -1
- package/build/esm/document-viewer/DocumentViewer.js.map +1 -1
- package/build/esm/document-viewer/DocumentViewerApi.js.map +1 -1
- package/build/esm/document-viewer/TiffDocumentViewer.js +1 -1
- package/build/esm/document-viewer/TiffDocumentViewer.js.map +1 -1
- package/build/esm/document-viewer/hooks/useTiffToPdf.js.map +1 -1
- package/build/esm/email-viewer/BaseEmailViewer.js.map +1 -1
- package/build/esm/email-viewer/EmailViewer.js +1 -1
- package/build/esm/email-viewer/EmailViewer.js.map +1 -1
- package/build/esm/email-viewer/EmailViewerApi.js.map +1 -1
- package/build/esm/email-viewer/parseEmail.js.map +1 -1
- package/build/esm/excel-viewer/BaseExcelViewer.js +1 -0
- package/build/esm/excel-viewer/BaseExcelViewer.js.map +1 -1
- package/build/esm/excel-viewer/ExcelViewer.js +1 -1
- package/build/esm/excel-viewer/ExcelViewer.js.map +1 -1
- package/build/esm/excel-viewer/ExcelViewerApi.js.map +1 -1
- package/build/esm/excel-viewer/parseSpreadsheet.js.map +1 -1
- package/build/esm/filter-list/FilterInput.js.map +1 -1
- package/build/esm/filter-list/FilterList.js.map +1 -1
- package/build/esm/filter-list/FilterListApi.js.map +1 -1
- package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
- package/build/esm/filter-list/base/AddFilterPopover.js +1 -1
- package/build/esm/filter-list/base/AddFilterPopover.js.map +1 -1
- package/build/esm/filter-list/base/BaseFilterList.js +1 -1
- package/build/esm/filter-list/base/BaseFilterList.js.map +1 -1
- package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -1
- package/build/esm/filter-list/base/ExcludeDropdown.js +1 -1
- package/build/esm/filter-list/base/ExcludeDropdown.js.map +1 -1
- package/build/esm/filter-list/base/FilterInputExcludeRow.js.map +1 -1
- package/build/esm/filter-list/base/FilterListContent.js +1 -1
- package/build/esm/filter-list/base/FilterListContent.js.map +1 -1
- package/build/esm/filter-list/base/FilterListHeader.js.map +1 -1
- package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
- package/build/esm/filter-list/base/FilterPopover.js.map +1 -1
- package/build/esm/filter-list/base/SortableFilterListItem.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ContainsTextInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/DateRangeHistogramInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/EmptyStringLabel.js +1 -0
- package/build/esm/filter-list/base/inputs/EmptyStringLabel.js.map +1 -1
- package/build/esm/filter-list/base/inputs/HistogramTooltip.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.js +2 -2
- package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramSkeleton.js.map +1 -1
- package/build/esm/filter-list/base/inputs/MultiDateInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/MultiSelectDropdownLayout.js.map +1 -1
- package/build/esm/filter-list/base/inputs/MultiSelectInlineLayout.js.map +1 -1
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js +2 -2
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/NoValueLabel.js.map +1 -1
- package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
- package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/OptionLabel.js.map +1 -1
- package/build/esm/filter-list/base/inputs/RangeInput.js +1 -1
- package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/SelectInputSkeleton.js.map +1 -1
- package/build/esm/filter-list/base/inputs/SingleDateInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js +1 -1
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ToggleInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/comboboxFilter.js.map +1 -1
- package/build/esm/filter-list/base/inputs/createDateHistogramBuckets.js.map +1 -1
- package/build/esm/filter-list/base/inputs/createHistogramBuckets.js.map +1 -1
- package/build/esm/filter-list/hooks/useDualScopeAggregation.js.map +1 -1
- package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/esm/filter-list/hooks/useFilterPropertyAggregation.js.map +1 -1
- package/build/esm/filter-list/hooks/useFilterVisibility.js.map +1 -1
- package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
- package/build/esm/filter-list/inputs/ContainsTextFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/DateRangeFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/LinkedPropertyInput.js +1 -1
- package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
- package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/MultiDateFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/SingleDateFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/TimelineFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/ToggleFilterInput.js.map +1 -1
- package/build/esm/filter-list/types/CustomRendererTypes.js.map +1 -1
- package/build/esm/filter-list/types/KeywordSearchTypes.js.map +1 -1
- package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/esm/filter-list/types/StaticValuesTypes.js.map +1 -1
- package/build/esm/filter-list/utils/aggregationHelpers.js.map +1 -1
- package/build/esm/filter-list/utils/coerceFilterValue.js.map +1 -1
- package/build/esm/filter-list/utils/emptyFilterDisplayState.js.map +1 -1
- package/build/esm/filter-list/utils/filterStateSerialization.js.map +1 -1
- package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
- package/build/esm/filter-list/utils/filterValues.js.map +1 -1
- package/build/esm/filter-list/utils/getFilterKey.js.map +1 -1
- package/build/esm/filter-list/utils/getFilterLabel.js.map +1 -1
- package/build/esm/filter-list/utils/narrowObjectSet.js.map +1 -1
- package/build/esm/filter-list/utils/summarizeFilterValue.js.map +1 -1
- package/build/esm/images/image-viewer/BaseImageViewer.js.map +1 -1
- package/build/esm/images/image-viewer/ImageViewer.js.map +1 -1
- package/build/esm/images/image-viewer/ImageViewerApi.js.map +1 -1
- package/build/esm/images/tiff-renderer/TiffRenderer.js +1 -0
- package/build/esm/images/tiff-renderer/TiffRenderer.js.map +1 -1
- package/build/esm/images/tiff-renderer/TiffViewerMedia.js.map +1 -1
- package/build/esm/markdown-renderer/MarkdownRenderer.js.map +1 -1
- package/build/esm/markdown-renderer/MarkdownViewerMedia.js.map +1 -1
- package/build/esm/object-table/CellContextMenu.js.map +1 -1
- package/build/esm/object-table/ColumnConfigDialog.js.map +1 -1
- package/build/esm/object-table/DefaultCellRenderer.js +4 -3
- package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
- package/build/esm/object-table/EditableCell.js +1 -1
- package/build/esm/object-table/EditableCell.js.map +1 -1
- package/build/esm/object-table/LoadingCell.js.map +1 -1
- package/build/esm/object-table/LoadingRow.js +1 -1
- package/build/esm/object-table/LoadingRow.js.map +1 -1
- package/build/esm/object-table/LoadingStateTable.js +3 -3
- package/build/esm/object-table/LoadingStateTable.js.map +1 -1
- package/build/esm/object-table/MultiColumnSortDialog.js +1 -1
- package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -1
- package/build/esm/object-table/NonIdealState.js.map +1 -1
- package/build/esm/object-table/ObjectTable.js.map +1 -1
- package/build/esm/object-table/ObjectTableApi.js.map +1 -1
- package/build/esm/object-table/SelectionCells.js.map +1 -1
- package/build/esm/object-table/SortableItemsList.js.map +1 -1
- package/build/esm/object-table/Table.js +1 -1
- package/build/esm/object-table/Table.js.map +1 -1
- package/build/esm/object-table/TableBody.js +1 -1
- package/build/esm/object-table/TableBody.js.map +1 -1
- package/build/esm/object-table/TableCell.js +1 -1
- package/build/esm/object-table/TableCell.js.map +1 -1
- package/build/esm/object-table/TableEditContainer.js.map +1 -1
- package/build/esm/object-table/TableHeader.js +1 -1
- package/build/esm/object-table/TableHeader.js.map +1 -1
- package/build/esm/object-table/TableHeaderContent.js.map +1 -1
- package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -1
- package/build/esm/object-table/TableRow.js.map +1 -1
- package/build/esm/object-table/components/AsyncValueCell.js.map +1 -1
- package/build/esm/object-table/components/CbacMarkingCell.js.map +1 -1
- package/build/esm/object-table/components/DatePickerCellField.js +1 -1
- package/build/esm/object-table/components/DatePickerCellField.js.map +1 -1
- package/build/esm/object-table/components/DropdownCellField.js +1 -1
- package/build/esm/object-table/components/DropdownCellField.js.map +1 -1
- package/build/esm/object-table/components/MandatoryMarkingCell.js.map +1 -1
- package/build/esm/object-table/components/ReadonlyDisplayCell.js.map +1 -1
- package/build/esm/object-table/components/TextInputCellField.js.map +1 -1
- package/build/esm/object-table/hooks/useCellContextMenu.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnPinning.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnResize.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -1
- package/build/esm/object-table/hooks/useEditableTable.js.map +1 -1
- package/build/esm/object-table/hooks/useFocusedRow.js.map +1 -1
- package/build/esm/object-table/hooks/useFunctionColumnsData.js.map +1 -1
- package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
- package/build/esm/object-table/hooks/useObjectTableSnapshot.js.map +1 -1
- package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
- package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
- package/build/esm/object-table/hooks/useTableSorting.js.map +1 -1
- package/build/esm/object-table/utils/AsyncCellData.js.map +1 -1
- package/build/esm/object-table/utils/PortalTracker.js.map +1 -1
- package/build/esm/object-table/utils/deriveSelectionObjectSet.js.map +1 -1
- package/build/esm/object-table/utils/editableUtils.js.map +1 -1
- package/build/esm/object-table/utils/functionColumns.js.map +1 -1
- package/build/esm/object-table/utils/getColumnPinningStyles.js.map +1 -1
- package/build/esm/object-table/utils/getRowId.js.map +1 -1
- package/build/esm/object-table/utils/objectTableSnapshot.js.map +1 -1
- package/build/esm/object-table/utils/shouldShowEditableCell.js.map +1 -1
- package/build/esm/object-table/utils/types.js.map +1 -1
- package/build/esm/pdf-viewer/PdfRenderer.js.map +1 -1
- package/build/esm/pdf-viewer/PdfViewer.js.map +1 -1
- package/build/esm/pdf-viewer/PdfViewerContext.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfAnnotationOverlay.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerContent.js +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerContent.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerOutlineSidebar.js +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerOutlineSidebar.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerSearchBar.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerSidebar.js +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerSidebar.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerSidebarHeader.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerThumbnail.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerToolbar.js.map +1 -1
- package/build/esm/pdf-viewer/constants.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfAnnotationsByPage.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfDocument.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfFormFields.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfHighlightMode.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfOutline.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfViewer.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfViewerCore.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfViewerSearch.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfViewerState.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfViewerSync.js.map +1 -1
- package/build/esm/public/experimental/action-form.js.map +1 -1
- package/build/esm/public/experimental/cbac-picker.js.map +1 -1
- package/build/esm/public/experimental/document-viewer.js.map +1 -1
- package/build/esm/public/experimental/email-viewer.js.map +1 -1
- package/build/esm/public/experimental/excel-viewer.js.map +1 -1
- package/build/esm/public/experimental/filter-list.js.map +1 -1
- package/build/esm/public/experimental/image-viewer.js.map +1 -1
- package/build/esm/public/experimental/markdown-renderer.js.map +1 -1
- package/build/esm/public/experimental/object-table.js.map +1 -1
- package/build/esm/public/experimental/pdf-viewer.js.map +1 -1
- package/build/esm/public/experimental/tiff-renderer.js.map +1 -1
- package/build/esm/public/experimental/video-viewer.js.map +1 -1
- package/build/esm/public/experimental/xml-viewer.js.map +1 -1
- package/build/esm/shared/ErrorBoundary.js.map +1 -1
- package/build/esm/shared/PortalContainerContext.js.map +1 -1
- package/build/esm/shared/PortalDismissLayer.js.map +1 -1
- package/build/esm/shared/calendar/DateCalendar.js +1 -1
- package/build/esm/shared/calendar/DateCalendar.js.map +1 -1
- package/build/esm/shared/calendar/DatePicker.js +2 -2
- package/build/esm/shared/calendar/DatePicker.js.map +1 -1
- package/build/esm/shared/calendar/DateRangeCalendar.js.map +1 -1
- package/build/esm/shared/calendar/DateRangePicker.js +2 -2
- package/build/esm/shared/calendar/DateRangePicker.js.map +1 -1
- package/build/esm/shared/calendar/LazyDateCalendar.js.map +1 -1
- package/build/esm/shared/calendar/LazyDateRangeCalendar.js.map +1 -1
- package/build/esm/shared/calendar/TimePicker.js.map +1 -1
- package/build/esm/shared/calendar/calendarShared.js.map +1 -1
- package/build/esm/shared/calendar/useDateEditState.js.map +1 -1
- package/build/esm/shared/dateUtils.js.map +1 -1
- package/build/esm/shared/hooks/useAsyncAction.js.map +1 -1
- package/build/esm/shared/hooks/useDebouncedValue.js.map +1 -1
- package/build/esm/shared/hooks/useEventCallback.js.map +1 -1
- package/build/esm/shared/hooks/useInfiniteScroll.js.map +1 -1
- package/build/esm/shared/hooks/useMediaContents.js.map +1 -1
- package/build/esm/theme/OsdkThemeContext.js.map +1 -1
- package/build/esm/theme/OsdkThemeProvider.js.map +1 -1
- package/build/esm/theme/useOsdkTheme.js.map +1 -1
- package/build/esm/theme/useSystemTheme.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/esm/util/withOsdkMetrics.js.map +1 -1
- package/build/esm/video-viewer/BaseVideoViewer.js.map +1 -1
- package/build/esm/video-viewer/VideoViewer.js.map +1 -1
- package/build/esm/video-viewer/VideoViewerApi.js.map +1 -1
- package/build/esm/xml-viewer/BaseXmlViewer.js.map +1 -1
- package/build/esm/xml-viewer/XmlViewer.js.map +1 -1
- package/build/esm/xml-viewer/XmlViewerApi.js.map +1 -1
- package/build/types/action-form/ActionForm.d.ts.map +1 -1
- package/build/types/action-form/ActionFormApi.d.ts.map +1 -1
- package/build/types/action-form/BaseForm.d.ts.map +1 -1
- package/build/types/action-form/FormField.d.ts.map +1 -1
- package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
- package/build/types/action-form/FormHeader.d.ts.map +1 -1
- package/build/types/action-form/FormSection.d.ts.map +1 -1
- package/build/types/action-form/fields/AsyncDropdownField.d.ts.map +1 -1
- package/build/types/action-form/fields/CustomField.d.ts.map +1 -1
- package/build/types/action-form/fields/DropdownField.d.ts.map +1 -1
- package/build/types/action-form/fields/FieldBridge.d.ts.map +1 -1
- package/build/types/action-form/fields/FilePickerField.d.ts.map +1 -1
- package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
- package/build/types/action-form/fields/NumberInputField.d.ts.map +1 -1
- package/build/types/action-form/fields/ObjectSelectField.d.ts.map +1 -1
- package/build/types/action-form/fields/ObjectSetField.d.ts.map +1 -1
- package/build/types/action-form/fields/RadioButtonsField.d.ts.map +1 -1
- package/build/types/action-form/fields/SwitchField.d.ts.map +1 -1
- package/build/types/action-form/fields/TextAreaField.d.ts.map +1 -1
- package/build/types/action-form/fields/TextInputField.d.ts.map +1 -1
- package/build/types/action-form/utils/extractValidationRules.d.ts.map +1 -1
- package/build/types/action-form/utils/getDefaultFieldDefinitions.d.ts.map +1 -1
- package/build/types/aip-agent-chat/AipAgentChat.d.ts.map +1 -1
- package/build/types/aip-agent-chat/BaseAipAgentChat.d.ts.map +1 -1
- package/build/types/aip-agent-chat/components/AipAgentChatComposer.d.ts.map +1 -1
- package/build/types/aip-agent-chat/components/AipAgentChatLoader.d.ts.map +1 -1
- package/build/types/aip-agent-chat/components/AipAgentChatMessage.d.ts.map +1 -1
- package/build/types/aip-agent-chat/components/AipAgentChatMessageList.d.ts.map +1 -1
- package/build/types/aip-agent-chat/components/AipAgentChatModelPicker.d.ts.map +1 -1
- package/build/types/base-components/action-button/ActionButton.d.ts.map +1 -1
- package/build/types/base-components/callout/Callout.d.ts.map +1 -1
- package/build/types/base-components/checkbox/Checkbox.d.ts.map +1 -1
- package/build/types/base-components/combobox/Combobox.d.ts.map +1 -1
- package/build/types/base-components/dialog/Dialog.d.ts.map +1 -1
- package/build/types/base-components/draggable-list/DraggableList.d.ts.map +1 -1
- package/build/types/base-components/search-bar/SearchBar.d.ts.map +1 -1
- package/build/types/base-components/searchable-menu/SearchableMenu.d.ts.map +1 -1
- package/build/types/base-components/select/Select.d.ts.map +1 -1
- package/build/types/base-components/skeleton/SkeletonBar.d.ts.map +1 -1
- package/build/types/base-components/switch/Switch.d.ts.map +1 -1
- package/build/types/base-components/tooltip/Tooltip.d.ts.map +1 -1
- package/build/types/cbac-picker/CbacBanner.d.ts.map +1 -1
- package/build/types/cbac-picker/CbacBannerPopover.d.ts.map +1 -1
- package/build/types/cbac-picker/CbacPicker.d.ts.map +1 -1
- package/build/types/cbac-picker/CbacPickerDialog.d.ts.map +1 -1
- package/build/types/cbac-picker/base/BaseCbacBanner.d.ts.map +1 -1
- package/build/types/cbac-picker/base/BaseCbacBannerPopover.d.ts.map +1 -1
- package/build/types/cbac-picker/base/BaseCbacPicker.d.ts.map +1 -1
- package/build/types/cbac-picker/base/BaseCbacPickerDialog.d.ts.map +1 -1
- package/build/types/cbac-picker/base/CategoryMarkingGroup.d.ts.map +1 -1
- package/build/types/cbac-picker/base/CbacPickerDialogFooter.d.ts.map +1 -1
- package/build/types/cbac-picker/base/InfoBanner.d.ts.map +1 -1
- package/build/types/cbac-picker/base/MarkingButton.d.ts.map +1 -1
- package/build/types/cbac-picker/base/MaxClassificationField.d.ts.map +1 -1
- package/build/types/cbac-picker/base/OverflowButton.d.ts.map +1 -1
- package/build/types/cbac-picker/base/OverflowItem.d.ts.map +1 -1
- package/build/types/cbac-picker/base/ValidationWarning.d.ts.map +1 -1
- package/build/types/cbac-picker/useCbacPickerState.d.ts.map +1 -1
- package/build/types/cbac-picker/useCbacSelection.d.ts.map +1 -1
- package/build/types/cbac-picker/useConstraintCallout.d.ts.map +1 -1
- package/build/types/cbac-picker/utils/errorMessages.d.ts.map +1 -1
- package/build/types/document-viewer/DocumentViewer.d.ts.map +1 -1
- package/build/types/document-viewer/DocumentViewerApi.d.ts.map +1 -1
- package/build/types/document-viewer/TiffDocumentViewer.d.ts.map +1 -1
- package/build/types/document-viewer/hooks/useTiffToPdf.d.ts.map +1 -1
- package/build/types/email-viewer/BaseEmailViewer.d.ts.map +1 -1
- package/build/types/email-viewer/EmailViewer.d.ts.map +1 -1
- package/build/types/email-viewer/EmailViewerApi.d.ts.map +1 -1
- package/build/types/email-viewer/parseEmail.d.ts.map +1 -1
- package/build/types/excel-viewer/BaseExcelViewer.d.ts.map +1 -1
- package/build/types/excel-viewer/ExcelViewer.d.ts.map +1 -1
- package/build/types/excel-viewer/ExcelViewerApi.d.ts.map +1 -1
- package/build/types/excel-viewer/parseSpreadsheet.d.ts.map +1 -1
- package/build/types/filter-list/FilterInput.d.ts.map +1 -1
- package/build/types/filter-list/FilterList.d.ts.map +1 -1
- package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
- package/build/types/filter-list/base/AddFilterPopover.d.ts.map +1 -1
- package/build/types/filter-list/base/BaseFilterList.d.ts.map +1 -1
- package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/base/ExcludeDropdown.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterInputExcludeRow.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterPopover.d.ts.map +1 -1
- package/build/types/filter-list/base/SortableFilterListItem.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/DateRangeHistogramInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/EmptyStringLabel.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/HistogramTooltip.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/ListogramSkeleton.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiDateInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiSelectDropdownLayout.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiSelectInlineLayout.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/NoValueLabel.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/OptionLabel.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/SelectInputSkeleton.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/SingleDateInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/TimelineInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/ToggleInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/createDateHistogramBuckets.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useDualScopeAggregation.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useFilterPropertyAggregation.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useFilterVisibility.d.ts.map +1 -1
- package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -1
- package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/StaticValuesFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/TimelineFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/ToggleFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/types/CustomRendererTypes.d.ts.map +1 -1
- package/build/types/filter-list/types/KeywordSearchTypes.d.ts.map +1 -1
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -1
- package/build/types/filter-list/types/StaticValuesTypes.d.ts.map +1 -1
- package/build/types/filter-list/utils/aggregationHelpers.d.ts.map +1 -1
- package/build/types/filter-list/utils/emptyFilterDisplayState.d.ts.map +1 -1
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
- package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
- package/build/types/filter-list/utils/getFilterKey.d.ts.map +1 -1
- package/build/types/filter-list/utils/getFilterLabel.d.ts.map +1 -1
- package/build/types/filter-list/utils/narrowObjectSet.d.ts.map +1 -1
- package/build/types/filter-list/utils/summarizeFilterValue.d.ts.map +1 -1
- package/build/types/images/image-viewer/BaseImageViewer.d.ts.map +1 -1
- package/build/types/images/image-viewer/ImageViewer.d.ts.map +1 -1
- package/build/types/images/image-viewer/ImageViewerApi.d.ts.map +1 -1
- package/build/types/images/tiff-renderer/TiffRenderer.d.ts.map +1 -1
- package/build/types/images/tiff-renderer/TiffViewerMedia.d.ts.map +1 -1
- package/build/types/markdown-renderer/MarkdownRenderer.d.ts.map +1 -1
- package/build/types/markdown-renderer/MarkdownViewerMedia.d.ts.map +1 -1
- package/build/types/object-table/CellContextMenu.d.ts.map +1 -1
- package/build/types/object-table/ColumnConfigDialog.d.ts.map +1 -1
- package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -1
- package/build/types/object-table/EditableCell.d.ts.map +1 -1
- package/build/types/object-table/LoadingCell.d.ts.map +1 -1
- package/build/types/object-table/LoadingRow.d.ts.map +1 -1
- package/build/types/object-table/LoadingStateTable.d.ts.map +1 -1
- package/build/types/object-table/MultiColumnSortDialog.d.ts.map +1 -1
- package/build/types/object-table/NonIdealState.d.ts.map +1 -1
- package/build/types/object-table/ObjectTable.d.ts.map +1 -1
- package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
- package/build/types/object-table/SelectionCells.d.ts.map +1 -1
- package/build/types/object-table/SortableItemsList.d.ts.map +1 -1
- package/build/types/object-table/Table.d.ts.map +1 -1
- package/build/types/object-table/TableBody.d.ts.map +1 -1
- package/build/types/object-table/TableCell.d.ts.map +1 -1
- package/build/types/object-table/TableEditContainer.d.ts.map +1 -1
- package/build/types/object-table/TableHeader.d.ts.map +1 -1
- package/build/types/object-table/TableHeaderContent.d.ts.map +1 -1
- package/build/types/object-table/TableHeaderWithPopover.d.ts.map +1 -1
- package/build/types/object-table/TableRow.d.ts.map +1 -1
- package/build/types/object-table/components/AsyncValueCell.d.ts.map +1 -1
- package/build/types/object-table/components/CbacMarkingCell.d.ts.map +1 -1
- package/build/types/object-table/components/DatePickerCellField.d.ts.map +1 -1
- package/build/types/object-table/components/DropdownCellField.d.ts.map +1 -1
- package/build/types/object-table/components/MandatoryMarkingCell.d.ts.map +1 -1
- package/build/types/object-table/components/ReadonlyDisplayCell.d.ts.map +1 -1
- package/build/types/object-table/components/TextInputCellField.d.ts.map +1 -1
- package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
- package/build/types/object-table/hooks/useColumnPinning.d.ts.map +1 -1
- package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -1
- package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -1
- package/build/types/object-table/hooks/useFocusedRow.d.ts.map +1 -1
- package/build/types/object-table/hooks/useFunctionColumnsData.d.ts.map +1 -1
- package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
- package/build/types/object-table/hooks/useObjectTableSnapshot.d.ts.map +1 -1
- package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
- package/build/types/object-table/hooks/useSelectionColumn.d.ts.map +1 -1
- package/build/types/object-table/hooks/useTableSorting.d.ts.map +1 -1
- package/build/types/object-table/utils/AsyncCellData.d.ts.map +1 -1
- package/build/types/object-table/utils/PortalTracker.d.ts.map +1 -1
- package/build/types/object-table/utils/deriveSelectionObjectSet.d.ts.map +1 -1
- package/build/types/object-table/utils/functionColumns.d.ts.map +1 -1
- package/build/types/object-table/utils/getRowId.d.ts.map +1 -1
- package/build/types/object-table/utils/objectTableSnapshot.d.ts.map +1 -1
- package/build/types/object-table/utils/types.d.ts.map +1 -1
- package/build/types/pdf-viewer/PdfRenderer.d.ts.map +1 -1
- package/build/types/pdf-viewer/PdfViewer.d.ts.map +1 -1
- package/build/types/pdf-viewer/PdfViewerContext.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfAnnotationOverlay.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfViewerAnnotationLayer.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfViewerContent.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfViewerOutlineSidebar.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfViewerSearchBar.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfViewerSidebar.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfViewerSidebarHeader.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfViewerThumbnail.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfViewerToolbar.d.ts.map +1 -1
- package/build/types/pdf-viewer/constants.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfAnnotationPortals.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfAnnotationsByPage.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfFormFields.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfHighlightMode.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfOutline.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfViewer.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfViewerCore.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfViewerSearch.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfViewerState.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfViewerSync.d.ts.map +1 -1
- package/build/types/shared/ErrorBoundary.d.ts.map +1 -1
- package/build/types/shared/PortalContainerContext.d.ts.map +1 -1
- package/build/types/shared/PortalDismissLayer.d.ts.map +1 -1
- package/build/types/shared/calendar/DateCalendar.d.ts.map +1 -1
- package/build/types/shared/calendar/DatePicker.d.ts.map +1 -1
- package/build/types/shared/calendar/DateRangeCalendar.d.ts.map +1 -1
- package/build/types/shared/calendar/DateRangePicker.d.ts.map +1 -1
- package/build/types/shared/calendar/LazyDateCalendar.d.ts.map +1 -1
- package/build/types/shared/calendar/LazyDateRangeCalendar.d.ts.map +1 -1
- package/build/types/shared/calendar/TimePicker.d.ts.map +1 -1
- package/build/types/shared/calendar/useDateEditState.d.ts.map +1 -1
- package/build/types/shared/dateUtils.d.ts.map +1 -1
- package/build/types/shared/hooks/useAsyncAction.d.ts.map +1 -1
- package/build/types/shared/hooks/useInfiniteScroll.d.ts.map +1 -1
- package/build/types/theme/OsdkThemeContext.d.ts.map +1 -1
- package/build/types/theme/OsdkThemeProvider.d.ts.map +1 -1
- package/build/types/theme/useOsdkTheme.d.ts.map +1 -1
- package/build/types/theme/useSystemTheme.d.ts.map +1 -1
- package/build/types/util/UserAgent.d.ts.map +1 -1
- package/build/types/util/withOsdkMetrics.d.ts.map +1 -1
- package/build/types/video-viewer/BaseVideoViewer.d.ts.map +1 -1
- package/build/types/video-viewer/VideoViewer.d.ts.map +1 -1
- package/build/types/video-viewer/VideoViewerApi.d.ts.map +1 -1
- package/build/types/xml-viewer/BaseXmlViewer.d.ts.map +1 -1
- package/build/types/xml-viewer/XmlViewer.d.ts.map +1 -1
- package/build/types/xml-viewer/XmlViewerApi.d.ts.map +1 -1
- package/package.json +9 -10
- package/build/cjs/DateCalendar-FTW3OIEP.css.map +0 -1
- package/build/cjs/DateRangeCalendar-I4JHCZAK.css.map +0 -1
- package/build/cjs/DateRangeCalendar-PHC3VPW3.cjs +0 -12
- package/build/cjs/chunk-4VNWCW75.cjs.map +0 -1
- package/build/cjs/chunk-CASYBF4M.cjs.map +0 -1
- package/build/cjs/chunk-DA22W6ZO.cjs.map +0 -1
- package/build/cjs/chunk-F4JELV7M.cjs +0 -11
- package/build/cjs/chunk-IHVPE5CD.cjs.map +0 -1
- package/build/cjs/chunk-LGGRMQCE.cjs +0 -11
- package/build/cjs/chunk-MMPVBH5H.cjs.map +0 -1
- package/build/cjs/chunk-PYOEFNQH.cjs +0 -11
- package/build/cjs/chunk-Q5H4KPSL.cjs +0 -11
- package/build/cjs/chunk-VRTFHF24.cjs +0 -11
- package/build/cjs/chunk-W6DWGABB.cjs +0 -11
- package/build/cjs/chunk-WE4REEMW.cjs.map +0 -1
- package/build/cjs/chunk-XK4H7EHE.cjs.map +0 -1
- package/build/cjs/chunk-YTDSW5OV.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdfViewerOutlineSidebar.js","names":["classnames","React","useCallback","useMemo","
|
|
1
|
+
{"version":3,"file":"PdfViewerOutlineSidebar.js","names":["classnames","React","useCallback","useMemo","PdfViewerSidebarHeader","styles","INDENT_PER_DEPTH","PdfViewerOutlineSidebar","outlineItems","currentPage","onItemClick","sidebarMode","onSidebarModeChange","outlineIcons","activeIndex","computeActiveIndex","length","createElement","className","sidebar","emptyState","emptyStateText","scrollContainer","map","item","index","PdfViewerOutlineItem","key","isActive","onClick","iconComponent","depth","IconComponent","handleClick","pageNumber","handleKeyDown","e","preventDefault","itemClassName","outlineItem","outlineItemActive","bold","outlineItemBold","italic","outlineItemItalic","paddingLeft","onKeyDown","role","tabIndex","title","undefined","style","outlineItemIcon","outlineItemTitle","items","idx","findIndex"],"sources":["PdfViewerOutlineSidebar.tsx"],"sourcesContent":["/*\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\";\n\nimport type { OutlineItem, SidebarMode } from \"../types.js\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\n\nimport styles from \"./PdfViewerOutlineSidebar.module.css\";\n\nconst INDENT_PER_DEPTH = 16;\n\nexport interface PdfViewerOutlineSidebarProps {\n outlineItems: OutlineItem[];\n currentPage: number;\n onItemClick: (pageNumber: number) => void;\n sidebarMode: SidebarMode;\n onSidebarModeChange: (mode: SidebarMode) => void;\n outlineIcons?: Partial<Record<number, React.ComponentType>>;\n}\n\nexport function PdfViewerOutlineSidebar({\n outlineItems,\n currentPage,\n onItemClick,\n sidebarMode,\n onSidebarModeChange,\n outlineIcons,\n}: PdfViewerOutlineSidebarProps): React.ReactElement {\n const activeIndex = useMemo(() => {\n return computeActiveIndex(outlineItems, currentPage);\n }, [outlineItems, currentPage]);\n\n if (outlineItems.length === 0) {\n return (\n <div className={styles.sidebar}>\n <PdfViewerSidebarHeader\n sidebarMode={sidebarMode}\n onSidebarModeChange={onSidebarModeChange}\n />\n <div className={styles.emptyState}>\n <div className={styles.emptyStateText}>No outline available</div>\n </div>\n </div>\n );\n }\n\n return (\n <div className={styles.sidebar}>\n <PdfViewerSidebarHeader\n sidebarMode={sidebarMode}\n onSidebarModeChange={onSidebarModeChange}\n />\n <div className={styles.scrollContainer}>\n {outlineItems.map((item, index) => (\n <PdfViewerOutlineItem\n key={index}\n item={item}\n isActive={index === activeIndex}\n onClick={onItemClick}\n iconComponent={outlineIcons?.[item.depth]}\n />\n ))}\n </div>\n </div>\n );\n}\n\ninterface PdfViewerOutlineItemProps {\n item: OutlineItem;\n isActive: boolean;\n onClick: (pageNumber: number) => void;\n iconComponent: React.ComponentType | undefined;\n}\n\nfunction PdfViewerOutlineItem({\n item,\n isActive,\n onClick,\n iconComponent: IconComponent,\n}: PdfViewerOutlineItemProps): React.ReactElement {\n const handleClick = useCallback(() => {\n onClick(item.pageNumber);\n }, [onClick, item.pageNumber]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick(item.pageNumber);\n }\n },\n [onClick, item.pageNumber]\n );\n\n const itemClassName = classnames(\n styles.outlineItem,\n isActive && styles.outlineItemActive,\n item.bold && styles.outlineItemBold,\n item.italic && styles.outlineItemItalic\n );\n\n const paddingLeft = INDENT_PER_DEPTH * item.depth + 12;\n\n return (\n <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={{ paddingLeft }}\n >\n {IconComponent != null && (\n <span className={styles.outlineItemIcon}>\n <IconComponent />\n </span>\n )}\n <span className={styles.outlineItemTitle}>{item.title}</span>\n </div>\n );\n}\n\nfunction computeActiveIndex(items: OutlineItem[], currentPage: number): number {\n const idx = items.findIndex((item) => item.pageNumber > currentPage);\n return idx === -1 ? items.length - 1 : idx - 1;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdfViewerSearchBar.js","names":["ChevronDown","ChevronUp","Cross","React","useCallback","styles","PdfViewerSearchBar","query","totalMatches","currentMatchIndex","onQueryChange","onNext","onPrev","onClose","handleInputChange","e","target","value","handleKeyDown","key","preventDefault","shiftKey","matchDisplay","length","createElement","className","searchBar","autoFocus","searchInput","type","onChange","onKeyDown","placeholder","matchCount","navButton","onClick","disabled","size","closeButton"],"sources":["PdfViewerSearchBar.tsx"],"sourcesContent":["/*\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\";\n\nexport interface PdfViewerSearchBarProps {\n query: string;\n totalMatches: number;\n currentMatchIndex: number;\n onQueryChange: (query: string) => void;\n onNext: () => void;\n onPrev: () => void;\n onClose: () => void;\n}\n\nexport function PdfViewerSearchBar({\n query,\n totalMatches,\n currentMatchIndex,\n onQueryChange,\n onNext,\n onPrev,\n onClose,\n}: PdfViewerSearchBarProps): React.ReactElement {\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onQueryChange(e.target.value);\n },\n [onQueryChange]
|
|
1
|
+
{"version":3,"file":"PdfViewerSearchBar.js","names":["ChevronDown","ChevronUp","Cross","React","useCallback","styles","PdfViewerSearchBar","query","totalMatches","currentMatchIndex","onQueryChange","onNext","onPrev","onClose","handleInputChange","e","target","value","handleKeyDown","key","preventDefault","shiftKey","matchDisplay","length","createElement","className","searchBar","autoFocus","searchInput","type","onChange","onKeyDown","placeholder","matchCount","navButton","onClick","disabled","size","closeButton"],"sources":["PdfViewerSearchBar.tsx"],"sourcesContent":["/*\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\";\n\nimport styles from \"./PdfViewerSearchBar.module.css\";\n\nexport interface PdfViewerSearchBarProps {\n query: string;\n totalMatches: number;\n currentMatchIndex: number;\n onQueryChange: (query: string) => void;\n onNext: () => void;\n onPrev: () => void;\n onClose: () => void;\n}\n\nexport function PdfViewerSearchBar({\n query,\n totalMatches,\n currentMatchIndex,\n onQueryChange,\n onNext,\n onPrev,\n onClose,\n}: PdfViewerSearchBarProps): React.ReactElement {\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onQueryChange(e.target.value);\n },\n [onQueryChange]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\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 },\n [onNext, onPrev, onClose]\n );\n\n const matchDisplay =\n totalMatches > 0\n ? `${currentMatchIndex + 1} of ${totalMatches}`\n : query.length > 0\n ? \"No results\"\n : \"\";\n\n return (\n <div className={styles.searchBar}>\n <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 />\n {matchDisplay.length > 0 && (\n <span className={styles.matchCount}>{matchDisplay}</span>\n )}\n <button\n className={styles.navButton}\n onClick={onPrev}\n disabled={totalMatches === 0}\n aria-label=\"Previous match\"\n type=\"button\"\n >\n <ChevronUp size={16} />\n </button>\n <button\n className={styles.navButton}\n onClick={onNext}\n disabled={totalMatches === 0}\n aria-label=\"Next match\"\n type=\"button\"\n >\n <ChevronDown size={16} />\n </button>\n <button\n className={styles.closeButton}\n onClick={onClose}\n aria-label=\"Close search\"\n type=\"button\"\n >\n <Cross size={16} />\n </button>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
18
18
|
import React, { useEffect, useRef } from "react";
|
|
19
19
|
import { DEFAULT_PAGE_HEIGHT, THUMBNAIL_GAP, THUMBNAIL_SCALE } from "../constants.js";
|
|
20
|
-
import styles from "./PdfViewerSidebar.module.css.js";
|
|
21
20
|
import { PdfViewerSidebarHeader } from "./PdfViewerSidebarHeader.js";
|
|
22
21
|
import { PdfViewerThumbnail } from "./PdfViewerThumbnail.js";
|
|
22
|
+
import styles from "./PdfViewerSidebar.module.css.js";
|
|
23
23
|
export function PdfViewerSidebar({
|
|
24
24
|
document,
|
|
25
25
|
numPages,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdfViewerSidebar.js","names":["useVirtualizer","React","useEffect","useRef","DEFAULT_PAGE_HEIGHT","THUMBNAIL_GAP","THUMBNAIL_SCALE","
|
|
1
|
+
{"version":3,"file":"PdfViewerSidebar.js","names":["useVirtualizer","React","useEffect","useRef","DEFAULT_PAGE_HEIGHT","THUMBNAIL_GAP","THUMBNAIL_SCALE","PdfViewerSidebarHeader","PdfViewerThumbnail","styles","PdfViewerSidebar","document","numPages","currentPage","onPageClick","sidebarMode","onSidebarModeChange","scrollContainerRef","estimatedItemHeight","Math","floor","virtualizer","count","getScrollElement","current","estimateSize","overscan","scrollToIndex","align","createElement","className","sidebar","ref","scrollContainer","thumbnailsContainer","style","height","getTotalSize","getVirtualItems","map","virtualItem","pageNumber","index","key","thumbnailWrapper","top","start","size","isActive","onClick"],"sources":["PdfViewerSidebar.tsx"],"sourcesContent":["/*\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 type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport React, { useEffect, useRef } from \"react\";\n\nimport {\n DEFAULT_PAGE_HEIGHT,\n THUMBNAIL_GAP,\n THUMBNAIL_SCALE,\n} from \"../constants.js\";\nimport type { SidebarMode } from \"../types.js\";\nimport { PdfViewerSidebarHeader } from \"./PdfViewerSidebarHeader.js\";\nimport { PdfViewerThumbnail } from \"./PdfViewerThumbnail.js\";\n\nimport styles from \"./PdfViewerSidebar.module.css\";\n\nexport interface PdfViewerSidebarProps {\n document: PDFDocumentProxy;\n numPages: number;\n currentPage: number;\n onPageClick: (page: number) => void;\n sidebarMode: SidebarMode;\n onSidebarModeChange: (mode: SidebarMode) => void;\n}\n\nexport function PdfViewerSidebar({\n document,\n numPages,\n currentPage,\n onPageClick,\n sidebarMode,\n onSidebarModeChange,\n}: PdfViewerSidebarProps): React.ReactElement {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const estimatedItemHeight =\n Math.floor(DEFAULT_PAGE_HEIGHT * THUMBNAIL_SCALE) + THUMBNAIL_GAP + 20;\n\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(\n function syncActiveThumbnail() {\n virtualizer.scrollToIndex(currentPage - 1, { align: \"auto\" });\n },\n [currentPage, virtualizer]\n );\n\n return (\n <div className={styles.sidebar}>\n <PdfViewerSidebarHeader\n sidebarMode={sidebarMode}\n onSidebarModeChange={onSidebarModeChange}\n />\n <div ref={scrollContainerRef} className={styles.scrollContainer}>\n <div\n className={styles.thumbnailsContainer}\n style={{ height: virtualizer.getTotalSize() }}\n >\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const pageNumber = virtualItem.index + 1;\n return (\n <div\n key={virtualItem.key}\n className={styles.thumbnailWrapper}\n style={{\n top: virtualItem.start,\n height: virtualItem.size,\n }}\n >\n <div>\n <PdfViewerThumbnail\n document={document}\n pageNumber={pageNumber}\n isActive={pageNumber === currentPage}\n onClick={() => onPageClick(pageNumber)}\n />\n <div className={styles.pageNumber}>{pageNumber}</div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,yBAAyB;AAExD,OAAOC,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEhD,SACEC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,QACV,iBAAiB;AAExB,SAASC,sBAAsB,QAAQ,6BAA6B;AACpE,SAASC,kBAAkB,QAAQ,yBAAyB;AAE5D,OAAOC,MAAM,MAAM,+BAA+B;AAWlD,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,QAAQ;EACRC,QAAQ;EACRC,WAAW;EACXC,WAAW;EACXC,WAAW;EACXC;AACqB,CAAC,EAAsB;EAC5C,MAAMC,kBAAkB,GAAGd,MAAM,CAAiB,IAAI,CAAC;EACvD,MAAMe,mBAAmB,GACvBC,IAAI,CAACC,KAAK,CAAChB,mBAAmB,GAAGE,eAAe,CAAC,GAAGD,aAAa,GAAG,EAAE;EAExE,MAAMgB,WAAW,GAAGrB,cAAc,CAAC;IACjCsB,KAAK,EAAEV,QAAQ;IACfW,gBAAgB,EAAEA,CAAA,KAAMN,kBAAkB,CAACO,OAAO;IAClDC,YAAY,EAAEA,CAAA,KAAMP,mBAAmB;IACvCQ,QAAQ,EAAE;EACZ,CAAC,CAAC;;EAEF;EACAxB,SAAS,CACP,YAA+B;IAC7BmB,WAAW,CAACM,aAAa,CAACd,WAAW,GAAG,CAAC,EAAE;MAAEe,KAAK,EAAE;IAAO,CAAC,CAAC;EAC/D,CAAC,EACD,CAACf,WAAW,EAAEQ,WAAW,CAC3B,CAAC;EAED,oBACEpB,KAAA,CAAA4B,aAAA;IAAKC,SAAS,EAAErB,MAAM,CAACsB;EAAQ,gBAC7B9B,KAAA,CAAA4B,aAAA,CAACtB,sBAAsB;IACrBQ,WAAW,EAAEA,WAAY;IACzBC,mBAAmB,EAAEA;EAAoB,CAC1C,CAAC,eACFf,KAAA,CAAA4B,aAAA;IAAKG,GAAG,EAAEf,kBAAmB;IAACa,SAAS,EAAErB,MAAM,CAACwB;EAAgB,gBAC9DhC,KAAA,CAAA4B,aAAA;IACEC,SAAS,EAAErB,MAAM,CAACyB,mBAAoB;IACtCC,KAAK,EAAE;MAAEC,MAAM,EAAEf,WAAW,CAACgB,YAAY,CAAC;IAAE;EAAE,GAE7ChB,WAAW,CAACiB,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,WAAW,IAAK;IAClD,MAAMC,UAAU,GAAGD,WAAW,CAACE,KAAK,GAAG,CAAC;IACxC,oBACEzC,KAAA,CAAA4B,aAAA;MACEc,GAAG,EAAEH,WAAW,CAACG,GAAI;MACrBb,SAAS,EAAErB,MAAM,CAACmC,gBAAiB;MACnCT,KAAK,EAAE;QACLU,GAAG,EAAEL,WAAW,CAACM,KAAK;QACtBV,MAAM,EAAEI,WAAW,CAACO;MACtB;IAAE,gBAEF9C,KAAA,CAAA4B,aAAA,2BACE5B,KAAA,CAAA4B,aAAA,CAACrB,kBAAkB;MACjBG,QAAQ,EAAEA,QAAS;MACnB8B,UAAU,EAAEA,UAAW;MACvBO,QAAQ,EAAEP,UAAU,KAAK5B,WAAY;MACrCoC,OAAO,EAAEA,CAAA,KAAMnC,WAAW,CAAC2B,UAAU;IAAE,CACxC,CAAC,eACFxC,KAAA,CAAA4B,aAAA;MAAKC,SAAS,EAAErB,MAAM,CAACgC;IAAW,GAAEA,UAAgB,CACjD,CACF,CAAC;EAEV,CAAC,CACE,CACF,CACF,CAAC;AAEV","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdfViewerSidebarHeader.js","names":["Toggle","ToggleGroup","GridView","Properties","React","useCallback","styles","SIDEBAR_MODE_VALUE","Object","freeze","OUTLINE_MODE_VALUE","PdfViewerSidebarHeader","sidebarMode","onSidebarModeChange","value","handleValueChange","newValue","length","createElement","className","sidebarHeader","onValueChange","toggleGroup","modeButton","size"],"sources":["PdfViewerSidebarHeader.tsx"],"sourcesContent":["/*\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 type { SidebarMode } from \"../types.js\";\nimport styles from \"./PdfViewerSidebarHeader.module.css\";\n\nexport interface PdfViewerSidebarHeaderProps {\n sidebarMode: SidebarMode;\n onSidebarModeChange: (mode: SidebarMode) => void;\n}\n\nconst SIDEBAR_MODE_VALUE = Object.freeze([\"thumbnails\"]) as readonly string[];\nconst OUTLINE_MODE_VALUE = Object.freeze([\"outline\"]) as readonly string[];\n\nexport function PdfViewerSidebarHeader({\n sidebarMode,\n onSidebarModeChange,\n}: PdfViewerSidebarHeaderProps): React.ReactElement {\n const value
|
|
1
|
+
{"version":3,"file":"PdfViewerSidebarHeader.js","names":["Toggle","ToggleGroup","GridView","Properties","React","useCallback","styles","SIDEBAR_MODE_VALUE","Object","freeze","OUTLINE_MODE_VALUE","PdfViewerSidebarHeader","sidebarMode","onSidebarModeChange","value","handleValueChange","newValue","length","createElement","className","sidebarHeader","onValueChange","toggleGroup","modeButton","size"],"sources":["PdfViewerSidebarHeader.tsx"],"sourcesContent":["/*\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\";\n\nimport type { SidebarMode } from \"../types.js\";\n\nimport styles from \"./PdfViewerSidebarHeader.module.css\";\n\nexport interface PdfViewerSidebarHeaderProps {\n sidebarMode: SidebarMode;\n onSidebarModeChange: (mode: SidebarMode) => void;\n}\n\nconst SIDEBAR_MODE_VALUE = Object.freeze([\"thumbnails\"]) as readonly string[];\nconst OUTLINE_MODE_VALUE = Object.freeze([\"outline\"]) as readonly string[];\n\nexport function PdfViewerSidebarHeader({\n sidebarMode,\n onSidebarModeChange,\n}: PdfViewerSidebarHeaderProps): React.ReactElement {\n const value =\n sidebarMode === \"thumbnails\" ? SIDEBAR_MODE_VALUE : OUTLINE_MODE_VALUE;\n\n const handleValueChange = useCallback(\n (newValue: string[]) => {\n if (newValue.length > 0) {\n onSidebarModeChange(newValue[0] as SidebarMode);\n }\n },\n [onSidebarModeChange]\n );\n\n return (\n <div className={styles.sidebarHeader}>\n <ToggleGroup\n value={value}\n onValueChange={handleValueChange}\n className={styles.toggleGroup}\n >\n <Toggle\n value=\"thumbnails\"\n className={styles.modeButton}\n aria-label=\"Page thumbnails\"\n >\n <GridView size={16} />\n </Toggle>\n\n <Toggle\n value=\"outline\"\n className={styles.modeButton}\n aria-label=\"Document outline\"\n >\n <Properties size={16} />\n </Toggle>\n </ToggleGroup>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,WAAW,QAAQ,6BAA6B;AACzD,SAASC,QAAQ,EAAEC,UAAU,QAAQ,oBAAoB;AACzD,OAAOC,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAI1C,OAAOC,MAAM,MAAM,qCAAqC;AAOxD,MAAMC,kBAAkB,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAsB;AAC7E,MAAMC,kBAAkB,GAAGF,MAAM,CAACC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAsB;AAE1E,OAAO,SAASE,sBAAsBA,CAAC;EACrCC,WAAW;EACXC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,KAAK,GACTF,WAAW,KAAK,YAAY,GAAGL,kBAAkB,GAAGG,kBAAkB;EAExE,MAAMK,iBAAiB,GAAGV,WAAW,CAClCW,QAAkB,IAAK;IACtB,IAAIA,QAAQ,CAACC,MAAM,GAAG,CAAC,EAAE;MACvBJ,mBAAmB,CAACG,QAAQ,CAAC,CAAC,CAAgB,CAAC;IACjD;EACF,CAAC,EACD,CAACH,mBAAmB,CACtB,CAAC;EAED,oBACET,KAAA,CAAAc,aAAA;IAAKC,SAAS,EAAEb,MAAM,CAACc;EAAc,gBACnChB,KAAA,CAAAc,aAAA,CAACjB,WAAW;IACVa,KAAK,EAAEA,KAAM;IACbO,aAAa,EAAEN,iBAAkB;IACjCI,SAAS,EAAEb,MAAM,CAACgB;EAAY,gBAE9BlB,KAAA,CAAAc,aAAA,CAAClB,MAAM;IACLc,KAAK,EAAC,YAAY;IAClBK,SAAS,EAAEb,MAAM,CAACiB,UAAW;IAC7B,cAAW;EAAiB,gBAE5BnB,KAAA,CAAAc,aAAA,CAAChB,QAAQ;IAACsB,IAAI,EAAE;EAAG,CAAE,CACf,CAAC,eAETpB,KAAA,CAAAc,aAAA,CAAClB,MAAM;IACLc,KAAK,EAAC,SAAS;IACfK,SAAS,EAAEb,MAAM,CAACiB,UAAW;IAC7B,cAAW;EAAkB,gBAE7BnB,KAAA,CAAAc,aAAA,CAACf,UAAU;IAACqB,IAAI,EAAE;EAAG,CAAE,CACjB,CACG,CACV,CAAC;AAEV","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdfViewerThumbnail.js","names":["classnames","React","useCallback","useEffect","useRef","useState","DEVICE_PIXEL_RATIO","THUMBNAIL_SCALE","styles","PdfViewerThumbnail","document","pageNumber","isActive","onClick","canvasRef","renderTaskRef","dimensions","setDimensions","undefined","cancelled","getPage","then","page","current","viewport","getViewport","scale","canvas","context","getContext","width","Math","floor","height","style","cancel","setTransform","renderTask","render","canvasContext","promise","catch","err","Error","message","includes","handleKeyDown","e","key","preventDefault","containerClassName","thumbnailContainer","active","createElement","className","onKeyDown","role","tabIndex","ref"],"sources":["PdfViewerThumbnail.tsx"],"sourcesContent":["/*\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 type { PDFDocumentProxy, PDFPageProxy } from \"pdfjs-dist\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { DEVICE_PIXEL_RATIO, THUMBNAIL_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerThumbnail.module.css\";\n\ninterface PdfViewerThumbnailProps {\n document: PDFDocumentProxy;\n pageNumber: number;\n isActive: boolean;\n onClick: () => void;\n}\n\nexport function PdfViewerThumbnail({\n document,\n pageNumber,\n isActive,\n onClick,\n}: PdfViewerThumbnailProps): React.ReactElement {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const renderTaskRef = useRef<ReturnType<PDFPageProxy[\"render\"]> | null>(null);\n const [dimensions, setDimensions] = useState<\n { width: number; height: number } | undefined\n >(undefined);\n\n useEffect(() => {\n let cancelled = false;\n\n void document.getPage(pageNumber).then((page) => {\n if (cancelled || canvasRef.current == null) {\n return;\n }\n\n const viewport = page.getViewport({ scale: THUMBNAIL_SCALE });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return;\n }\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\n setDimensions({\n width: Math.floor(viewport.width),\n height: Math.floor(viewport.height),\n });\n\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n }\n\n context.setTransform(
|
|
1
|
+
{"version":3,"file":"PdfViewerThumbnail.js","names":["classnames","React","useCallback","useEffect","useRef","useState","DEVICE_PIXEL_RATIO","THUMBNAIL_SCALE","styles","PdfViewerThumbnail","document","pageNumber","isActive","onClick","canvasRef","renderTaskRef","dimensions","setDimensions","undefined","cancelled","getPage","then","page","current","viewport","getViewport","scale","canvas","context","getContext","width","Math","floor","height","style","cancel","setTransform","renderTask","render","canvasContext","promise","catch","err","Error","message","includes","handleKeyDown","e","key","preventDefault","containerClassName","thumbnailContainer","active","createElement","className","onKeyDown","role","tabIndex","ref"],"sources":["PdfViewerThumbnail.tsx"],"sourcesContent":["/*\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 type { PDFDocumentProxy, PDFPageProxy } from \"pdfjs-dist\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { DEVICE_PIXEL_RATIO, THUMBNAIL_SCALE } from \"../constants.js\";\n\nimport styles from \"./PdfViewerThumbnail.module.css\";\n\ninterface PdfViewerThumbnailProps {\n document: PDFDocumentProxy;\n pageNumber: number;\n isActive: boolean;\n onClick: () => void;\n}\n\nexport function PdfViewerThumbnail({\n document,\n pageNumber,\n isActive,\n onClick,\n}: PdfViewerThumbnailProps): React.ReactElement {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const renderTaskRef = useRef<ReturnType<PDFPageProxy[\"render\"]> | null>(null);\n const [dimensions, setDimensions] = useState<\n { width: number; height: number } | undefined\n >(undefined);\n\n useEffect(() => {\n let cancelled = false;\n\n void document.getPage(pageNumber).then((page) => {\n if (cancelled || canvasRef.current == null) {\n return;\n }\n\n const viewport = page.getViewport({ scale: THUMBNAIL_SCALE });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return;\n }\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\n setDimensions({\n width: Math.floor(viewport.width),\n height: Math.floor(viewport.height),\n });\n\n if (renderTaskRef.current != null) {\n renderTaskRef.current.cancel();\n }\n\n context.setTransform(DEVICE_PIXEL_RATIO, 0, 0, DEVICE_PIXEL_RATIO, 0, 0);\n\n const renderTask = page.render({\n canvasContext: context,\n viewport,\n });\n renderTaskRef.current = renderTask;\n\n void renderTask.promise.catch((err: unknown) => {\n if (err instanceof Error && err.message.includes(\"cancelled\")) {\n return;\n }\n throw err;\n });\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\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n },\n [onClick]\n );\n\n const containerClassName = classnames(\n styles.thumbnailContainer,\n isActive && styles.active\n );\n\n return (\n <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={\n dimensions != null\n ? { width: dimensions.width, height: dimensions.height }\n : undefined\n }\n >\n <canvas ref={canvasRef} className={styles.canvas} />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdfViewerToolbar.js","names":["Button","Input","ChevronLeft","ChevronRight","Download","FloppyDisk","Highlight","Menu","Minus","Plus","RotatePage","Search","ZoomToFit","classnames","React","useCallback","useEffect","useState","MAX_SCALE","MIN_SCALE","styles","PdfViewerToolbar","currentPage","numPages","scale","autoSize","sidebarOpen","onPageChange","onZoomIn","onZoomOut","onAutoSizeToggle","onSearchOpen","onSidebarToggle","onDownload","enableDownload","onRotateLeft","onRotateRight","enableHighlight","highlightModeActive","onHighlightToggle","enableFormSave","onFormSave","pageInputValue","setPageInputValue","String","handlePrevPage","newPage","handleNextPage","handlePageInputChange","e","target","value","handlePageInputKeyDown","key","page","parseInt","isNaN","handlePageInputBlur","scalePercent","Math","round","createElement","className","toolbar","toolbarButton","onClick","title","type","size","separator","toolbarGroup","disabled","pageInput","onChange","onKeyDown","onBlur","pageCount","scaleDisplay","toolbarButtonActive","style","transform","Fragment"],"sources":["PdfViewerToolbar.tsx"],"sourcesContent":["/*\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 {\n ChevronLeft,\n ChevronRight,\n Download,\n FloppyDisk,\n Highlight,\n Menu,\n Minus,\n Plus,\n RotatePage,\n Search,\n ZoomToFit,\n} from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { MAX_SCALE, MIN_SCALE } from \"../constants.js\";\nimport styles from \"./PdfViewerToolbar.module.css\";\n\nexport interface PdfViewerToolbarProps {\n currentPage: number;\n numPages: number;\n scale: number;\n autoSize: boolean;\n sidebarOpen: boolean;\n onPageChange: (page: number) => void;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onAutoSizeToggle: () => void;\n onSearchOpen: () => void;\n onSidebarToggle: () => void;\n onDownload: () => void;\n enableDownload: boolean;\n onRotateLeft: () => void;\n onRotateRight: () => void;\n enableHighlight: boolean;\n highlightModeActive: boolean;\n onHighlightToggle: () => void;\n enableFormSave?: boolean;\n onFormSave?: () => void;\n}\n\nexport function PdfViewerToolbar({\n currentPage,\n numPages,\n scale,\n autoSize,\n sidebarOpen,\n onPageChange,\n onZoomIn,\n onZoomOut,\n onAutoSizeToggle,\n onSearchOpen,\n onSidebarToggle,\n onDownload,\n enableDownload,\n onRotateLeft,\n onRotateRight,\n enableHighlight,\n highlightModeActive,\n onHighlightToggle,\n enableFormSave = false,\n onFormSave,\n}: PdfViewerToolbarProps): React.ReactElement {\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\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\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\n const handlePageInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setPageInputValue(e.target.value);\n },\n [],\n );\n\n const handlePageInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\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 },\n [pageInputValue, numPages, onPageChange, currentPage],\n );\n\n const handlePageInputBlur = useCallback(() => {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n\n const scalePercent = `${Math.round(scale * 100)}%`;\n\n return (\n <div className={styles.toolbar}>\n <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 >\n <Menu size={16} />\n </Button>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <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 >\n <ChevronLeft size={16} />\n </Button>\n <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 />\n <span className={styles.pageCount}>of {numPages}</span>\n <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 >\n <ChevronRight size={16} />\n </Button>\n </div>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <Button\n className={styles.toolbarButton}\n onClick={onZoomOut}\n disabled={scale <= MIN_SCALE}\n aria-label=\"Zoom out\"\n title=\"Zoom out\"\n type=\"button\"\n >\n <Minus size={16} />\n </Button>\n <span className={styles.scaleDisplay}>{scalePercent}</span>\n <Button\n className={styles.toolbarButton}\n onClick={onZoomIn}\n disabled={scale >= MAX_SCALE}\n aria-label=\"Zoom in\"\n title=\"Zoom in\"\n type=\"button\"\n >\n <Plus size={16} />\n </Button>\n <Button\n className={classnames(\n styles.toolbarButton,\n autoSize && styles.toolbarButtonActive,\n )}\n onClick={onAutoSizeToggle}\n aria-label={autoSize ? \"Disable fit to width\" : \"Fit to width\"}\n title={autoSize ? \"Disable fit to width\" : \"Fit to width\"}\n aria-pressed={autoSize}\n type=\"button\"\n >\n <ZoomToFit size={16} />\n </Button>\n </div>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <Button\n className={styles.toolbarButton}\n onClick={onRotateLeft}\n aria-label=\"Rotate left\"\n title=\"Rotate left\"\n type=\"button\"\n >\n <RotatePage size={16} />\n </Button>\n <Button\n className={styles.toolbarButton}\n onClick={onRotateRight}\n aria-label=\"Rotate right\"\n title=\"Rotate right\"\n type=\"button\"\n >\n <RotatePage size={16} style={{ transform: \"scaleX(-1)\" }} />\n </Button>\n </div>\n\n {enableHighlight && (\n <>\n <div className={styles.separator} />\n\n <Button\n className={classnames(\n styles.toolbarButton,\n highlightModeActive && styles.toolbarButtonActive,\n )}\n onClick={onHighlightToggle}\n aria-label={highlightModeActive\n ? \"Disable highlight mode\"\n : \"Enable highlight mode\"}\n title={highlightModeActive\n ? \"Disable highlight mode\"\n : \"Enable highlight mode\"}\n aria-pressed={highlightModeActive}\n type=\"button\"\n >\n <Highlight size={16} />\n </Button>\n </>\n )}\n\n <div className={styles.separator} />\n\n <Button\n className={styles.toolbarButton}\n onClick={onSearchOpen}\n aria-label=\"Search\"\n title=\"Search\"\n type=\"button\"\n >\n <Search size={16} />\n </Button>\n\n {enableDownload && (\n <>\n <div className={styles.separator} />\n\n <Button\n className={styles.toolbarButton}\n onClick={onDownload}\n aria-label=\"Download\"\n title=\"Download\"\n type=\"button\"\n >\n <Download size={16} />\n </Button>\n </>\n )}\n\n {enableFormSave && (\n <>\n <div className={styles.separator} />\n\n <Button\n className={styles.toolbarButton}\n onClick={onFormSave}\n aria-label=\"Save form\"\n title=\"Save form\"\n type=\"button\"\n >\n <FloppyDisk size={16} />\n </Button>\n </>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PdfViewerToolbar.js","names":["Button","Input","ChevronLeft","ChevronRight","Download","FloppyDisk","Highlight","Menu","Minus","Plus","RotatePage","Search","ZoomToFit","classnames","React","useCallback","useEffect","useState","MAX_SCALE","MIN_SCALE","styles","PdfViewerToolbar","currentPage","numPages","scale","autoSize","sidebarOpen","onPageChange","onZoomIn","onZoomOut","onAutoSizeToggle","onSearchOpen","onSidebarToggle","onDownload","enableDownload","onRotateLeft","onRotateRight","enableHighlight","highlightModeActive","onHighlightToggle","enableFormSave","onFormSave","pageInputValue","setPageInputValue","String","handlePrevPage","newPage","handleNextPage","handlePageInputChange","e","target","value","handlePageInputKeyDown","key","page","parseInt","isNaN","handlePageInputBlur","scalePercent","Math","round","createElement","className","toolbar","toolbarButton","onClick","title","type","size","separator","toolbarGroup","disabled","pageInput","onChange","onKeyDown","onBlur","pageCount","scaleDisplay","toolbarButtonActive","style","transform","Fragment"],"sources":["PdfViewerToolbar.tsx"],"sourcesContent":["/*\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 {\n ChevronLeft,\n ChevronRight,\n Download,\n FloppyDisk,\n Highlight,\n Menu,\n Minus,\n Plus,\n RotatePage,\n Search,\n ZoomToFit,\n} from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useEffect, useState } from \"react\";\n\nimport { MAX_SCALE, MIN_SCALE } from \"../constants.js\";\n\nimport styles from \"./PdfViewerToolbar.module.css\";\n\nexport interface PdfViewerToolbarProps {\n currentPage: number;\n numPages: number;\n scale: number;\n autoSize: boolean;\n sidebarOpen: boolean;\n onPageChange: (page: number) => void;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onAutoSizeToggle: () => void;\n onSearchOpen: () => void;\n onSidebarToggle: () => void;\n onDownload: () => void;\n enableDownload: boolean;\n onRotateLeft: () => void;\n onRotateRight: () => void;\n enableHighlight: boolean;\n highlightModeActive: boolean;\n onHighlightToggle: () => void;\n enableFormSave?: boolean;\n onFormSave?: () => void;\n}\n\nexport function PdfViewerToolbar({\n currentPage,\n numPages,\n scale,\n autoSize,\n sidebarOpen,\n onPageChange,\n onZoomIn,\n onZoomOut,\n onAutoSizeToggle,\n onSearchOpen,\n onSidebarToggle,\n onDownload,\n enableDownload,\n onRotateLeft,\n onRotateRight,\n enableHighlight,\n highlightModeActive,\n onHighlightToggle,\n enableFormSave = false,\n onFormSave,\n}: PdfViewerToolbarProps): React.ReactElement {\n const [pageInputValue, setPageInputValue] = useState(String(currentPage));\n\n // Sync input display when currentPage changes from scrolling\n useEffect(\n function syncPageInput() {\n setPageInputValue(String(currentPage));\n },\n [currentPage]\n );\n\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\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\n const handlePageInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setPageInputValue(e.target.value);\n },\n []\n );\n\n const handlePageInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\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 },\n [pageInputValue, numPages, onPageChange, currentPage]\n );\n\n const handlePageInputBlur = useCallback(() => {\n setPageInputValue(String(currentPage));\n }, [currentPage]);\n\n const scalePercent = `${Math.round(scale * 100)}%`;\n\n return (\n <div className={styles.toolbar}>\n <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 >\n <Menu size={16} />\n </Button>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <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 >\n <ChevronLeft size={16} />\n </Button>\n <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 />\n <span className={styles.pageCount}>of {numPages}</span>\n <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 >\n <ChevronRight size={16} />\n </Button>\n </div>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <Button\n className={styles.toolbarButton}\n onClick={onZoomOut}\n disabled={scale <= MIN_SCALE}\n aria-label=\"Zoom out\"\n title=\"Zoom out\"\n type=\"button\"\n >\n <Minus size={16} />\n </Button>\n <span className={styles.scaleDisplay}>{scalePercent}</span>\n <Button\n className={styles.toolbarButton}\n onClick={onZoomIn}\n disabled={scale >= MAX_SCALE}\n aria-label=\"Zoom in\"\n title=\"Zoom in\"\n type=\"button\"\n >\n <Plus size={16} />\n </Button>\n <Button\n className={classnames(\n styles.toolbarButton,\n autoSize && styles.toolbarButtonActive\n )}\n onClick={onAutoSizeToggle}\n aria-label={autoSize ? \"Disable fit to width\" : \"Fit to width\"}\n title={autoSize ? \"Disable fit to width\" : \"Fit to width\"}\n aria-pressed={autoSize}\n type=\"button\"\n >\n <ZoomToFit size={16} />\n </Button>\n </div>\n\n <div className={styles.separator} />\n\n <div className={styles.toolbarGroup}>\n <Button\n className={styles.toolbarButton}\n onClick={onRotateLeft}\n aria-label=\"Rotate left\"\n title=\"Rotate left\"\n type=\"button\"\n >\n <RotatePage size={16} />\n </Button>\n <Button\n className={styles.toolbarButton}\n onClick={onRotateRight}\n aria-label=\"Rotate right\"\n title=\"Rotate right\"\n type=\"button\"\n >\n <RotatePage size={16} style={{ transform: \"scaleX(-1)\" }} />\n </Button>\n </div>\n\n {enableHighlight && (\n <>\n <div className={styles.separator} />\n\n <Button\n className={classnames(\n styles.toolbarButton,\n highlightModeActive && styles.toolbarButtonActive\n )}\n onClick={onHighlightToggle}\n aria-label={\n highlightModeActive\n ? \"Disable highlight mode\"\n : \"Enable highlight mode\"\n }\n title={\n highlightModeActive\n ? \"Disable highlight mode\"\n : \"Enable highlight mode\"\n }\n aria-pressed={highlightModeActive}\n type=\"button\"\n >\n <Highlight size={16} />\n </Button>\n </>\n )}\n\n <div className={styles.separator} />\n\n <Button\n className={styles.toolbarButton}\n onClick={onSearchOpen}\n aria-label=\"Search\"\n title=\"Search\"\n type=\"button\"\n >\n <Search size={16} />\n </Button>\n\n {enableDownload && (\n <>\n <div className={styles.separator} />\n\n <Button\n className={styles.toolbarButton}\n onClick={onDownload}\n aria-label=\"Download\"\n title=\"Download\"\n type=\"button\"\n >\n <Download size={16} />\n </Button>\n </>\n )}\n\n {enableFormSave && (\n <>\n <div className={styles.separator} />\n\n <Button\n className={styles.toolbarButton}\n onClick={onFormSave}\n aria-label=\"Save form\"\n title=\"Save form\"\n type=\"button\"\n >\n <FloppyDisk size={16} />\n </Button>\n </>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["EMPTY_ANNOTATION_ARRAY","EMPTY_STRING","PAGE_WIDTH_SCALE_VALUE","SCALE_STEP","MIN_SCALE","MAX_SCALE","DEFAULT_PAGE_HEIGHT","THUMBNAIL_GAP","THUMBNAIL_SCALE","DEVICE_PIXEL_RATIO","window","devicePixelRatio","OUTLINE_HEADING_SIZE_RATIO","OUTLINE_MAX_HEADING_LENGTH","FIND_EVENT","UPDATE_FIND_CONTROL_STATE_EVENT","UPDATE_FIND_MATCHES_COUNT_EVENT","PAGE_CHANGING_EVENT","SCALE_CHANGING_EVENT","PAGE_RENDERED_EVENT","PAGES_LOADED_EVENT","ANNOTATION_LAYER_RENDERED_EVENT"],"sources":["constants.ts"],"sourcesContent":["/*\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 type { PdfAnnotation } from \"./types.js\";\n\n// Default empty values (stable references to avoid re-renders)\nexport const EMPTY_ANNOTATION_ARRAY: PdfAnnotation[] = [];\nexport const EMPTY_STRING = \"\";\n\n// Scale and dimension configuration\nexport const PAGE_WIDTH_SCALE_VALUE = \"page-width\";\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: number
|
|
1
|
+
{"version":3,"file":"constants.js","names":["EMPTY_ANNOTATION_ARRAY","EMPTY_STRING","PAGE_WIDTH_SCALE_VALUE","SCALE_STEP","MIN_SCALE","MAX_SCALE","DEFAULT_PAGE_HEIGHT","THUMBNAIL_GAP","THUMBNAIL_SCALE","DEVICE_PIXEL_RATIO","window","devicePixelRatio","OUTLINE_HEADING_SIZE_RATIO","OUTLINE_MAX_HEADING_LENGTH","FIND_EVENT","UPDATE_FIND_CONTROL_STATE_EVENT","UPDATE_FIND_MATCHES_COUNT_EVENT","PAGE_CHANGING_EVENT","SCALE_CHANGING_EVENT","PAGE_RENDERED_EVENT","PAGES_LOADED_EVENT","ANNOTATION_LAYER_RENDERED_EVENT"],"sources":["constants.ts"],"sourcesContent":["/*\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 type { PdfAnnotation } from \"./types.js\";\n\n// Default empty values (stable references to avoid re-renders)\nexport const EMPTY_ANNOTATION_ARRAY: PdfAnnotation[] = [];\nexport const EMPTY_STRING = \"\";\n\n// Scale and dimension configuration\nexport const PAGE_WIDTH_SCALE_VALUE = \"page-width\";\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: number =\n 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\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA,OAAO,MAAMA,sBAAuC,GAAG,EAAE;AACzD,OAAO,MAAMC,YAAY,GAAG,EAAE;;AAE9B;AACA,OAAO,MAAMC,sBAAsB,GAAG,YAAY;AAClD,OAAO,MAAMC,UAAU,GAAG,IAAI;AAC9B,OAAO,MAAMC,SAAS,GAAG,IAAI;AAC7B,OAAO,MAAMC,SAAS,GAAG,GAAG;AAC5B,OAAO,MAAMC,mBAAmB,GAAG,GAAG;AACtC,OAAO,MAAMC,aAAa,GAAG,EAAE;AAC/B,OAAO,MAAMC,eAAe,GAAG,GAAG;AAClC,OAAO,MAAMC,kBAA0B,GACrC,OAAOC,MAAM,KAAK,WAAW,GAAGA,MAAM,CAACC,gBAAgB,IAAI,CAAC,GAAG,CAAC;;AAElE;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAG,IAAI;AAC9C;AACA,OAAO,MAAMC,0BAA0B,GAAG,GAAG;;AAE7C;AACA,OAAO,MAAMC,UAAU,GAAG,MAAM;AAChC,OAAO,MAAMC,+BAA+B,GAAG,wBAAwB;AACvE,OAAO,MAAMC,+BAA+B,GAAG,wBAAwB;AACvE,OAAO,MAAMC,mBAAmB,GAAG,cAAc;AACjD,OAAO,MAAMC,oBAAoB,GAAG,eAAe;AACnD,OAAO,MAAMC,mBAAmB,GAAG,cAAc;AACjD,OAAO,MAAMC,kBAAkB,GAAG,aAAa;AAC/C;AACA,OAAO,MAAMC,+BAA+B,GAAG,yBAAyB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePdfAnnotationPortals.js","names":["useEffect","useState","PAGE_RENDERED_EVENT","usePdfAnnotationPortals","pdfViewerRef","eventBusRef","document","portalTargets","setPortalTargets","eventBus","current","pdfViewer","measurePage","pageNumber","containerRect","scrollContainer","pageView","getPageView","div","viewport","divRect","getBoundingClientRect","width","height","left","scrollLeft","top","scrollTop","pageHeight","viewBox","scale","transform","slice","readContainer","container","rect","el","handlePageRendered","evt","next","prev","filtered","filter","t","sort","a","b","rafHandle","flushRemeasure","length","target","remeasured","push","remeasureAll","requestAnimationFrame","on","containerObserver","ResizeObserver","observe","off","disconnect","cancelAnimationFrame"],"sources":["usePdfAnnotationPortals.ts"],"sourcesContent":["/*\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 type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type { EventBus, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { PAGE_RENDERED_EVENT } from \"../constants.js\";\n\nexport interface AnnotationPortalTarget {\n pageNumber: number;\n left: number;\n top: number;\n width: number;\n height: number;\n pageHeight: number;\n scale: number;\n transform: number[];\n}\n\nexport function usePdfAnnotationPortals(\n pdfViewerRef: RefObject<PDFViewer | null>,\n eventBusRef: RefObject<EventBus | null>,\n document: PDFDocumentProxy | undefined,\n): AnnotationPortalTarget[] {\n const [portalTargets, setPortalTargets] = useState<AnnotationPortalTarget[]>(\n [],\n );\n\n useEffect(function subscribePageEvents() {\n const eventBus = eventBusRef.current;\n const pdfViewer = pdfViewerRef.current;\n if (eventBus == null || pdfViewer == null) {\n return;\n }\n\n const measurePage = (\n pageNumber: number,\n containerRect: DOMRect,\n scrollContainer: HTMLElement,\n ): AnnotationPortalTarget | null => {\n const pageView = pdfViewer.getPageView(pageNumber - 1);\n if (pageView?.div == null || pageView?.viewport == null) {\n return null;\n }\n const div = pageView.div as HTMLDivElement;\n const divRect = div.getBoundingClientRect();\n if (divRect.width <= 0 || divRect.height <= 0) {\n return null;\n }\n return {\n pageNumber,\n // Assumes scrollContainer has zero border/padding; otherwise overlays will be offset.\n left: divRect.left - containerRect.left + scrollContainer.scrollLeft,\n top: divRect.top - containerRect.top + scrollContainer.scrollTop,\n width: divRect.width,\n height: divRect.height,\n // viewBox is [xMin, yMin, width, height] and we need the original height before scaling\n pageHeight: pageView.viewport.viewBox[3],\n scale: pageView.viewport.scale,\n transform: pageView.viewport.transform.slice(),\n };\n };\n\n const readContainer = (): {\n rect: DOMRect;\n el: HTMLElement;\n } | null => {\n const scrollContainer = pdfViewer.container as HTMLElement | null;\n if (scrollContainer == null) {\n return null;\n }\n return {\n rect: scrollContainer.getBoundingClientRect(),\n el: scrollContainer,\n };\n };\n\n const handlePageRendered = (evt: { pageNumber: number }) => {\n const container = readContainer();\n if (container == null) {\n return;\n }\n const next = measurePage(evt.pageNumber, container.rect, container.el);\n setPortalTargets((prev) => {\n const filtered = prev.filter((t) => t.pageNumber !== evt.pageNumber);\n if (next == null) {\n return filtered;\n }\n return [...filtered, next].sort((a, b) => a.pageNumber - b.pageNumber);\n });\n };\n\n let rafHandle: number | null = null;\n const flushRemeasure = () => {\n rafHandle = null;\n setPortalTargets((prev) => {\n if (prev.length === 0) {\n return prev;\n }\n const container = readContainer();\n if (container == null) {\n return prev;\n }\n const next: AnnotationPortalTarget[] = [];\n for (const target of prev) {\n const remeasured = measurePage(\n target.pageNumber,\n container.rect,\n container.el,\n );\n if (remeasured != null) {\n next.push(remeasured);\n }\n }\n return next;\n });\n };\n const remeasureAll = () => {\n if (rafHandle != null) {\n return;\n }\n rafHandle = requestAnimationFrame(flushRemeasure);\n };\n\n eventBus.on(PAGE_RENDERED_EVENT, handlePageRendered);\n eventBus.on(\"scalechanging\", remeasureAll);\n eventBus.on(\"rotationchanging\", remeasureAll);\n\n const scrollContainer = pdfViewer.container as HTMLElement | null;\n let containerObserver: ResizeObserver | undefined;\n if (scrollContainer != null && typeof ResizeObserver !== \"undefined\") {\n containerObserver = new ResizeObserver(remeasureAll);\n containerObserver.observe(scrollContainer);\n }\n\n return () => {\n eventBus.off(PAGE_RENDERED_EVENT, handlePageRendered);\n eventBus.off(\"scalechanging\", remeasureAll);\n eventBus.off(\"rotationchanging\", remeasureAll);\n containerObserver?.disconnect();\n if (rafHandle != null) {\n cancelAnimationFrame(rafHandle);\n rafHandle = null;\n }\n setPortalTargets([]);\n };\n }, [document]);\n\n return portalTargets;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,mBAAmB,QAAQ,iBAAiB;AAarD,OAAO,SAASC,uBAAuBA,CACrCC,YAAyC,EACzCC,WAAuC,EACvCC,QAAsC,EACZ;EAC1B,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGP,QAAQ,CAChD,EACF,CAAC;EAEDD,SAAS,CAAC,YAA+B;IACvC,MAAMS,QAAQ,GAAGJ,WAAW,CAACK,OAAO;IACpC,MAAMC,SAAS,GAAGP,YAAY,CAACM,OAAO;IACtC,IAAID,QAAQ,IAAI,IAAI,IAAIE,SAAS,IAAI,IAAI,EAAE;MACzC;IACF;IAEA,MAAMC,WAAW,GAAGA,CAClBC,UAAkB,EAClBC,aAAsB,EACtBC,eAA4B,KACM;MAClC,MAAMC,QAAQ,GAAGL,SAAS,CAACM,WAAW,CAACJ,UAAU,GAAG,CAAC,CAAC;MACtD,IAAIG,QAAQ,EAAEE,GAAG,IAAI,IAAI,IAAIF,QAAQ,EAAEG,QAAQ,IAAI,IAAI,EAAE;QACvD,OAAO,IAAI;MACb;MACA,MAAMD,GAAG,GAAGF,QAAQ,CAACE,GAAqB;MAC1C,MAAME,OAAO,GAAGF,GAAG,CAACG,qBAAqB,CAAC,CAAC;MAC3C,IAAID,OAAO,CAACE,KAAK,IAAI,CAAC,IAAIF,OAAO,CAACG,MAAM,IAAI,CAAC,EAAE;QAC7C,OAAO,IAAI;MACb;MACA,OAAO;QACLV,UAAU;QACV;QACAW,IAAI,EAAEJ,OAAO,CAACI,IAAI,GAAGV,aAAa,CAACU,IAAI,GAAGT,eAAe,CAACU,UAAU;QACpEC,GAAG,EAAEN,OAAO,CAACM,GAAG,GAAGZ,aAAa,CAACY,GAAG,GAAGX,eAAe,CAACY,SAAS;QAChEL,KAAK,EAAEF,OAAO,CAACE,KAAK;QACpBC,MAAM,EAAEH,OAAO,CAACG,MAAM;QACtB;QACAK,UAAU,EAAEZ,QAAQ,CAACG,QAAQ,CAACU,OAAO,CAAC,CAAC,CAAC;QACxCC,KAAK,EAAEd,QAAQ,CAACG,QAAQ,CAACW,KAAK;QAC9BC,SAAS,EAAEf,QAAQ,CAACG,QAAQ,CAACY,SAAS,CAACC,KAAK,CAAC;MAC/C,CAAC;IACH,CAAC;IAED,MAAMC,aAAa,GAAGA,CAAA,KAGV;MACV,MAAMlB,eAAe,GAAGJ,SAAS,CAACuB,SAA+B;MACjE,IAAInB,eAAe,IAAI,IAAI,EAAE;QAC3B,OAAO,IAAI;MACb;MACA,OAAO;QACLoB,IAAI,EAAEpB,eAAe,CAACM,qBAAqB,CAAC,CAAC;QAC7Ce,EAAE,EAAErB;MACN,CAAC;IACH,CAAC;IAED,MAAMsB,kBAAkB,GAAIC,GAA2B,IAAK;MAC1D,MAAMJ,SAAS,GAAGD,aAAa,CAAC,CAAC;MACjC,IAAIC,SAAS,IAAI,IAAI,EAAE;QACrB;MACF;MACA,MAAMK,IAAI,GAAG3B,WAAW,CAAC0B,GAAG,CAACzB,UAAU,EAAEqB,SAAS,CAACC,IAAI,EAAED,SAAS,CAACE,EAAE,CAAC;MACtE5B,gBAAgB,CAAEgC,IAAI,IAAK;QACzB,MAAMC,QAAQ,GAAGD,IAAI,CAACE,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAAC9B,UAAU,KAAKyB,GAAG,CAACzB,UAAU,CAAC;QACpE,IAAI0B,IAAI,IAAI,IAAI,EAAE;UAChB,OAAOE,QAAQ;QACjB;QACA,OAAO,CAAC,GAAGA,QAAQ,EAAEF,IAAI,CAAC,CAACK,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAChC,UAAU,GAAGiC,CAAC,CAACjC,UAAU,CAAC;MACxE,CAAC,CAAC;IACJ,CAAC;IAED,IAAIkC,SAAwB,GAAG,IAAI;IACnC,MAAMC,cAAc,GAAGA,CAAA,KAAM;MAC3BD,SAAS,GAAG,IAAI;MAChBvC,gBAAgB,CAAEgC,IAAI,IAAK;QACzB,IAAIA,IAAI,CAACS,MAAM,KAAK,CAAC,EAAE;UACrB,OAAOT,IAAI;QACb;QACA,MAAMN,SAAS,GAAGD,aAAa,CAAC,CAAC;QACjC,IAAIC,SAAS,IAAI,IAAI,EAAE;UACrB,OAAOM,IAAI;QACb;QACA,MAAMD,IAA8B,GAAG,EAAE;QACzC,KAAK,MAAMW,MAAM,IAAIV,IAAI,EAAE;UACzB,MAAMW,UAAU,GAAGvC,WAAW,CAC5BsC,MAAM,CAACrC,UAAU,EACjBqB,SAAS,CAACC,IAAI,EACdD,SAAS,CAACE,EACZ,CAAC;UACD,IAAIe,UAAU,IAAI,IAAI,EAAE;YACtBZ,IAAI,CAACa,IAAI,CAACD,UAAU,CAAC;UACvB;QACF;QACA,OAAOZ,IAAI;MACb,CAAC,CAAC;IACJ,CAAC;IACD,MAAMc,YAAY,GAAGA,CAAA,KAAM;MACzB,IAAIN,SAAS,IAAI,IAAI,EAAE;QACrB;MACF;MACAA,SAAS,GAAGO,qBAAqB,CAACN,cAAc,CAAC;IACnD,CAAC;IAEDvC,QAAQ,CAAC8C,EAAE,CAACrD,mBAAmB,EAAEmC,kBAAkB,CAAC;IACpD5B,QAAQ,CAAC8C,EAAE,CAAC,eAAe,EAAEF,YAAY,CAAC;IAC1C5C,QAAQ,CAAC8C,EAAE,CAAC,kBAAkB,EAAEF,YAAY,CAAC;IAE7C,MAAMtC,eAAe,GAAGJ,SAAS,CAACuB,SAA+B;IACjE,IAAIsB,iBAA6C;IACjD,IAAIzC,eAAe,IAAI,IAAI,IAAI,OAAO0C,cAAc,KAAK,WAAW,EAAE;MACpED,iBAAiB,GAAG,IAAIC,cAAc,CAACJ,YAAY,CAAC;MACpDG,iBAAiB,CAACE,OAAO,CAAC3C,eAAe,CAAC;IAC5C;IAEA,OAAO,MAAM;MACXN,QAAQ,CAACkD,GAAG,CAACzD,mBAAmB,EAAEmC,kBAAkB,CAAC;MACrD5B,QAAQ,CAACkD,GAAG,CAAC,eAAe,EAAEN,YAAY,CAAC;MAC3C5C,QAAQ,CAACkD,GAAG,CAAC,kBAAkB,EAAEN,YAAY,CAAC;MAC9CG,iBAAiB,EAAEI,UAAU,CAAC,CAAC;MAC/B,IAAIb,SAAS,IAAI,IAAI,EAAE;QACrBc,oBAAoB,CAACd,SAAS,CAAC;QAC/BA,SAAS,GAAG,IAAI;MAClB;MACAvC,gBAAgB,CAAC,EAAE,CAAC;IACtB,CAAC;EACH,CAAC,EAAE,CAACF,QAAQ,CAAC,CAAC;EAEd,OAAOC,aAAa;AACtB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"usePdfAnnotationPortals.js","names":["useEffect","useState","PAGE_RENDERED_EVENT","usePdfAnnotationPortals","pdfViewerRef","eventBusRef","document","portalTargets","setPortalTargets","eventBus","current","pdfViewer","measurePage","pageNumber","containerRect","scrollContainer","pageView","getPageView","div","viewport","divRect","getBoundingClientRect","width","height","left","scrollLeft","top","scrollTop","pageHeight","viewBox","scale","transform","slice","readContainer","container","rect","el","handlePageRendered","evt","next","prev","filtered","filter","t","sort","a","b","rafHandle","flushRemeasure","length","target","remeasured","push","remeasureAll","requestAnimationFrame","on","containerObserver","ResizeObserver","observe","off","disconnect","cancelAnimationFrame"],"sources":["usePdfAnnotationPortals.ts"],"sourcesContent":["/*\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 type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type { EventBus, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useEffect, useState } from \"react\";\n\nimport { PAGE_RENDERED_EVENT } from \"../constants.js\";\n\nexport interface AnnotationPortalTarget {\n pageNumber: number;\n left: number;\n top: number;\n width: number;\n height: number;\n pageHeight: number;\n scale: number;\n transform: number[];\n}\n\nexport function usePdfAnnotationPortals(\n pdfViewerRef: RefObject<PDFViewer | null>,\n eventBusRef: RefObject<EventBus | null>,\n document: PDFDocumentProxy | undefined\n): AnnotationPortalTarget[] {\n const [portalTargets, setPortalTargets] = useState<AnnotationPortalTarget[]>(\n []\n );\n\n useEffect(\n function subscribePageEvents() {\n const eventBus = eventBusRef.current;\n const pdfViewer = pdfViewerRef.current;\n if (eventBus == null || pdfViewer == null) {\n return;\n }\n\n const measurePage = (\n pageNumber: number,\n containerRect: DOMRect,\n scrollContainer: HTMLElement\n ): AnnotationPortalTarget | null => {\n const pageView = pdfViewer.getPageView(pageNumber - 1);\n if (pageView?.div == null || pageView?.viewport == null) {\n return null;\n }\n const div = pageView.div as HTMLDivElement;\n const divRect = div.getBoundingClientRect();\n if (divRect.width <= 0 || divRect.height <= 0) {\n return null;\n }\n return {\n pageNumber,\n // Assumes scrollContainer has zero border/padding; otherwise overlays will be offset.\n left: divRect.left - containerRect.left + scrollContainer.scrollLeft,\n top: divRect.top - containerRect.top + scrollContainer.scrollTop,\n width: divRect.width,\n height: divRect.height,\n // viewBox is [xMin, yMin, width, height] and we need the original height before scaling\n pageHeight: pageView.viewport.viewBox[3],\n scale: pageView.viewport.scale,\n transform: pageView.viewport.transform.slice(),\n };\n };\n\n const readContainer = (): {\n rect: DOMRect;\n el: HTMLElement;\n } | null => {\n const scrollContainer = pdfViewer.container as HTMLElement | null;\n if (scrollContainer == null) {\n return null;\n }\n return {\n rect: scrollContainer.getBoundingClientRect(),\n el: scrollContainer,\n };\n };\n\n const handlePageRendered = (evt: { pageNumber: number }) => {\n const container = readContainer();\n if (container == null) {\n return;\n }\n const next = measurePage(evt.pageNumber, container.rect, container.el);\n setPortalTargets((prev) => {\n const filtered = prev.filter((t) => t.pageNumber !== evt.pageNumber);\n if (next == null) {\n return filtered;\n }\n return [...filtered, next].sort(\n (a, b) => a.pageNumber - b.pageNumber\n );\n });\n };\n\n let rafHandle: number | null = null;\n const flushRemeasure = () => {\n rafHandle = null;\n setPortalTargets((prev) => {\n if (prev.length === 0) {\n return prev;\n }\n const container = readContainer();\n if (container == null) {\n return prev;\n }\n const next: AnnotationPortalTarget[] = [];\n for (const target of prev) {\n const remeasured = measurePage(\n target.pageNumber,\n container.rect,\n container.el\n );\n if (remeasured != null) {\n next.push(remeasured);\n }\n }\n return next;\n });\n };\n const remeasureAll = () => {\n if (rafHandle != null) {\n return;\n }\n rafHandle = requestAnimationFrame(flushRemeasure);\n };\n\n eventBus.on(PAGE_RENDERED_EVENT, handlePageRendered);\n eventBus.on(\"scalechanging\", remeasureAll);\n eventBus.on(\"rotationchanging\", remeasureAll);\n\n const scrollContainer = pdfViewer.container as HTMLElement | null;\n let containerObserver: ResizeObserver | undefined;\n if (scrollContainer != null && typeof ResizeObserver !== \"undefined\") {\n containerObserver = new ResizeObserver(remeasureAll);\n containerObserver.observe(scrollContainer);\n }\n\n return () => {\n eventBus.off(PAGE_RENDERED_EVENT, handlePageRendered);\n eventBus.off(\"scalechanging\", remeasureAll);\n eventBus.off(\"rotationchanging\", remeasureAll);\n containerObserver?.disconnect();\n if (rafHandle != null) {\n cancelAnimationFrame(rafHandle);\n rafHandle = null;\n }\n setPortalTargets([]);\n };\n },\n [document]\n );\n\n return portalTargets;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePdfAnnotationsByPage.js","names":["useMemo","usePdfAnnotationsByPage","annotations","result","ann","page","push"],"sources":["usePdfAnnotationsByPage.ts"],"sourcesContent":["/*\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\";\nimport type { PdfAnnotation } from \"../types.js\";\n\n/**\n * Groups a flat array of annotations by page number for efficient per-page lookup.\n */\nexport function usePdfAnnotationsByPage(\n annotations: PdfAnnotation[]
|
|
1
|
+
{"version":3,"file":"usePdfAnnotationsByPage.js","names":["useMemo","usePdfAnnotationsByPage","annotations","result","ann","page","push"],"sources":["usePdfAnnotationsByPage.ts"],"sourcesContent":["/*\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\nimport type { PdfAnnotation } from \"../types.js\";\n\n/**\n * Groups a flat array of annotations by page number for efficient per-page lookup.\n */\nexport function usePdfAnnotationsByPage(\n annotations: PdfAnnotation[]\n): Record<number, PdfAnnotation[]> {\n return useMemo(() => {\n const result: Record<number, PdfAnnotation[]> = {};\n for (const ann of annotations) {\n (result[ann.page] ??= []).push(ann);\n }\n return result;\n }, [annotations]);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAI/B;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CACrCC,WAA4B,EACK;EACjC,OAAOF,OAAO,CAAC,MAAM;IACnB,MAAMG,MAAuC,GAAG,CAAC,CAAC;IAClD,KAAK,MAAMC,GAAG,IAAIF,WAAW,EAAE;MAC7B,CAACC,MAAM,CAACC,GAAG,CAACC,IAAI,CAAC,KAAK,EAAE,EAAEC,IAAI,CAACF,GAAG,CAAC;IACrC;IACA,OAAOD,MAAM;EACf,CAAC,EAAE,CAACD,WAAW,CAAC,CAAC;AACnB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePdfDocument.js","names":["getDocument","GlobalWorkerOptions","pdfWorkerUrl","URL","import","meta","url","useEffect","useState","pdfWorker","workerInitialized","ensureWorker","workerSrc","href","usePdfDocument","src","document","setDocument","undefined","numPages","setNumPages","loading","setLoading","error","setError","loadingTask","data","cancelled","promise","then","pdf","err","Error","String","destroy"],"sources":["usePdfDocument.ts"],"sourcesContent":["/*\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 type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport { getDocument, GlobalWorkerOptions } from \"pdfjs-dist\";\nconst pdfWorkerUrl = new URL(\n \"pdfjs-dist/build/pdf.worker.min.mjs\",\n import.meta.url
|
|
1
|
+
{"version":3,"file":"usePdfDocument.js","names":["getDocument","GlobalWorkerOptions","pdfWorkerUrl","URL","import","meta","url","useEffect","useState","pdfWorker","workerInitialized","ensureWorker","workerSrc","href","usePdfDocument","src","document","setDocument","undefined","numPages","setNumPages","loading","setLoading","error","setError","loadingTask","data","cancelled","promise","then","pdf","err","Error","String","destroy"],"sources":["usePdfDocument.ts"],"sourcesContent":["/*\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 type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport { getDocument, GlobalWorkerOptions } from \"pdfjs-dist\";\nconst pdfWorkerUrl = new URL(\n \"pdfjs-dist/build/pdf.worker.min.mjs\",\n import.meta.url\n);\nimport { useEffect, useState } from \"react\";\n\nconst pdfWorker = {\n workerInitialized: false,\n ensureWorker() {\n GlobalWorkerOptions.workerSrc = pdfWorkerUrl.href;\n this.workerInitialized = true;\n },\n};\n\ninterface UsePdfDocumentResult {\n document: PDFDocumentProxy | undefined;\n numPages: number;\n loading: boolean;\n error: Error | undefined;\n}\n\nexport function usePdfDocument(\n src: string | ArrayBuffer\n): UsePdfDocumentResult {\n const [document, setDocument] = useState<PDFDocumentProxy | undefined>(\n undefined\n );\n const [numPages, setNumPages] = useState(0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | undefined>(undefined);\n\n useEffect(\n function loadPdfDocument() {\n pdfWorker.ensureWorker();\n setLoading(true);\n setError(undefined);\n\n const loadingTask = getDocument(\n typeof src === \"string\" ? { url: src } : { data: src }\n );\n\n let cancelled = false;\n\n loadingTask.promise.then(\n (pdf) => {\n if (!cancelled) {\n setDocument(pdf);\n setNumPages(pdf.numPages);\n setLoading(false);\n }\n },\n (err: unknown) => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n setLoading(false);\n }\n }\n );\n\n return () => {\n cancelled = true;\n void loadingTask.destroy();\n };\n },\n [src]\n );\n\n return { document, numPages, loading, error };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,WAAW,EAAEC,mBAAmB,QAAQ,YAAY;AAC7D,MAAMC,YAAY,GAAG,IAAIC,GAAG,CAC1B,qCAAqC,EACrCC,MAAM,CAACC,IAAI,CAACC,GACd,CAAC;AACD,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAE3C,MAAMC,SAAS,GAAG;EAChBC,iBAAiB,EAAE,KAAK;EACxBC,YAAYA,CAAA,EAAG;IACbV,mBAAmB,CAACW,SAAS,GAAGV,YAAY,CAACW,IAAI;IACjD,IAAI,CAACH,iBAAiB,GAAG,IAAI;EAC/B;AACF,CAAC;AASD,OAAO,SAASI,cAAcA,CAC5BC,GAAyB,EACH;EACtB,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGT,QAAQ,CACtCU,SACF,CAAC;EACD,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGZ,QAAQ,CAAC,CAAC,CAAC;EAC3C,MAAM,CAACa,OAAO,EAAEC,UAAU,CAAC,GAAGd,QAAQ,CAAC,IAAI,CAAC;EAC5C,MAAM,CAACe,KAAK,EAAEC,QAAQ,CAAC,GAAGhB,QAAQ,CAAoBU,SAAS,CAAC;EAEhEX,SAAS,CACP,YAA2B;IACzBE,SAAS,CAACE,YAAY,CAAC,CAAC;IACxBW,UAAU,CAAC,IAAI,CAAC;IAChBE,QAAQ,CAACN,SAAS,CAAC;IAEnB,MAAMO,WAAW,GAAGzB,WAAW,CAC7B,OAAOe,GAAG,KAAK,QAAQ,GAAG;MAAET,GAAG,EAAES;IAAI,CAAC,GAAG;MAAEW,IAAI,EAAEX;IAAI,CACvD,CAAC;IAED,IAAIY,SAAS,GAAG,KAAK;IAErBF,WAAW,CAACG,OAAO,CAACC,IAAI,CACrBC,GAAG,IAAK;MACP,IAAI,CAACH,SAAS,EAAE;QACdV,WAAW,CAACa,GAAG,CAAC;QAChBV,WAAW,CAACU,GAAG,CAACX,QAAQ,CAAC;QACzBG,UAAU,CAAC,KAAK,CAAC;MACnB;IACF,CAAC,EACAS,GAAY,IAAK;MAChB,IAAI,CAACJ,SAAS,EAAE;QACdH,QAAQ,CAACO,GAAG,YAAYC,KAAK,GAAGD,GAAG,GAAG,IAAIC,KAAK,CAACC,MAAM,CAACF,GAAG,CAAC,CAAC,CAAC;QAC7DT,UAAU,CAAC,KAAK,CAAC;MACnB;IACF,CACF,CAAC;IAED,OAAO,MAAM;MACXK,SAAS,GAAG,IAAI;MAChB,KAAKF,WAAW,CAACS,OAAO,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EACD,CAACnB,GAAG,CACN,CAAC;EAED,OAAO;IAAEC,QAAQ;IAAEG,QAAQ;IAAEE,OAAO;IAAEE;EAAM,CAAC;AAC/C","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePdfFormFields.js","names":["useCallback","useEffect","useRef","useState","ANNOTATION_LAYER_RENDERED_EVENT","getViewerContainer","viewer","container","normalizeFieldType","type","toFormFieldValue","storageValue","fieldType","Array","isArray","map","String","toStorageValue","formValue","usePdfFormFields","pdfViewerRef","eventBusRef","document","formData","onFormSubmit","onFormChange","hasFormFields","setHasFormFields","onFormSubmitRef","onFormChangeRef","formDataRef","current","fieldMapRef","Map","nameToIdsRef","doc","clear","cancelled","getFieldObjects","then","fieldObjects","fieldMap","nameToIds","fieldName","objects","Object","entries","ids","obj","typedObj","id","set","exportValues","page","push","length","size","populateFields","data","pdfViewer","storage","annotationStorage","value","get","entry","el","querySelector","CSS","escape","optionValue","HTMLInputElement","undefined","isSelected","setValue","checked","storageVal","HTMLSelectElement","HTMLTextAreaElement","eventBus","onAnnotationLayerRendered","on","off","listeners","handleFieldChange","getAttribute","attachListeners","root","elements","querySelectorAll","has","handler","addEventListener","observer","MutationObserver","mutations","mutation","node","addedNodes","Element","observe","childList","subtree","disconnect","removeEventListener","submitFormData","allValues","getAll","result","resolvedRadios","Set","add","groupIds","selectedValue","radioId","stored","val","radioEntry","rawValue"],"sources":["usePdfFormFields.ts"],"sourcesContent":["/*\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 type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type { EventBus, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { ANNOTATION_LAYER_RENDERED_EVENT } from \"../constants.js\";\nimport type { PdfFormFieldValue } from \"../types.js\";\n\n/** Get the viewer's container element (typed loosely by pdf.js). */\nfunction getViewerContainer(viewer: PDFViewer): HTMLElement | undefined {\n return (viewer as { container?: HTMLElement }).container;\n}\n\n/** Internal metadata for a single form field annotation. */\ninterface FieldEntry {\n fieldName: string;\n fieldType: \"text\" | \"checkbox\" | \"radiobutton\" | \"combobox\" | \"listbox\";\n exportValues: string | undefined;\n page: number;\n}\n\nexport interface UsePdfFormFieldsOptions {\n pdfViewerRef: RefObject<PDFViewer | null>;\n eventBusRef: RefObject<EventBus | null>;\n document: PDFDocumentProxy | undefined;\n formData?: Record<string, PdfFormFieldValue>;\n onFormSubmit?: (data: Record<string, PdfFormFieldValue>) => void;\n onFormChange?: (fieldName: string, value: PdfFormFieldValue) => void;\n}\n\nexport interface UsePdfFormFieldsResult {\n /** Whether the loaded PDF contains interactive form fields. */\n hasFormFields: boolean;\n /** Collect all current form field values and invoke onFormSubmit. */\n submitFormData: () => void;\n}\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(\n type: string,\n): \"text\" | \"checkbox\" | \"radiobutton\" | \"combobox\" | \"listbox\" {\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(\n storageValue: unknown,\n fieldType: \"text\" | \"checkbox\" | \"radiobutton\" | \"combobox\" | \"listbox\",\n): PdfFormFieldValue {\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(\n formValue: PdfFormFieldValue,\n fieldType: \"text\" | \"checkbox\" | \"radiobutton\" | \"combobox\" | \"listbox\",\n): unknown {\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}: UsePdfFormFieldsOptions): UsePdfFormFieldsResult {\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\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<Map<string, FieldEntry>>(new Map());\n // Reverse map from field name -> annotation IDs\n const nameToIdsRef = useRef<Map<string, string[]>>(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\n let cancelled = false;\n\n void doc.getFieldObjects().then((fieldObjects) => {\n if (cancelled || fieldObjects == null) {\n setHasFormFields(false);\n return;\n }\n\n const fieldMap = new Map<string, FieldEntry>();\n const nameToIds = new Map<string, string[]>();\n\n for (const [fieldName, objects] of Object.entries(fieldObjects)) {\n const ids: string[] = [];\n for (const obj of objects) {\n const typedObj = obj as {\n id?: string;\n type?: string;\n exportValues?: string;\n page?: number;\n };\n if (typedObj.id == null) continue;\n\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\n fieldMapRef.current = fieldMap;\n nameToIdsRef.current = nameToIds;\n setHasFormFields(fieldMap.size > 0);\n });\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\n const storage = doc.annotationStorage;\n const container = getViewerContainer(pdfViewer);\n\n for (const [fieldName, value] of Object.entries(data)) {\n const ids = nameToIdsRef.current.get(fieldName);\n if (ids == null) continue;\n\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(\n `[data-element-id=\"${CSS.escape(id)}\"]`,\n );\n\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\n ?? (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, { value: storageVal });\n\n if (el == null) continue;\n\n if (\n entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement\n ) {\n el.checked = typeof storageVal === \"boolean\"\n ? storageVal\n : storageVal !== \"Off\";\n } else if (el instanceof HTMLSelectElement) {\n el.value = String(value);\n } else if (\n el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement\n ) {\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\n const onAnnotationLayerRendered = () => {\n populateFields();\n };\n\n eventBus.on(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n\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\n const listeners = new Map<Element, () => void>();\n\n function handleFieldChange(\n el: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n ) {\n const id = el.getAttribute(\"data-element-id\");\n if (id == null) return;\n\n const entry = fieldMapRef.current.get(id);\n if (entry == null) return;\n\n let value: PdfFormFieldValue;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n value = el.checked;\n } else if (\n entry.fieldType === \"radiobutton\" && el instanceof HTMLInputElement\n ) {\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\n onFormChangeRef.current?.(entry.fieldName, value);\n }\n\n function attachListeners(root: Node) {\n const elements = (root as Element).querySelectorAll?.(\n \".annotationLayer input, .annotationLayer select, .annotationLayer textarea\",\n );\n if (elements == null) return;\n\n for (const el of elements) {\n if (listeners.has(el)) continue;\n\n const handler = () => {\n handleFieldChange(\n el as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n );\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\n observer.observe(container, { childList: true, 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\n const storage = doc.annotationStorage;\n const allValues = storage.getAll() as Record<string, unknown> | null;\n const result: Record<string, PdfFormFieldValue> = {};\n\n // Track which radio group has been resolved\n const resolvedRadios = new Set<string>();\n\n for (const [id, entry] of fieldMapRef.current) {\n const { fieldName, fieldType } = 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 =\n stored != null && typeof stored === \"object\" && \"value\" in stored\n ? (stored as { value: unknown }).value\n : 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\n const stored = allValues?.[id];\n const rawValue =\n stored != null && typeof stored === \"object\" && \"value\" in stored\n ? (stored as { value: unknown }).value\n : 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\n result[fieldName] = toFormFieldValue(rawValue, fieldType);\n }\n\n onFormSubmitRef.current?.(result);\n }, [document]);\n\n return {\n hasFormFields,\n submitFormData,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"usePdfFormFields.js","names":["useCallback","useEffect","useRef","useState","ANNOTATION_LAYER_RENDERED_EVENT","getViewerContainer","viewer","container","normalizeFieldType","type","toFormFieldValue","storageValue","fieldType","Array","isArray","map","String","toStorageValue","formValue","usePdfFormFields","pdfViewerRef","eventBusRef","document","formData","onFormSubmit","onFormChange","hasFormFields","setHasFormFields","onFormSubmitRef","onFormChangeRef","formDataRef","current","fieldMapRef","Map","nameToIdsRef","doc","clear","cancelled","getFieldObjects","then","fieldObjects","fieldMap","nameToIds","fieldName","objects","Object","entries","ids","obj","typedObj","id","set","exportValues","page","push","length","size","populateFields","data","pdfViewer","storage","annotationStorage","value","get","entry","el","querySelector","CSS","escape","optionValue","HTMLInputElement","undefined","isSelected","setValue","checked","storageVal","HTMLSelectElement","HTMLTextAreaElement","eventBus","onAnnotationLayerRendered","on","off","listeners","handleFieldChange","getAttribute","attachListeners","root","elements","querySelectorAll","has","handler","addEventListener","observer","MutationObserver","mutations","mutation","node","addedNodes","Element","observe","childList","subtree","disconnect","removeEventListener","submitFormData","allValues","getAll","result","resolvedRadios","Set","add","groupIds","selectedValue","radioId","stored","val","radioEntry","rawValue"],"sources":["usePdfFormFields.ts"],"sourcesContent":["/*\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 type { PDFDocumentProxy } from \"pdfjs-dist\";\nimport type { EventBus, PDFViewer } from \"pdfjs-dist/web/pdf_viewer.mjs\";\nimport type { RefObject } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { ANNOTATION_LAYER_RENDERED_EVENT } from \"../constants.js\";\nimport type { PdfFormFieldValue } from \"../types.js\";\n\n/** Get the viewer's container element (typed loosely by pdf.js). */\nfunction getViewerContainer(viewer: PDFViewer): HTMLElement | undefined {\n return (viewer as { container?: HTMLElement }).container;\n}\n\n/** Internal metadata for a single form field annotation. */\ninterface FieldEntry {\n fieldName: string;\n fieldType: \"text\" | \"checkbox\" | \"radiobutton\" | \"combobox\" | \"listbox\";\n exportValues: string | undefined;\n page: number;\n}\n\nexport interface UsePdfFormFieldsOptions {\n pdfViewerRef: RefObject<PDFViewer | null>;\n eventBusRef: RefObject<EventBus | null>;\n document: PDFDocumentProxy | undefined;\n formData?: Record<string, PdfFormFieldValue>;\n onFormSubmit?: (data: Record<string, PdfFormFieldValue>) => void;\n onFormChange?: (fieldName: string, value: PdfFormFieldValue) => void;\n}\n\nexport interface UsePdfFormFieldsResult {\n /** Whether the loaded PDF contains interactive form fields. */\n hasFormFields: boolean;\n /** Collect all current form field values and invoke onFormSubmit. */\n submitFormData: () => void;\n}\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(\n type: string\n): \"text\" | \"checkbox\" | \"radiobutton\" | \"combobox\" | \"listbox\" {\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(\n storageValue: unknown,\n fieldType: \"text\" | \"checkbox\" | \"radiobutton\" | \"combobox\" | \"listbox\"\n): PdfFormFieldValue {\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(\n formValue: PdfFormFieldValue,\n fieldType: \"text\" | \"checkbox\" | \"radiobutton\" | \"combobox\" | \"listbox\"\n): unknown {\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}: UsePdfFormFieldsOptions): UsePdfFormFieldsResult {\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\n useEffect(\n function syncCallbackRefs() {\n onFormSubmitRef.current = onFormSubmit;\n onFormChangeRef.current = onFormChange;\n formDataRef.current = formData;\n },\n [onFormSubmit, onFormChange, formData]\n );\n\n // Map from annotation ID -> field metadata\n const fieldMapRef = useRef<Map<string, FieldEntry>>(new Map());\n // Reverse map from field name -> annotation IDs\n const nameToIdsRef = useRef<Map<string, string[]>>(new Map());\n\n // Effect 1: Build field metadata map when document loads\n useEffect(\n 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\n let cancelled = false;\n\n void doc.getFieldObjects().then((fieldObjects) => {\n if (cancelled || fieldObjects == null) {\n setHasFormFields(false);\n return;\n }\n\n const fieldMap = new Map<string, FieldEntry>();\n const nameToIds = new Map<string, string[]>();\n\n for (const [fieldName, objects] of Object.entries(fieldObjects)) {\n const ids: string[] = [];\n for (const obj of objects) {\n const typedObj = obj as {\n id?: string;\n type?: string;\n exportValues?: string;\n page?: number;\n };\n if (typedObj.id == null) continue;\n\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\n fieldMapRef.current = fieldMap;\n nameToIdsRef.current = nameToIds;\n setHasFormFields(fieldMap.size > 0);\n });\n\n return () => {\n cancelled = true;\n };\n },\n [document]\n );\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\n const storage = doc.annotationStorage;\n const container = getViewerContainer(pdfViewer);\n\n for (const [fieldName, value] of Object.entries(data)) {\n const ids = nameToIdsRef.current.get(fieldName);\n if (ids == null) continue;\n\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(\n `[data-element-id=\"${CSS.escape(id)}\"]`\n );\n\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 =\n entry.exportValues ??\n (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, { value: storageVal });\n\n if (el == null) continue;\n\n if (\n entry.fieldType === \"checkbox\" &&\n el instanceof HTMLInputElement\n ) {\n el.checked =\n typeof storageVal === \"boolean\"\n ? storageVal\n : storageVal !== \"Off\";\n } else if (el instanceof HTMLSelectElement) {\n el.value = String(value);\n } else if (\n el instanceof HTMLInputElement ||\n el instanceof HTMLTextAreaElement\n ) {\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(\n 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\n const onAnnotationLayerRendered = () => {\n populateFields();\n };\n\n eventBus.on(ANNOTATION_LAYER_RENDERED_EVENT, onAnnotationLayerRendered);\n\n return () => {\n eventBus.off(\n ANNOTATION_LAYER_RENDERED_EVENT,\n onAnnotationLayerRendered\n );\n };\n },\n [eventBusRef, document, hasFormFields, populateFields]\n );\n\n // Effect 3: Listen for field changes via MutationObserver + event listeners\n useEffect(\n 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\n const listeners = new Map<Element, () => void>();\n\n function handleFieldChange(\n el: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n ) {\n const id = el.getAttribute(\"data-element-id\");\n if (id == null) return;\n\n const entry = fieldMapRef.current.get(id);\n if (entry == null) return;\n\n let value: PdfFormFieldValue;\n if (entry.fieldType === \"checkbox\" && el instanceof HTMLInputElement) {\n value = el.checked;\n } else if (\n entry.fieldType === \"radiobutton\" &&\n el instanceof HTMLInputElement\n ) {\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\n onFormChangeRef.current?.(entry.fieldName, value);\n }\n\n function attachListeners(root: Node) {\n const elements = (root as Element).querySelectorAll?.(\n \".annotationLayer input, .annotationLayer select, .annotationLayer textarea\"\n );\n if (elements == null) return;\n\n for (const el of elements) {\n if (listeners.has(el)) continue;\n\n const handler = () => {\n handleFieldChange(\n el as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n );\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\n observer.observe(container, { childList: true, 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 },\n [pdfViewerRef, document]\n );\n\n // Callback: collect all form data and invoke onFormSubmit\n const submitFormData = useCallback(() => {\n const doc = document;\n if (doc == null) return;\n\n const storage = doc.annotationStorage;\n const allValues = storage.getAll() as Record<string, unknown> | null;\n const result: Record<string, PdfFormFieldValue> = {};\n\n // Track which radio group has been resolved\n const resolvedRadios = new Set<string>();\n\n for (const [id, entry] of fieldMapRef.current) {\n const { fieldName, fieldType } = 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 =\n stored != null && typeof stored === \"object\" && \"value\" in stored\n ? (stored as { value: unknown }).value\n : 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\n const stored = allValues?.[id];\n const rawValue =\n stored != null && typeof stored === \"object\" && \"value\" in stored\n ? (stored as { value: unknown }).value\n : 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\n result[fieldName] = toFormFieldValue(rawValue, fieldType);\n }\n\n onFormSubmitRef.current?.(result);\n }, [document]);\n\n return {\n hasFormFields,\n submitFormData,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|