@nyazkhan/react-pdf-viewer
Version:
A comprehensive React TypeScript component library for viewing and interacting with PDF files using Mozilla PDF.js. Features include text selection, highlighting, search, sidebar, multiple view modes, and complete PDF.js web viewer functionality.
1 lines • 12.3 kB
Source Map (JSON)
{"version":3,"sources":["../../src/styles/viewer.css"],"sourcesContent":["/* PDF Viewer Container */\n.pdf-viewer {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n\n.pdf-viewer *,\n.pdf-viewer *::before,\n.pdf-viewer *::after {\n box-sizing: inherit;\n}\n\n/* PDF Toolbar */\n.pdf-toolbar {\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n}\n\n.pdf-toolbar button {\n transition: all 0.2s ease;\n border: 1px solid #dee2e6;\n background-color: white;\n color: #495057;\n}\n\n.pdf-toolbar button:hover:not(:disabled) {\n background-color: #f8f9fa;\n border-color: #adb5bd;\n}\n\n.pdf-toolbar button:active:not(:disabled) {\n background-color: #e9ecef;\n border-color: #6c757d;\n}\n\n.pdf-toolbar button:disabled {\n color: #6c757d;\n background-color: #f8f9fa;\n border-color: #dee2e6;\n cursor: not-allowed;\n}\n\n.pdf-toolbar input,\n.pdf-toolbar select {\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n.pdf-toolbar input:focus,\n.pdf-toolbar select:focus {\n outline: 0;\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n/* PDF Page */\n.pdf-page {\n position: relative;\n user-select: text;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n}\n\n.pdf-page canvas {\n display: block;\n border: 1px solid #dee2e6;\n}\n\n/* PDF Text Layer - Optimized for Smooth Selection */\n.pdf-text-layer {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n overflow: hidden;\n line-height: 1.0;\n z-index: 1;\n user-select: text;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n pointer-events: auto;\n \n /* Performance optimizations for smoother selection */\n will-change: transform;\n contain: layout style paint;\n transform: translateZ(0); /* Force hardware acceleration */\n}\n\n/* Text spans and divs within the text layer */\n.pdf-text-layer > span,\n.pdf-text-layer > div {\n color: transparent;\n position: absolute;\n white-space: pre;\n cursor: text;\n transform-origin: 0% 0%;\n user-select: text;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n pointer-events: auto;\n background: transparent;\n \n /* Optimize for smooth text selection */\n display: block;\n overflow: visible;\n box-sizing: border-box;\n \n /* Ensure smooth font rendering */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeSpeed;\n \n /* Better touch/mobile selection */\n -webkit-touch-callout: text;\n -webkit-tap-highlight-color: transparent;\n \n /* Prevent layout shift during selection */\n contain: layout;\n}\n\n/* Enhanced selection highlighting */\n.pdf-text-layer > span::selection,\n.pdf-text-layer > div::selection {\n background: rgba(0, 123, 255, 0.4);\n color: transparent;\n text-shadow: none;\n}\n\n.pdf-text-layer > span::-moz-selection,\n.pdf-text-layer > div::-moz-selection {\n background: rgba(0, 123, 255, 0.4);\n color: transparent;\n text-shadow: none;\n}\n\n/* Webkit specific optimizations */\n.pdf-text-layer > span::-webkit-selection,\n.pdf-text-layer > div::-webkit-selection {\n background: rgba(0, 123, 255, 0.4);\n color: transparent;\n}\n\n/* Line-based text containers for smoother selection */\n.pdf-text-layer > div {\n /* Line containers should have consistent spacing */\n letter-spacing: normal;\n word-spacing: normal;\n \n /* Ensure proper text flow */\n direction: ltr;\n unicode-bidi: normal;\n \n /* Optimize for continuous selection */\n border: none;\n margin: 0;\n padding: 0;\n}\n\n/* Improve selection experience on different devices */\n@media (pointer: coarse) {\n .pdf-text-layer > span,\n .pdf-text-layer > div {\n /* Increase touch target for mobile */\n min-height: 16px;\n -webkit-touch-callout: text;\n }\n}\n\n/* Reduce jank during selection */\n.pdf-text-layer * {\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n}\n\n.pdf-text-layer .highlight {\n margin: -1px;\n padding: 1px;\n background-color: rgba(180, 0, 170, 0.2);\n border-radius: 4px;\n}\n\n/* PDF Highlights */\n.pdf-highlights {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n\n.pdf-highlight {\n position: relative;\n}\n\n.pdf-highlight-rect {\n position: absolute;\n border-radius: 2px;\n transition: opacity 0.2s ease;\n}\n\n.pdf-highlight-rect:hover {\n opacity: 0.5 !important;\n}\n\n/* PDF Highlight Layer */\n.pdf-highlight-layer {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n\n.pdf-highlight-layer .pdf-highlight-rect {\n pointer-events: auto;\n}\n\n/* Loading and Error States */\n.pdf-viewer .loading {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n color: #6c757d;\n font-size: 16px;\n}\n\n.pdf-viewer .error {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n color: #dc3545;\n font-size: 16px;\n text-align: center;\n padding: 20px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .pdf-toolbar {\n flex-wrap: wrap;\n gap: 8px;\n padding: 8px;\n }\n \n .pdf-toolbar button {\n padding: 8px 12px;\n font-size: 14px;\n }\n \n .pdf-toolbar input,\n .pdf-toolbar select {\n font-size: 14px;\n }\n}\n\n@media (max-width: 480px) {\n .pdf-toolbar {\n gap: 6px;\n padding: 6px;\n }\n \n .pdf-toolbar button {\n padding: 6px 10px;\n font-size: 12px;\n }\n \n .pdf-toolbar input,\n .pdf-toolbar select {\n font-size: 12px;\n padding: 4px 6px;\n }\n}\n\n/* Animation */\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n.pdf-page {\n animation: fadeIn 0.3s ease-in;\n}\n\n/* Enhanced Toolbar Styles */\n.pdf-toolbar {\n background-color: #2c3e50 !important;\n color: white !important;\n border-bottom: 1px solid #34495e !important;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1) !important;\n}\n\n.pdf-toolbar button {\n background-color: #34495e !important;\n color: white !important;\n border: none !important;\n border-radius: 6px !important;\n transition: all 0.2s ease !important;\n}\n\n.pdf-toolbar button:hover:not(:disabled) {\n background-color: #3498db !important;\n}\n\n.pdf-toolbar button:disabled {\n background-color: #34495e !important;\n opacity: 0.4 !important;\n cursor: not-allowed !important;\n}\n\n.pdf-toolbar .active,\n.pdf-toolbar button.active {\n background-color: #3498db !important;\n color: white !important;\n}\n\n.pdf-toolbar input,\n.pdf-toolbar select {\n background-color: #495057 !important;\n color: white !important;\n border: 1px solid #495057 !important;\n}\n\n.pdf-toolbar input:focus,\n.pdf-toolbar select:focus {\n border-color: #3498db !important;\n box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.25) !important;\n}\n\n.pdf-toolbar input::placeholder {\n color: #bdc3c7 !important;\n}\n\n/* Toolbar Groups and Labels */\n.pdf-toolbar .toolbar-group {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.pdf-toolbar .toolbar-label {\n font-size: 12px;\n color: #bdc3c7;\n font-weight: 500;\n}\n\n.pdf-toolbar .separator {\n width: 1px;\n height: 32px;\n background-color: #495057;\n margin: 0 8px;\n}\n\n/* Search Input Specific Styles */\n.pdf-toolbar input[type=\"text\"].search-input {\n width: 200px;\n text-align: left;\n}\n\n.pdf-toolbar input[type=\"text\"]:not(.search-input) {\n text-align: center;\n width: 60px;\n}\n\n/* Print Styles */\n@media print {\n .pdf-toolbar {\n display: none;\n }\n \n .pdf-viewer {\n border: none;\n box-shadow: none;\n }\n \n .pdf-page {\n box-shadow: none;\n margin: 0;\n }\n} "],"mappings":"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","names":[]}