@cannymindstech/file-viewers 0.27.11 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/dist/chunk-2BLHLWNN.js +0 -299
- package/dist/chunk-2BLHLWNN.js.map +0 -1
- package/dist/chunk-6BRYDA3B.js +0 -329
- package/dist/chunk-6BRYDA3B.js.map +0 -1
- package/dist/chunk-7JPF5AYR.mjs +0 -488
- package/dist/chunk-7JPF5AYR.mjs.map +0 -1
- package/dist/chunk-7P6WEBHN.js +0 -2299
- package/dist/chunk-7P6WEBHN.js.map +0 -1
- package/dist/chunk-7PMZ4GN5.mjs +0 -290
- package/dist/chunk-7PMZ4GN5.mjs.map +0 -1
- package/dist/chunk-B5NNB4KD.mjs +0 -268
- package/dist/chunk-B5NNB4KD.mjs.map +0 -1
- package/dist/chunk-CIWCHSAA.js +0 -309
- package/dist/chunk-CIWCHSAA.js.map +0 -1
- package/dist/chunk-D7SDEVDM.js +0 -268
- package/dist/chunk-D7SDEVDM.js.map +0 -1
- package/dist/chunk-ECZ6IBOS.js +0 -424
- package/dist/chunk-ECZ6IBOS.js.map +0 -1
- package/dist/chunk-EI3EP65I.mjs +0 -868
- package/dist/chunk-EI3EP65I.mjs.map +0 -1
- package/dist/chunk-EKNP342T.mjs +0 -299
- package/dist/chunk-EKNP342T.mjs.map +0 -1
- package/dist/chunk-EM63H4SA.js +0 -290
- package/dist/chunk-EM63H4SA.js.map +0 -1
- package/dist/chunk-IJMNPAXX.mjs +0 -309
- package/dist/chunk-IJMNPAXX.mjs.map +0 -1
- package/dist/chunk-KJNOBIUZ.mjs +0 -36
- package/dist/chunk-KJNOBIUZ.mjs.map +0 -1
- package/dist/chunk-KQCU7XW2.mjs +0 -424
- package/dist/chunk-KQCU7XW2.mjs.map +0 -1
- package/dist/chunk-MPTCXAXO.js +0 -868
- package/dist/chunk-MPTCXAXO.js.map +0 -1
- package/dist/chunk-OPJOCUSL.js +0 -36
- package/dist/chunk-OPJOCUSL.js.map +0 -1
- package/dist/chunk-PZGUVU6N.mjs +0 -2299
- package/dist/chunk-PZGUVU6N.mjs.map +0 -1
- package/dist/chunk-QV63FULE.js +0 -488
- package/dist/chunk-QV63FULE.js.map +0 -1
- package/dist/chunk-XJQ5J2UF.mjs +0 -329
- package/dist/chunk-XJQ5J2UF.mjs.map +0 -1
- package/dist/components/viewers/AudioViewer.d.mts +0 -6
- package/dist/components/viewers/AudioViewer.d.ts +0 -6
- package/dist/components/viewers/AudioViewer.js +0 -10
- package/dist/components/viewers/AudioViewer.js.map +0 -1
- package/dist/components/viewers/AudioViewer.mjs +0 -10
- package/dist/components/viewers/AudioViewer.mjs.map +0 -1
- package/dist/components/viewers/DefaultViewer.d.mts +0 -6
- package/dist/components/viewers/DefaultViewer.d.ts +0 -6
- package/dist/components/viewers/DefaultViewer.js +0 -10
- package/dist/components/viewers/DefaultViewer.js.map +0 -1
- package/dist/components/viewers/DefaultViewer.mjs +0 -10
- package/dist/components/viewers/DefaultViewer.mjs.map +0 -1
- package/dist/components/viewers/ImageViewer.d.mts +0 -6
- package/dist/components/viewers/ImageViewer.d.ts +0 -6
- package/dist/components/viewers/ImageViewer.js +0 -10
- package/dist/components/viewers/ImageViewer.js.map +0 -1
- package/dist/components/viewers/ImageViewer.mjs +0 -10
- package/dist/components/viewers/ImageViewer.mjs.map +0 -1
- package/dist/components/viewers/PDFViewer.d.mts +0 -51
- package/dist/components/viewers/PDFViewer.d.ts +0 -51
- package/dist/components/viewers/PDFViewer.js +0 -11
- package/dist/components/viewers/PDFViewer.js.map +0 -1
- package/dist/components/viewers/PDFViewer.mjs +0 -11
- package/dist/components/viewers/PDFViewer.mjs.map +0 -1
- package/dist/components/viewers/TIFFViewer.d.mts +0 -6
- package/dist/components/viewers/TIFFViewer.d.ts +0 -6
- package/dist/components/viewers/TIFFViewer.js +0 -10
- package/dist/components/viewers/TIFFViewer.js.map +0 -1
- package/dist/components/viewers/TIFFViewer.mjs +0 -10
- package/dist/components/viewers/TIFFViewer.mjs.map +0 -1
- package/dist/components/viewers/TextViewer.d.mts +0 -6
- package/dist/components/viewers/TextViewer.d.ts +0 -6
- package/dist/components/viewers/TextViewer.js +0 -10
- package/dist/components/viewers/TextViewer.js.map +0 -1
- package/dist/components/viewers/TextViewer.mjs +0 -10
- package/dist/components/viewers/TextViewer.mjs.map +0 -1
- package/dist/components/viewers/VideoViewer.d.mts +0 -6
- package/dist/components/viewers/VideoViewer.d.ts +0 -6
- package/dist/components/viewers/VideoViewer.js +0 -10
- package/dist/components/viewers/VideoViewer.js.map +0 -1
- package/dist/components/viewers/VideoViewer.mjs +0 -10
- package/dist/components/viewers/VideoViewer.mjs.map +0 -1
- package/dist/index.d.mts +0 -75
- package/dist/index.d.ts +0 -75
- package/dist/index.js +0 -305
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -305
- package/dist/index.mjs.map +0 -1
- package/dist/types-BYTxtKEc.d.mts +0 -100
- package/dist/types-BYTxtKEc.d.ts +0 -100
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/viewers/TextViewer.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Box,\n Button,\n Card,\n CardContent,\n CardHeader,\n Divider,\n LinearProgress,\n Stack,\n Typography,\n IconButton,\n Tooltip,\n} from \"@mui/material\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport PrintIcon from \"@mui/icons-material/Print\";\nimport FullscreenIcon from \"@mui/icons-material/Fullscreen\";\nimport InfoIcon from \"@mui/icons-material/Info\";\nimport DescriptionIcon from \"@mui/icons-material/Description\";\nimport HistoryIcon from \"@mui/icons-material/History\";\nimport { LocalOffer } from \"@mui/icons-material\";\nimport { FileViewerProps } from \"../../types\";\nimport { getFileExtension } from \"../../utils/fileUtils\";\nimport { mergeToolbarConfig } from \"../../utils/toolbarUtils\";\nimport FileIcon from \"../FileIcon\";\n\nconst LINE_HEIGHT = 24;\n\nexport const TextViewer: React.FC<FileViewerProps> = ({\n file,\n url,\n fileName,\n className = \"\",\n style = {},\n width = \"100%\",\n height = \"100%\",\n onLoad,\n onError,\n onDownloadClick,\n onPrintClick,\n onMetadataClick,\n onTagsClick,\n onPropertiesClick,\n onHistoryClick,\n showDownload = true,\n showPrint = true,\n showMetadata = false,\n showTags = true,\n showProperties = false,\n showHistory = true,\n // Extract props that shouldn't be passed to DOM elements\n mimeType,\n fileSize,\n showPageCount,\n showPageNavigation,\n showZoomControls,\n showSearch,\n customRegistry,\n initialSearchText,\n initialSearchPages,\n autoOpenSearch,\n autoExecuteSearch,\n onSearchComplete,\n toolbarActions,\n ...props\n}) => {\n const [content, setContent] = useState<string>(\"\");\n const [lines, setLines] = useState<string[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isFullScreen, setIsFullScreen] = useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n const resolvedFileName = useMemo(\n () =>\n fileName || file?.name || (url ? url.split(\"/\").pop() : \"text-document\"),\n [fileName, file, url]\n );\n\n const fileExtension = useMemo(\n () => getFileExtension(resolvedFileName || \"\"),\n [resolvedFileName]\n );\n\n const loadText = useCallback(async () => {\n if (!file && !url) {\n setContent(\"\");\n setLines([]);\n setError(null);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n let textContent: string;\n if (file) {\n textContent = await file.text();\n } else {\n const response = await fetch(url!);\n if (!response.ok) {\n throw new Error(`Failed to fetch text (${response.status})`);\n }\n textContent = await response.text();\n }\n\n setContent(textContent);\n setLines(textContent.split(/\\r?\\n/));\n onLoad?.();\n } catch (err) {\n const message =\n err instanceof Error ? err.message : \"Unable to load text file\";\n setError(message);\n setContent(\"\");\n setLines([]);\n onError?.(new Error(message));\n } finally {\n setIsLoading(false);\n }\n }, [file, url, onLoad, onError]);\n\n useEffect(() => {\n void loadText();\n }, [loadText]);\n\n const handleToggleFullScreen = () => {\n if (!isFullScreen && containerRef.current?.requestFullscreen) {\n containerRef.current.requestFullscreen();\n setIsFullScreen(true);\n } else if (isFullScreen && document.exitFullscreen) {\n document.exitFullscreen();\n setIsFullScreen(false);\n }\n };\n\n const toolbar = mergeToolbarConfig({\n showDownload,\n showPrint,\n showMetadata,\n showTags,\n showProperties,\n showHistory,\n onDownloadClick,\n onPrintClick,\n onMetadataClick,\n onTagsClick,\n onPropertiesClick,\n onHistoryClick,\n toolbarActions,\n });\n\n return (\n <Box\n ref={containerRef}\n className={`text-viewer ${className}`}\n sx={{ width, height, ...style }}\n {...props}\n >\n <Card\n sx={{ height: \"100%\", display: \"flex\", flexDirection: \"column\" }}\n elevation={1}\n >\n <CardHeader\n avatar={<FileIcon ext={fileExtension} size={32} />}\n title={\n <Typography variant=\"subtitle1\" fontWeight={500}>\n {resolvedFileName}\n </Typography>\n }\n action={\n <Stack direction=\"row\" spacing={1}>\n {!toolbar.isHidden(\"download\") && (\n <Tooltip title={toolbar.getLabel(\"download\") || \"Download\"}>\n <IconButton\n size=\"small\"\n onClick={toolbar.getHandler(\"download\", onDownloadClick)}\n disabled={toolbar.isDisabled(\"download\")}\n aria-label=\"Download text file\"\n >\n {toolbar.getIcon(\"download\") || <DownloadIcon />}\n </IconButton>\n </Tooltip>\n )}\n {!toolbar.isHidden(\"print\") && (\n <Tooltip title={toolbar.getLabel(\"print\") || \"Print\"}>\n <IconButton\n size=\"small\"\n onClick={toolbar.getHandler(\"print\", onPrintClick)}\n disabled={toolbar.isDisabled(\"print\")}\n aria-label=\"Print text file\"\n >\n {toolbar.getIcon(\"print\") || <PrintIcon />}\n </IconButton>\n </Tooltip>\n )}\n {!toolbar.isHidden(\"fullscreen\") && (\n <Tooltip title={toolbar.getLabel(\"fullscreen\") || \"Fullscreen\"}>\n <IconButton\n size=\"small\"\n onClick={toolbar.getHandler(\n \"fullscreen\",\n handleToggleFullScreen\n )}\n disabled={toolbar.isDisabled(\"fullscreen\")}\n aria-label=\"Toggle fullscreen\"\n >\n {toolbar.getIcon(\"fullscreen\") || <FullscreenIcon />}\n </IconButton>\n </Tooltip>\n )}\n {!toolbar.isHidden(\"metadata\") && (\n <Tooltip\n title={toolbar.getLabel(\"metadata\") || \"Document Metadata\"}\n >\n <IconButton\n size=\"small\"\n onClick={toolbar.getHandler(\"metadata\", onMetadataClick)}\n disabled={toolbar.isDisabled(\"metadata\")}\n aria-label=\"View document metadata\"\n >\n {toolbar.getIcon(\"metadata\") || <DescriptionIcon />}\n </IconButton>\n </Tooltip>\n )}\n {!toolbar.isHidden(\"properties\") && (\n <Tooltip\n title={\n toolbar.getLabel(\"properties\") || \"Document Properties\"\n }\n >\n <IconButton\n size=\"small\"\n onClick={toolbar.getHandler(\n \"properties\",\n onPropertiesClick\n )}\n disabled={toolbar.isDisabled(\"properties\")}\n aria-label=\"View document properties\"\n >\n {toolbar.getIcon(\"properties\") || <InfoIcon />}\n </IconButton>\n </Tooltip>\n )}\n {!toolbar.isHidden(\"tags\") && (\n <Tooltip title={toolbar.getLabel(\"tags\") || \"Document Tags\"}>\n <IconButton\n size=\"small\"\n onClick={toolbar.getHandler(\"tags\", onTagsClick)}\n disabled={toolbar.isDisabled(\"tags\")}\n aria-label=\"View document tags\"\n >\n {toolbar.getIcon(\"tags\") || <LocalOffer />}\n </IconButton>\n </Tooltip>\n )}\n {!toolbar.isHidden(\"history\") && (\n <Tooltip\n title={toolbar.getLabel(\"history\") || \"Document History\"}\n >\n <IconButton\n size=\"small\"\n onClick={toolbar.getHandler(\"history\", onHistoryClick)}\n disabled={toolbar.isDisabled(\"history\")}\n aria-label=\"View document history\"\n >\n {toolbar.getIcon(\"history\") || <HistoryIcon />}\n </IconButton>\n </Tooltip>\n )}\n </Stack>\n }\n sx={{ pb: 1 }}\n />\n {isLoading && <LinearProgress sx={{ mx: 3, mb: 1 }} />}\n {error && (\n <Typography color=\"error\" variant=\"body2\" sx={{ px: 3, pb: 1 }}>\n {error}\n </Typography>\n )}\n <Divider />\n <CardContent sx={{ flexGrow: 1, minHeight: 0, p: 0, overflow: \"auto\" }}>\n {content ? (\n <Box\n sx={{\n fontFamily: \"monospace\",\n fontSize: \"0.85rem\",\n p: 2,\n whiteSpace: \"pre\",\n }}\n >\n {lines.map((line, index) => (\n <Box\n key={index}\n sx={{\n minHeight: LINE_HEIGHT,\n lineHeight: `${LINE_HEIGHT}px`,\n }}\n >\n {line || \"\\u00A0\"}\n </Box>\n ))}\n </Box>\n ) : (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n p: 4,\n minHeight: 200,\n }}\n >\n <Typography variant=\"body2\" color=\"text.secondary\">\n No text content available.\n </Typography>\n </Box>\n )}\n </CardContent>\n </Card>\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
|
package/dist/chunk-KJNOBIUZ.mjs
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
// src/utils/fileUtils.ts
|
|
4
|
-
var getFileExtension = (fileName) => {
|
|
5
|
-
const extension = fileName.toLowerCase().split(".").pop();
|
|
6
|
-
return extension || "";
|
|
7
|
-
};
|
|
8
|
-
var getMimeTypeFromExtension = (extension) => {
|
|
9
|
-
const mimeTypes = {
|
|
10
|
-
"pdf": "application/pdf",
|
|
11
|
-
"txt": "text/plain",
|
|
12
|
-
"json": "application/json",
|
|
13
|
-
"xml": "text/xml",
|
|
14
|
-
"csv": "text/csv",
|
|
15
|
-
"jpg": "image/jpeg",
|
|
16
|
-
"jpeg": "image/jpeg",
|
|
17
|
-
"png": "image/png",
|
|
18
|
-
"gif": "image/gif",
|
|
19
|
-
"svg": "image/svg+xml",
|
|
20
|
-
"mp4": "video/mp4",
|
|
21
|
-
"webm": "video/webm",
|
|
22
|
-
"mp3": "audio/mpeg",
|
|
23
|
-
"wav": "audio/wav",
|
|
24
|
-
"doc": "application/msword",
|
|
25
|
-
"docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
26
|
-
"xls": "application/vnd.ms-excel",
|
|
27
|
-
"xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
28
|
-
};
|
|
29
|
-
return mimeTypes[extension] || "application/octet-stream";
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export {
|
|
33
|
-
getFileExtension,
|
|
34
|
-
getMimeTypeFromExtension
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=chunk-KJNOBIUZ.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/fileUtils.ts"],"sourcesContent":["export const getFileExtension = (fileName: string): string => {\n const extension = fileName.toLowerCase().split('.').pop();\n return extension || '';\n};\n\nexport const getMimeTypeFromExtension = (extension: string): string => {\n const mimeTypes: Record<string, string> = {\n 'pdf': 'application/pdf',\n 'txt': 'text/plain',\n 'json': 'application/json',\n 'xml': 'text/xml',\n 'csv': 'text/csv',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'png': 'image/png',\n 'gif': 'image/gif',\n 'svg': 'image/svg+xml',\n 'mp4': 'video/mp4',\n 'webm': 'video/webm',\n 'mp3': 'audio/mpeg',\n 'wav': 'audio/wav',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n };\n\n return mimeTypes[extension] || 'application/octet-stream';\n};"],"mappings":";;;AAAO,IAAM,mBAAmB,CAAC,aAA6B;AAC5D,QAAM,YAAY,SAAS,YAAY,EAAE,MAAM,GAAG,EAAE,IAAI;AACxD,SAAO,aAAa;AACtB;AAEO,IAAM,2BAA2B,CAAC,cAA8B;AACrE,QAAM,YAAoC;AAAA,IACxC,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAEA,SAAO,UAAU,SAAS,KAAK;AACjC;","names":[]}
|
package/dist/chunk-KQCU7XW2.mjs
DELETED
|
@@ -1,424 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
// src/components/viewers/pdf/PDFStyles.tsx
|
|
4
|
-
var toolbarStyles = `
|
|
5
|
-
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap');
|
|
6
|
-
|
|
7
|
-
* {
|
|
8
|
-
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
|
9
|
-
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
|
10
|
-
'Noto Sans Tamil', 'Noto Sans Devanagari', sans-serif !important;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/* Target PDF.js text layer */
|
|
14
|
-
.textLayer,
|
|
15
|
-
.textLayer span,
|
|
16
|
-
.textLayer div,
|
|
17
|
-
[class*="pdf"],
|
|
18
|
-
[class*="page"],
|
|
19
|
-
canvas + div,
|
|
20
|
-
.embedpdf-viewport *,
|
|
21
|
-
[data-pdf-viewer] *,
|
|
22
|
-
[role="document"] * {
|
|
23
|
-
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
|
24
|
-
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
|
25
|
-
'Noto Sans Tamil', 'Noto Sans Devanagari', sans-serif !important;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.pdf-viewer-header {
|
|
29
|
-
display: flex;
|
|
30
|
-
align-items: center;
|
|
31
|
-
justify-content: flex-start;
|
|
32
|
-
gap: 8px;
|
|
33
|
-
padding: 2px 12px 0 12px;
|
|
34
|
-
background: #fff;
|
|
35
|
-
min-height: 32px;
|
|
36
|
-
}
|
|
37
|
-
.header-file-name {
|
|
38
|
-
font-size: 13px;
|
|
39
|
-
font-weight: 500;
|
|
40
|
-
color: #374151;
|
|
41
|
-
white-space: nowrap;
|
|
42
|
-
overflow: hidden;
|
|
43
|
-
text-overflow: ellipsis;
|
|
44
|
-
max-width: 400px;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/* ========== COMPACT TOOLBAR ========== */
|
|
48
|
-
.pdf-viewer-toolbar {
|
|
49
|
-
display: flex;
|
|
50
|
-
align-items: center;
|
|
51
|
-
justify-content: space-between;
|
|
52
|
-
padding: 4px 8px;
|
|
53
|
-
background: #ffffff;
|
|
54
|
-
border-bottom: 1px solid #e5e7eb;
|
|
55
|
-
gap: 4px;
|
|
56
|
-
flex-wrap: wrap;
|
|
57
|
-
min-height: 44px;
|
|
58
|
-
}
|
|
59
|
-
.toolbar-left {
|
|
60
|
-
display: flex;
|
|
61
|
-
align-items: center;
|
|
62
|
-
gap: 2px;
|
|
63
|
-
flex: 0 0 auto;
|
|
64
|
-
}
|
|
65
|
-
.toolbar-right {
|
|
66
|
-
display: flex;
|
|
67
|
-
align-items: center;
|
|
68
|
-
gap: 2px;
|
|
69
|
-
}
|
|
70
|
-
.toolbar-section {
|
|
71
|
-
display: flex;
|
|
72
|
-
align-items: center;
|
|
73
|
-
gap: 2px;
|
|
74
|
-
padding: 0;
|
|
75
|
-
}
|
|
76
|
-
.toolbar-separator {
|
|
77
|
-
width: 1px;
|
|
78
|
-
height: 20px;
|
|
79
|
-
background: #e5e7eb;
|
|
80
|
-
margin: 0 8px;
|
|
81
|
-
flex-shrink: 0;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/* ========== COMPACT BUTTONS ========== */
|
|
85
|
-
.toolbar-button {
|
|
86
|
-
padding: 6px;
|
|
87
|
-
border: none;
|
|
88
|
-
background: transparent;
|
|
89
|
-
cursor: pointer;
|
|
90
|
-
border-radius: 6px;
|
|
91
|
-
display: flex;
|
|
92
|
-
align-items: center;
|
|
93
|
-
justify-content: center;
|
|
94
|
-
transition: background-color 0.15s ease;
|
|
95
|
-
position: relative;
|
|
96
|
-
min-width: 32px;
|
|
97
|
-
min-height: 32px;
|
|
98
|
-
color: #4b5563;
|
|
99
|
-
}
|
|
100
|
-
.toolbar-button:hover:not(:disabled) {
|
|
101
|
-
background: #f3f4f6;
|
|
102
|
-
color: #111827;
|
|
103
|
-
}
|
|
104
|
-
.toolbar-button:active:not(:disabled) {
|
|
105
|
-
background: #e5e7eb;
|
|
106
|
-
}
|
|
107
|
-
.toolbar-button:disabled {
|
|
108
|
-
opacity: 0.4;
|
|
109
|
-
cursor: not-allowed;
|
|
110
|
-
}
|
|
111
|
-
.toolbar-button svg {
|
|
112
|
-
width: 18px;
|
|
113
|
-
height: 18px;
|
|
114
|
-
display: block;
|
|
115
|
-
}
|
|
116
|
-
.toolbar-button-active {
|
|
117
|
-
background: #eff6ff !important;
|
|
118
|
-
color: #2563eb !important;
|
|
119
|
-
}
|
|
120
|
-
.toolbar-button-active:hover:not(:disabled) {
|
|
121
|
-
background: #dbeafe !important;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/* ========== PAGE NAVIGATION ========== */
|
|
125
|
-
.page-input {
|
|
126
|
-
width: 44px;
|
|
127
|
-
padding: 4px 6px;
|
|
128
|
-
border: 1px solid #d1d5db;
|
|
129
|
-
border-radius: 6px;
|
|
130
|
-
text-align: center;
|
|
131
|
-
font-size: 13px;
|
|
132
|
-
font-weight: 500;
|
|
133
|
-
color: #374151;
|
|
134
|
-
background: #fff;
|
|
135
|
-
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
136
|
-
}
|
|
137
|
-
.page-input:focus {
|
|
138
|
-
outline: none;
|
|
139
|
-
border-color: #3b82f6;
|
|
140
|
-
box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
|
|
141
|
-
}
|
|
142
|
-
.page-info {
|
|
143
|
-
font-size: 13px;
|
|
144
|
-
color: #6b7280;
|
|
145
|
-
white-space: nowrap;
|
|
146
|
-
font-weight: 500;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/* ========== ZOOM DISPLAY ========== */
|
|
150
|
-
.zoom-display {
|
|
151
|
-
min-width: 48px;
|
|
152
|
-
text-align: center;
|
|
153
|
-
font-size: 13px;
|
|
154
|
-
font-weight: 500;
|
|
155
|
-
color: #374151;
|
|
156
|
-
padding: 4px 8px;
|
|
157
|
-
background: #f9fafb;
|
|
158
|
-
border-radius: 6px;
|
|
159
|
-
border: 1px solid #e5e7eb;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
.search-input {
|
|
163
|
-
padding: 6px 10px;
|
|
164
|
-
border: 1px solid #d1d5db;
|
|
165
|
-
border-radius: 6px;
|
|
166
|
-
font-size: 13px;
|
|
167
|
-
min-width: 180px;
|
|
168
|
-
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
169
|
-
}
|
|
170
|
-
.search-input:focus {
|
|
171
|
-
outline: none;
|
|
172
|
-
border-color: #3b82f6;
|
|
173
|
-
box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/* ========== VIEWER CONTENT ========== */
|
|
177
|
-
.pdf-viewer-content {
|
|
178
|
-
flex: 1;
|
|
179
|
-
overflow: hidden;
|
|
180
|
-
position: relative;
|
|
181
|
-
user-select: text;
|
|
182
|
-
-webkit-user-select: text;
|
|
183
|
-
-moz-user-select: text;
|
|
184
|
-
-ms-user-select: text;
|
|
185
|
-
background-color: #efefef;
|
|
186
|
-
}
|
|
187
|
-
.pdf-viewer-container {
|
|
188
|
-
display: flex;
|
|
189
|
-
flex-direction: column;
|
|
190
|
-
height: 100%;
|
|
191
|
-
width: 100%;
|
|
192
|
-
background-color: #efefef;
|
|
193
|
-
}
|
|
194
|
-
.pdf-viewer-main {
|
|
195
|
-
display: flex;
|
|
196
|
-
flex: 1;
|
|
197
|
-
overflow: hidden;
|
|
198
|
-
position: relative;
|
|
199
|
-
background-color: #efefef;
|
|
200
|
-
}
|
|
201
|
-
.pdf-viewer-viewer-area {
|
|
202
|
-
flex: 1;
|
|
203
|
-
overflow: hidden;
|
|
204
|
-
position: relative;
|
|
205
|
-
background-color: #efefef; /* Ensure background matches viewer gray */
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/* Override library's inline userSelect: none */
|
|
209
|
-
.pdf-viewer-viewer-area div[style*="userSelect"] {
|
|
210
|
-
user-select: auto !important;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/* ========== PRINT DROPDOWN ========== */
|
|
214
|
-
.print-dropdown-container {
|
|
215
|
-
position: relative;
|
|
216
|
-
display: inline-flex;
|
|
217
|
-
}
|
|
218
|
-
.print-dropdown-trigger {
|
|
219
|
-
display: flex;
|
|
220
|
-
align-items: center;
|
|
221
|
-
gap: 2px;
|
|
222
|
-
}
|
|
223
|
-
.print-dropdown-menu {
|
|
224
|
-
position: absolute;
|
|
225
|
-
top: 100%;
|
|
226
|
-
right: 0;
|
|
227
|
-
margin-top: 4px;
|
|
228
|
-
background: #ffffff;
|
|
229
|
-
border: 1px solid #e5e7eb;
|
|
230
|
-
border-radius: 8px;
|
|
231
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
232
|
-
min-width: 200px;
|
|
233
|
-
z-index: 1000;
|
|
234
|
-
overflow: hidden;
|
|
235
|
-
}
|
|
236
|
-
.print-dropdown-item {
|
|
237
|
-
display: block;
|
|
238
|
-
width: 100%;
|
|
239
|
-
padding: 10px 14px;
|
|
240
|
-
border: none;
|
|
241
|
-
background: transparent;
|
|
242
|
-
text-align: left;
|
|
243
|
-
font-size: 13px;
|
|
244
|
-
font-weight: 500;
|
|
245
|
-
color: #374151;
|
|
246
|
-
cursor: pointer;
|
|
247
|
-
transition: background-color 0.15s ease;
|
|
248
|
-
}
|
|
249
|
-
.print-dropdown-item:hover {
|
|
250
|
-
background: #f3f4f6;
|
|
251
|
-
}
|
|
252
|
-
.print-dropdown-item:active {
|
|
253
|
-
background: #e5e7eb;
|
|
254
|
-
}
|
|
255
|
-
.print-dropdown-item + .print-dropdown-item {
|
|
256
|
-
border-top: 1px solid #f3f4f6;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
/* ========== TOOLBAR DROPDOWN (Annotation Menu) ========== */
|
|
260
|
-
.toolbar-dropdown-container {
|
|
261
|
-
position: relative;
|
|
262
|
-
display: inline-flex;
|
|
263
|
-
}
|
|
264
|
-
.toolbar-dropdown-button {
|
|
265
|
-
display: flex;
|
|
266
|
-
align-items: center;
|
|
267
|
-
gap: 2px;
|
|
268
|
-
}
|
|
269
|
-
.toolbar-dropdown-menu {
|
|
270
|
-
position: absolute;
|
|
271
|
-
top: 100%;
|
|
272
|
-
left: 0;
|
|
273
|
-
margin-top: 4px;
|
|
274
|
-
background: #ffffff;
|
|
275
|
-
border: 1px solid #e5e7eb;
|
|
276
|
-
border-radius: 8px;
|
|
277
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
278
|
-
min-width: 150px;
|
|
279
|
-
z-index: 1000;
|
|
280
|
-
overflow: hidden;
|
|
281
|
-
}
|
|
282
|
-
.toolbar-dropdown-menu-right {
|
|
283
|
-
left: auto;
|
|
284
|
-
right: 0;
|
|
285
|
-
}
|
|
286
|
-
.toolbar-dropdown-item {
|
|
287
|
-
display: flex;
|
|
288
|
-
align-items: center;
|
|
289
|
-
gap: 8px;
|
|
290
|
-
width: 100%;
|
|
291
|
-
padding: 10px 14px;
|
|
292
|
-
border: none;
|
|
293
|
-
background: transparent;
|
|
294
|
-
text-align: left;
|
|
295
|
-
font-size: 13px;
|
|
296
|
-
font-weight: 500;
|
|
297
|
-
color: #374151;
|
|
298
|
-
cursor: pointer;
|
|
299
|
-
transition: background-color 0.15s ease;
|
|
300
|
-
}
|
|
301
|
-
.toolbar-dropdown-item:hover {
|
|
302
|
-
background: #f3f4f6;
|
|
303
|
-
}
|
|
304
|
-
.toolbar-dropdown-item:active {
|
|
305
|
-
background: #e5e7eb;
|
|
306
|
-
}
|
|
307
|
-
.toolbar-dropdown-item:disabled {
|
|
308
|
-
opacity: 0.5;
|
|
309
|
-
cursor: not-allowed;
|
|
310
|
-
}
|
|
311
|
-
.toolbar-dropdown-item + .toolbar-dropdown-item {
|
|
312
|
-
border-top: 1px solid #f3f4f6;
|
|
313
|
-
}
|
|
314
|
-
.toolbar-dropdown-item svg {
|
|
315
|
-
font-size: 18px;
|
|
316
|
-
color: #6b7280;
|
|
317
|
-
}
|
|
318
|
-
.toolbar-dropdown-item-active {
|
|
319
|
-
background: #eff6ff;
|
|
320
|
-
color: #2563eb;
|
|
321
|
-
}
|
|
322
|
-
.toolbar-dropdown-item-active svg {
|
|
323
|
-
color: #2563eb;
|
|
324
|
-
}
|
|
325
|
-
.toolbar-dropdown-divider {
|
|
326
|
-
height: 1px;
|
|
327
|
-
background: #e5e7eb;
|
|
328
|
-
margin: 4px 0;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
/* ========== TOOLTIP STYLES ========== */
|
|
334
|
-
.toolbar-button[title]:hover::after {
|
|
335
|
-
content: attr(title);
|
|
336
|
-
position: absolute;
|
|
337
|
-
bottom: -32px;
|
|
338
|
-
left: 50%;
|
|
339
|
-
transform: translateX(-50%);
|
|
340
|
-
padding: 6px 10px;
|
|
341
|
-
background: #1f2937;
|
|
342
|
-
color: white;
|
|
343
|
-
font-size: 12px;
|
|
344
|
-
font-weight: 500;
|
|
345
|
-
border-radius: 6px;
|
|
346
|
-
white-space: nowrap;
|
|
347
|
-
z-index: 1000;
|
|
348
|
-
pointer-events: none;
|
|
349
|
-
opacity: 0;
|
|
350
|
-
animation: fadeIn 0.2s ease-out 0.3s forwards;
|
|
351
|
-
}
|
|
352
|
-
@keyframes fadeIn {
|
|
353
|
-
to { opacity: 1; }
|
|
354
|
-
}
|
|
355
|
-
/* ========== SECONDARY TOOLBAR & TABS ========== */
|
|
356
|
-
.pdf-viewer-toolbar-container {
|
|
357
|
-
display: flex;
|
|
358
|
-
flex-direction: column;
|
|
359
|
-
width: 100%;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
.pdf-viewer-secondary-toolbar {
|
|
363
|
-
display: flex;
|
|
364
|
-
align-items: center;
|
|
365
|
-
justify-content: center;
|
|
366
|
-
padding: 8px 16px;
|
|
367
|
-
background-color: #f9fafb;
|
|
368
|
-
border-bottom: 1px solid #e5e7eb;
|
|
369
|
-
gap: 12px;
|
|
370
|
-
width: 100%;
|
|
371
|
-
box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);
|
|
372
|
-
animation: slideDown 0.2s ease-out;
|
|
373
|
-
transform-origin: top;
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
@keyframes slideDown {
|
|
377
|
-
from { opacity: 0; transform: scaleY(0.95); }
|
|
378
|
-
to { opacity: 1; transform: scaleY(1); }
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
.toolbar-center {
|
|
382
|
-
display: flex;
|
|
383
|
-
align-items: center;
|
|
384
|
-
gap: 4px;
|
|
385
|
-
flex: 1 1 auto;
|
|
386
|
-
justify-content: center;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
.toolbar-tab {
|
|
390
|
-
background: none;
|
|
391
|
-
border: none;
|
|
392
|
-
padding: 6px 12px;
|
|
393
|
-
font-size: 14px;
|
|
394
|
-
font-weight: 500;
|
|
395
|
-
color: #6b7280;
|
|
396
|
-
cursor: pointer;
|
|
397
|
-
border-radius: 6px;
|
|
398
|
-
transition: all 0.2s ease;
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
.toolbar-tab:hover {
|
|
402
|
-
background-color: #f3f4f6;
|
|
403
|
-
color: #374151;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
.toolbar-tab-active {
|
|
407
|
-
color: #2563eb;
|
|
408
|
-
background-color: #eff6ff;
|
|
409
|
-
font-weight: 600;
|
|
410
|
-
}
|
|
411
|
-
.toolbar-dropdown-header {
|
|
412
|
-
font-size: 11px;
|
|
413
|
-
font-weight: 600;
|
|
414
|
-
color: #6b7280;
|
|
415
|
-
padding: 8px 12px 4px 12px;
|
|
416
|
-
letter-spacing: 0.5px;
|
|
417
|
-
text-transform: uppercase;
|
|
418
|
-
}
|
|
419
|
-
`;
|
|
420
|
-
|
|
421
|
-
export {
|
|
422
|
-
toolbarStyles
|
|
423
|
-
};
|
|
424
|
-
//# sourceMappingURL=chunk-KQCU7XW2.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/viewers/pdf/PDFStyles.tsx"],"sourcesContent":["export const toolbarStyles = `\n @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap');\n\n * {\n font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n 'Noto Sans Tamil', 'Noto Sans Devanagari', sans-serif !important;\n }\n\n /* Target PDF.js text layer */\n .textLayer,\n .textLayer span,\n .textLayer div,\n [class*=\"pdf\"],\n [class*=\"page\"],\n canvas + div,\n .embedpdf-viewport *,\n [data-pdf-viewer] *,\n [role=\"document\"] * {\n font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n 'Noto Sans Tamil', 'Noto Sans Devanagari', sans-serif !important;\n }\n\n .pdf-viewer-header {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n padding: 2px 12px 0 12px;\n background: #fff;\n min-height: 32px;\n }\n .header-file-name {\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 400px;\n }\n\n /* ========== COMPACT TOOLBAR ========== */\n .pdf-viewer-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 4px 8px;\n background: #ffffff;\n border-bottom: 1px solid #e5e7eb;\n gap: 4px;\n flex-wrap: wrap;\n min-height: 44px;\n }\n .toolbar-left {\n display: flex;\n align-items: center;\n gap: 2px;\n flex: 0 0 auto;\n }\n .toolbar-right {\n display: flex;\n align-items: center;\n gap: 2px;\n }\n .toolbar-section {\n display: flex;\n align-items: center;\n gap: 2px;\n padding: 0;\n }\n .toolbar-separator {\n width: 1px;\n height: 20px;\n background: #e5e7eb;\n margin: 0 8px;\n flex-shrink: 0;\n }\n\n /* ========== COMPACT BUTTONS ========== */\n .toolbar-button {\n padding: 6px;\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.15s ease;\n position: relative;\n min-width: 32px;\n min-height: 32px;\n color: #4b5563;\n }\n .toolbar-button:hover:not(:disabled) {\n background: #f3f4f6;\n color: #111827;\n }\n .toolbar-button:active:not(:disabled) {\n background: #e5e7eb;\n }\n .toolbar-button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n .toolbar-button svg {\n width: 18px;\n height: 18px;\n display: block;\n }\n .toolbar-button-active {\n background: #eff6ff !important;\n color: #2563eb !important;\n }\n .toolbar-button-active:hover:not(:disabled) {\n background: #dbeafe !important;\n }\n\n /* ========== PAGE NAVIGATION ========== */\n .page-input {\n width: 44px;\n padding: 4px 6px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n background: #fff;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n }\n .page-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n .page-info {\n font-size: 13px;\n color: #6b7280;\n white-space: nowrap;\n font-weight: 500;\n }\n\n /* ========== ZOOM DISPLAY ========== */\n .zoom-display {\n min-width: 48px;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n padding: 4px 8px;\n background: #f9fafb;\n border-radius: 6px;\n border: 1px solid #e5e7eb;\n }\n\n .search-input {\n padding: 6px 10px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n font-size: 13px;\n min-width: 180px;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n }\n .search-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n }\n\n /* ========== VIEWER CONTENT ========== */\n .pdf-viewer-content {\n flex: 1;\n overflow: hidden;\n position: relative;\n user-select: text;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n background-color: #efefef;\n }\n .pdf-viewer-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n background-color: #efefef;\n }\n .pdf-viewer-main {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n background-color: #efefef;\n }\n .pdf-viewer-viewer-area {\n flex: 1;\n overflow: hidden;\n position: relative;\n background-color: #efefef; /* Ensure background matches viewer gray */\n }\n \n /* Override library's inline userSelect: none */\n .pdf-viewer-viewer-area div[style*=\"userSelect\"] {\n user-select: auto !important;\n }\n\n /* ========== PRINT DROPDOWN ========== */\n .print-dropdown-container {\n position: relative;\n display: inline-flex;\n }\n .print-dropdown-trigger {\n display: flex;\n align-items: center;\n gap: 2px;\n }\n .print-dropdown-menu {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n background: #ffffff;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 200px;\n z-index: 1000;\n overflow: hidden;\n }\n .print-dropdown-item {\n display: block;\n width: 100%;\n padding: 10px 14px;\n border: none;\n background: transparent;\n text-align: left;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: background-color 0.15s ease;\n }\n .print-dropdown-item:hover {\n background: #f3f4f6;\n }\n .print-dropdown-item:active {\n background: #e5e7eb;\n }\n .print-dropdown-item + .print-dropdown-item {\n border-top: 1px solid #f3f4f6;\n }\n\n /* ========== TOOLBAR DROPDOWN (Annotation Menu) ========== */\n .toolbar-dropdown-container {\n position: relative;\n display: inline-flex;\n }\n .toolbar-dropdown-button {\n display: flex;\n align-items: center;\n gap: 2px;\n }\n .toolbar-dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n background: #ffffff;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 150px;\n z-index: 1000;\n overflow: hidden;\n }\n .toolbar-dropdown-menu-right {\n left: auto;\n right: 0;\n }\n .toolbar-dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 10px 14px;\n border: none;\n background: transparent;\n text-align: left;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: background-color 0.15s ease;\n }\n .toolbar-dropdown-item:hover {\n background: #f3f4f6;\n }\n .toolbar-dropdown-item:active {\n background: #e5e7eb;\n }\n .toolbar-dropdown-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .toolbar-dropdown-item + .toolbar-dropdown-item {\n border-top: 1px solid #f3f4f6;\n }\n .toolbar-dropdown-item svg {\n font-size: 18px;\n color: #6b7280;\n }\n .toolbar-dropdown-item-active {\n background: #eff6ff;\n color: #2563eb;\n }\n .toolbar-dropdown-item-active svg {\n color: #2563eb;\n }\n .toolbar-dropdown-divider {\n height: 1px;\n background: #e5e7eb;\n margin: 4px 0;\n }\n\n\n\n /* ========== TOOLTIP STYLES ========== */\n .toolbar-button[title]:hover::after {\n content: attr(title);\n position: absolute;\n bottom: -32px;\n left: 50%;\n transform: translateX(-50%);\n padding: 6px 10px;\n background: #1f2937;\n color: white;\n font-size: 12px;\n font-weight: 500;\n border-radius: 6px;\n white-space: nowrap;\n z-index: 1000;\n pointer-events: none;\n opacity: 0;\n animation: fadeIn 0.2s ease-out 0.3s forwards;\n }\n @keyframes fadeIn {\n to { opacity: 1; }\n }\n /* ========== SECONDARY TOOLBAR & TABS ========== */\n .pdf-viewer-toolbar-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .pdf-viewer-secondary-toolbar {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 16px;\n background-color: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n gap: 12px;\n width: 100%;\n box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);\n animation: slideDown 0.2s ease-out;\n transform-origin: top;\n }\n\n @keyframes slideDown {\n from { opacity: 0; transform: scaleY(0.95); }\n to { opacity: 1; transform: scaleY(1); }\n }\n\n .toolbar-center {\n display: flex;\n align-items: center;\n gap: 4px;\n flex: 1 1 auto;\n justify-content: center;\n }\n\n .toolbar-tab {\n background: none;\n border: none;\n padding: 6px 12px;\n font-size: 14px;\n font-weight: 500;\n color: #6b7280;\n cursor: pointer;\n border-radius: 6px;\n transition: all 0.2s ease;\n }\n\n .toolbar-tab:hover {\n background-color: #f3f4f6;\n color: #374151;\n }\n\n .toolbar-tab-active {\n color: #2563eb;\n background-color: #eff6ff;\n font-weight: 600;\n }\n .toolbar-dropdown-header {\n font-size: 11px;\n font-weight: 600;\n color: #6b7280;\n padding: 8px 12px 4px 12px;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n }\n`;"],"mappings":";;;AAAO,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
|