@cannymindstech/file-viewers 0.28.0 → 0.28.1

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.
Files changed (91) hide show
  1. package/dist/chunk-2BLHLWNN.js +299 -0
  2. package/dist/chunk-2BLHLWNN.js.map +1 -0
  3. package/dist/chunk-4HVU224A.js +2454 -0
  4. package/dist/chunk-4HVU224A.js.map +1 -0
  5. package/dist/chunk-6BRYDA3B.js +329 -0
  6. package/dist/chunk-6BRYDA3B.js.map +1 -0
  7. package/dist/chunk-6L72TJIW.mjs +2454 -0
  8. package/dist/chunk-6L72TJIW.mjs.map +1 -0
  9. package/dist/chunk-7PMZ4GN5.mjs +290 -0
  10. package/dist/chunk-7PMZ4GN5.mjs.map +1 -0
  11. package/dist/chunk-B5NNB4KD.mjs +268 -0
  12. package/dist/chunk-B5NNB4KD.mjs.map +1 -0
  13. package/dist/chunk-CIWCHSAA.js +309 -0
  14. package/dist/chunk-CIWCHSAA.js.map +1 -0
  15. package/dist/chunk-D7SDEVDM.js +268 -0
  16. package/dist/chunk-D7SDEVDM.js.map +1 -0
  17. package/dist/chunk-EKNP342T.mjs +299 -0
  18. package/dist/chunk-EKNP342T.mjs.map +1 -0
  19. package/dist/chunk-EM63H4SA.js +290 -0
  20. package/dist/chunk-EM63H4SA.js.map +1 -0
  21. package/dist/chunk-IJMNPAXX.mjs +309 -0
  22. package/dist/chunk-IJMNPAXX.mjs.map +1 -0
  23. package/dist/chunk-JKX5RSLF.mjs +871 -0
  24. package/dist/chunk-JKX5RSLF.mjs.map +1 -0
  25. package/dist/chunk-KJNOBIUZ.mjs +36 -0
  26. package/dist/chunk-KJNOBIUZ.mjs.map +1 -0
  27. package/dist/chunk-KQLIG6WK.js +871 -0
  28. package/dist/chunk-KQLIG6WK.js.map +1 -0
  29. package/dist/chunk-KWHXS7I4.mjs +615 -0
  30. package/dist/chunk-KWHXS7I4.mjs.map +1 -0
  31. package/dist/chunk-NELCZBZV.js +489 -0
  32. package/dist/chunk-NELCZBZV.js.map +1 -0
  33. package/dist/chunk-OPJOCUSL.js +36 -0
  34. package/dist/chunk-OPJOCUSL.js.map +1 -0
  35. package/dist/chunk-S5KXYKBX.js +615 -0
  36. package/dist/chunk-S5KXYKBX.js.map +1 -0
  37. package/dist/chunk-W2P6JHTQ.mjs +489 -0
  38. package/dist/chunk-W2P6JHTQ.mjs.map +1 -0
  39. package/dist/chunk-XJQ5J2UF.mjs +329 -0
  40. package/dist/chunk-XJQ5J2UF.mjs.map +1 -0
  41. package/dist/components/viewers/AudioViewer.d.mts +6 -0
  42. package/dist/components/viewers/AudioViewer.d.ts +6 -0
  43. package/dist/components/viewers/AudioViewer.js +10 -0
  44. package/dist/components/viewers/AudioViewer.js.map +1 -0
  45. package/dist/components/viewers/AudioViewer.mjs +10 -0
  46. package/dist/components/viewers/AudioViewer.mjs.map +1 -0
  47. package/dist/components/viewers/DefaultViewer.d.mts +6 -0
  48. package/dist/components/viewers/DefaultViewer.d.ts +6 -0
  49. package/dist/components/viewers/DefaultViewer.js +10 -0
  50. package/dist/components/viewers/DefaultViewer.js.map +1 -0
  51. package/dist/components/viewers/DefaultViewer.mjs +10 -0
  52. package/dist/components/viewers/DefaultViewer.mjs.map +1 -0
  53. package/dist/components/viewers/ImageViewer.d.mts +6 -0
  54. package/dist/components/viewers/ImageViewer.d.ts +6 -0
  55. package/dist/components/viewers/ImageViewer.js +10 -0
  56. package/dist/components/viewers/ImageViewer.js.map +1 -0
  57. package/dist/components/viewers/ImageViewer.mjs +10 -0
  58. package/dist/components/viewers/ImageViewer.mjs.map +1 -0
  59. package/dist/components/viewers/PDFViewer.d.mts +51 -0
  60. package/dist/components/viewers/PDFViewer.d.ts +51 -0
  61. package/dist/components/viewers/PDFViewer.js +11 -0
  62. package/dist/components/viewers/PDFViewer.js.map +1 -0
  63. package/dist/components/viewers/PDFViewer.mjs +11 -0
  64. package/dist/components/viewers/PDFViewer.mjs.map +1 -0
  65. package/dist/components/viewers/TIFFViewer.d.mts +6 -0
  66. package/dist/components/viewers/TIFFViewer.d.ts +6 -0
  67. package/dist/components/viewers/TIFFViewer.js +10 -0
  68. package/dist/components/viewers/TIFFViewer.js.map +1 -0
  69. package/dist/components/viewers/TIFFViewer.mjs +10 -0
  70. package/dist/components/viewers/TIFFViewer.mjs.map +1 -0
  71. package/dist/components/viewers/TextViewer.d.mts +6 -0
  72. package/dist/components/viewers/TextViewer.d.ts +6 -0
  73. package/dist/components/viewers/TextViewer.js +10 -0
  74. package/dist/components/viewers/TextViewer.js.map +1 -0
  75. package/dist/components/viewers/TextViewer.mjs +10 -0
  76. package/dist/components/viewers/TextViewer.mjs.map +1 -0
  77. package/dist/components/viewers/VideoViewer.d.mts +6 -0
  78. package/dist/components/viewers/VideoViewer.d.ts +6 -0
  79. package/dist/components/viewers/VideoViewer.js +10 -0
  80. package/dist/components/viewers/VideoViewer.js.map +1 -0
  81. package/dist/components/viewers/VideoViewer.mjs +10 -0
  82. package/dist/components/viewers/VideoViewer.mjs.map +1 -0
  83. package/dist/index.d.mts +75 -0
  84. package/dist/index.d.ts +75 -0
  85. package/dist/index.js +305 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/index.mjs +305 -0
  88. package/dist/index.mjs.map +1 -0
  89. package/dist/types-DMF9gANJ.d.mts +101 -0
  90. package/dist/types-DMF9gANJ.d.ts +101 -0
  91. package/package.json +3 -2
@@ -0,0 +1,299 @@
1
+ "use client";
2
+ import {
3
+ getFileExtension
4
+ } from "./chunk-KJNOBIUZ.mjs";
5
+ import {
6
+ FileIcon_default,
7
+ mergeToolbarConfig
8
+ } from "./chunk-7PMZ4GN5.mjs";
9
+
10
+ // src/components/viewers/AudioViewer.tsx
11
+ import {
12
+ useEffect,
13
+ useMemo,
14
+ useRef,
15
+ useState
16
+ } from "react";
17
+ import {
18
+ Box,
19
+ Card,
20
+ CardContent,
21
+ CardHeader,
22
+ LinearProgress,
23
+ Typography,
24
+ IconButton,
25
+ Tooltip,
26
+ Stack
27
+ } from "@mui/material";
28
+ import DownloadIcon from "@mui/icons-material/Download";
29
+ import PrintIcon from "@mui/icons-material/Print";
30
+ import FullscreenIcon from "@mui/icons-material/Fullscreen";
31
+ import InfoIcon from "@mui/icons-material/Info";
32
+ import DescriptionIcon from "@mui/icons-material/Description";
33
+ import HistoryIcon from "@mui/icons-material/History";
34
+ import { LocalOffer } from "@mui/icons-material";
35
+ import { jsx, jsxs } from "react/jsx-runtime";
36
+ var AudioViewer = ({
37
+ file,
38
+ url,
39
+ fileName,
40
+ className = "",
41
+ style = {},
42
+ width = "100%",
43
+ height = "100%",
44
+ onLoad,
45
+ onError,
46
+ onDownloadClick,
47
+ onPrintClick,
48
+ onMetadataClick,
49
+ onPropertiesClick,
50
+ onTagsClick,
51
+ onHistoryClick,
52
+ showDownload = true,
53
+ showPrint = false,
54
+ showMetadata = false,
55
+ showProperties = false,
56
+ showTags = true,
57
+ showHistory = true,
58
+ // Extract props that shouldn't be passed to DOM elements
59
+ mimeType,
60
+ fileSize,
61
+ showPageCount,
62
+ showPageNavigation,
63
+ showZoomControls,
64
+ showSearch,
65
+ customRegistry,
66
+ initialSearchText,
67
+ initialSearchPages,
68
+ autoOpenSearch,
69
+ autoExecuteSearch,
70
+ onSearchComplete,
71
+ toolbarActions,
72
+ ...props
73
+ }) => {
74
+ const audioRef = useRef(null);
75
+ const containerRef = useRef(null);
76
+ const [objectUrl, setObjectUrl] = useState(null);
77
+ const [isLoading, setIsLoading] = useState(false);
78
+ const [error, setError] = useState(null);
79
+ const [isFullScreen, setIsFullScreen] = useState(false);
80
+ useEffect(() => {
81
+ let urlValue = null;
82
+ if (file) {
83
+ setIsLoading(true);
84
+ urlValue = URL.createObjectURL(file);
85
+ } else if (url) {
86
+ urlValue = url;
87
+ }
88
+ setObjectUrl(urlValue);
89
+ setError(null);
90
+ return () => {
91
+ if (urlValue && file) {
92
+ URL.revokeObjectURL(urlValue);
93
+ }
94
+ };
95
+ }, [file, url]);
96
+ useEffect(() => {
97
+ if (!audioRef.current) {
98
+ return;
99
+ }
100
+ const handleLoadedMetadata = () => {
101
+ setIsLoading(false);
102
+ onLoad?.();
103
+ };
104
+ const handleError = () => {
105
+ const message = "Failed to load audio resource";
106
+ setIsLoading(false);
107
+ setError(message);
108
+ onError?.(new Error(message));
109
+ };
110
+ const element = audioRef.current;
111
+ element.addEventListener("loadedmetadata", handleLoadedMetadata);
112
+ element.addEventListener("error", handleError);
113
+ return () => {
114
+ element.removeEventListener("loadedmetadata", handleLoadedMetadata);
115
+ element.removeEventListener("error", handleError);
116
+ };
117
+ }, [onLoad, onError, objectUrl]);
118
+ const resolvedFileName = useMemo(
119
+ () => fileName || file?.name || (url ? url.split("/").pop() : "audio"),
120
+ [fileName, file, url]
121
+ );
122
+ const fileExtension = useMemo(
123
+ () => getFileExtension(resolvedFileName || ""),
124
+ [resolvedFileName]
125
+ );
126
+ const handleToggleFullScreen = () => {
127
+ if (!isFullScreen && containerRef.current?.requestFullscreen) {
128
+ containerRef.current.requestFullscreen();
129
+ setIsFullScreen(true);
130
+ } else if (isFullScreen && document.exitFullscreen) {
131
+ document.exitFullscreen();
132
+ setIsFullScreen(false);
133
+ }
134
+ };
135
+ const toolbar = mergeToolbarConfig({
136
+ showDownload,
137
+ showPrint,
138
+ showMetadata,
139
+ showTags,
140
+ showProperties,
141
+ showHistory,
142
+ onDownloadClick,
143
+ onPrintClick,
144
+ onMetadataClick,
145
+ onPropertiesClick,
146
+ onHistoryClick,
147
+ toolbarActions
148
+ });
149
+ return /* @__PURE__ */ jsx(
150
+ Box,
151
+ {
152
+ ref: containerRef,
153
+ className: `audio-viewer ${className}`,
154
+ sx: { width, height, ...style },
155
+ ...props,
156
+ children: /* @__PURE__ */ jsxs(
157
+ Card,
158
+ {
159
+ sx: { height: "100%", display: "flex", flexDirection: "column" },
160
+ elevation: 1,
161
+ children: [
162
+ /* @__PURE__ */ jsx(
163
+ CardHeader,
164
+ {
165
+ avatar: /* @__PURE__ */ jsx(FileIcon_default, { ext: fileExtension, size: 32 }),
166
+ title: /* @__PURE__ */ jsx(Typography, { variant: "subtitle1", fontWeight: 500, children: resolvedFileName }),
167
+ action: /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, children: [
168
+ !toolbar.isHidden("download") && /* @__PURE__ */ jsx(Tooltip, { title: toolbar.getLabel("download") || "Download", children: /* @__PURE__ */ jsx(
169
+ IconButton,
170
+ {
171
+ size: "small",
172
+ onClick: toolbar.getHandler("download", onDownloadClick),
173
+ disabled: toolbar.isDisabled("download"),
174
+ "aria-label": "Download audio",
175
+ children: toolbar.getIcon("download") || /* @__PURE__ */ jsx(DownloadIcon, {})
176
+ }
177
+ ) }),
178
+ !toolbar.isHidden("print") && /* @__PURE__ */ jsx(Tooltip, { title: toolbar.getLabel("print") || "Print", children: /* @__PURE__ */ jsx(
179
+ IconButton,
180
+ {
181
+ size: "small",
182
+ onClick: toolbar.getHandler("print", onPrintClick),
183
+ disabled: toolbar.isDisabled("print"),
184
+ "aria-label": "Print audio",
185
+ children: toolbar.getIcon("print") || /* @__PURE__ */ jsx(PrintIcon, {})
186
+ }
187
+ ) }),
188
+ !toolbar.isHidden("fullscreen") && /* @__PURE__ */ jsx(Tooltip, { title: toolbar.getLabel("fullscreen") || "Fullscreen", children: /* @__PURE__ */ jsx(
189
+ IconButton,
190
+ {
191
+ size: "small",
192
+ onClick: toolbar.getHandler(
193
+ "fullscreen",
194
+ handleToggleFullScreen
195
+ ),
196
+ disabled: toolbar.isDisabled("fullscreen"),
197
+ "aria-label": "Toggle fullscreen",
198
+ children: toolbar.getIcon("fullscreen") || /* @__PURE__ */ jsx(FullscreenIcon, {})
199
+ }
200
+ ) }),
201
+ !toolbar.isHidden("metadata") && /* @__PURE__ */ jsx(
202
+ Tooltip,
203
+ {
204
+ title: toolbar.getLabel("metadata") || "Document Metadata",
205
+ children: /* @__PURE__ */ jsx(
206
+ IconButton,
207
+ {
208
+ size: "small",
209
+ onClick: toolbar.getHandler("metadata", onMetadataClick),
210
+ disabled: toolbar.isDisabled("metadata"),
211
+ "aria-label": "View document metadata",
212
+ children: toolbar.getIcon("metadata") || /* @__PURE__ */ jsx(DescriptionIcon, {})
213
+ }
214
+ )
215
+ }
216
+ ),
217
+ !toolbar.isHidden("properties") && /* @__PURE__ */ jsx(
218
+ Tooltip,
219
+ {
220
+ title: toolbar.getLabel("properties") || "Document Properties",
221
+ children: /* @__PURE__ */ jsx(
222
+ IconButton,
223
+ {
224
+ size: "small",
225
+ onClick: toolbar.getHandler(
226
+ "properties",
227
+ onPropertiesClick
228
+ ),
229
+ disabled: toolbar.isDisabled("properties"),
230
+ "aria-label": "View document properties",
231
+ children: toolbar.getIcon("properties") || /* @__PURE__ */ jsx(InfoIcon, {})
232
+ }
233
+ )
234
+ }
235
+ ),
236
+ !toolbar.isHidden("tags") && /* @__PURE__ */ jsx(Tooltip, { title: toolbar.getLabel("tags") || "Document Tags", children: /* @__PURE__ */ jsx(
237
+ IconButton,
238
+ {
239
+ size: "small",
240
+ onClick: toolbar.getHandler("tags", onTagsClick),
241
+ disabled: toolbar.isDisabled("tags"),
242
+ "aria-label": "View document tags",
243
+ children: toolbar.getIcon("tags") || /* @__PURE__ */ jsx(LocalOffer, {})
244
+ }
245
+ ) }),
246
+ !toolbar.isHidden("history") && /* @__PURE__ */ jsx(
247
+ Tooltip,
248
+ {
249
+ title: toolbar.getLabel("history") || "Document History",
250
+ children: /* @__PURE__ */ jsx(
251
+ IconButton,
252
+ {
253
+ size: "small",
254
+ onClick: toolbar.getHandler("history", onHistoryClick),
255
+ disabled: toolbar.isDisabled("history"),
256
+ "aria-label": "View document history",
257
+ children: toolbar.getIcon("history") || /* @__PURE__ */ jsx(HistoryIcon, {})
258
+ }
259
+ )
260
+ }
261
+ )
262
+ ] }),
263
+ sx: { pb: 1.5 }
264
+ }
265
+ ),
266
+ isLoading && /* @__PURE__ */ jsx(LinearProgress, { sx: { mx: 3, mb: 2 } }),
267
+ error && /* @__PURE__ */ jsx(Typography, { color: "error", variant: "body2", sx: { px: 3, pb: 1 }, children: error }),
268
+ /* @__PURE__ */ jsx(
269
+ CardContent,
270
+ {
271
+ sx: {
272
+ flexGrow: 1,
273
+ display: "flex",
274
+ alignItems: "center",
275
+ justifyContent: "center"
276
+ },
277
+ children: objectUrl ? /* @__PURE__ */ jsx(
278
+ "audio",
279
+ {
280
+ ref: audioRef,
281
+ controls: true,
282
+ controlsList: "nodownload",
283
+ style: { width: "100%" },
284
+ src: objectUrl
285
+ }
286
+ ) : /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "text.secondary", children: "No audio source provided." })
287
+ }
288
+ )
289
+ ]
290
+ }
291
+ )
292
+ }
293
+ );
294
+ };
295
+
296
+ export {
297
+ AudioViewer
298
+ };
299
+ //# sourceMappingURL=chunk-EKNP342T.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/viewers/AudioViewer.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n Box,\n Card,\n CardContent,\n CardHeader,\n LinearProgress,\n Typography,\n IconButton,\n Tooltip,\n Stack,\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\nexport const AudioViewer: 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 onPropertiesClick,\n onTagsClick,\n onHistoryClick,\n showDownload = true,\n showPrint = false,\n showMetadata = false,\n showProperties = false,\n showTags = true,\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 audioRef = useRef<HTMLAudioElement | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [objectUrl, setObjectUrl] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isFullScreen, setIsFullScreen] = useState(false);\n\n useEffect(() => {\n let urlValue: string | null = null;\n\n if (file) {\n setIsLoading(true);\n urlValue = URL.createObjectURL(file);\n } else if (url) {\n urlValue = url;\n }\n\n setObjectUrl(urlValue);\n setError(null);\n\n return () => {\n if (urlValue && file) {\n URL.revokeObjectURL(urlValue);\n }\n };\n }, [file, url]);\n\n useEffect(() => {\n if (!audioRef.current) {\n return;\n }\n\n const handleLoadedMetadata = () => {\n setIsLoading(false);\n onLoad?.();\n };\n\n const handleError = () => {\n const message = \"Failed to load audio resource\";\n setIsLoading(false);\n setError(message);\n onError?.(new Error(message));\n };\n\n const element = audioRef.current;\n element.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n element.addEventListener(\"error\", handleError);\n\n return () => {\n element.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n element.removeEventListener(\"error\", handleError);\n };\n }, [onLoad, onError, objectUrl]);\n\n const resolvedFileName = useMemo(\n () => fileName || file?.name || (url ? url.split(\"/\").pop() : \"audio\"),\n [fileName, file, url]\n );\n\n const fileExtension = useMemo(\n () => getFileExtension(resolvedFileName || \"\"),\n [resolvedFileName]\n );\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 onPropertiesClick,\n onHistoryClick,\n toolbarActions,\n });\n\n return (\n <Box\n ref={containerRef}\n className={`audio-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 audio\"\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 audio\"\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.5 }}\n />\n {isLoading && <LinearProgress sx={{ mx: 3, mb: 2 }} />}\n {error && (\n <Typography color=\"error\" variant=\"body2\" sx={{ px: 3, pb: 1 }}>\n {error}\n </Typography>\n )}\n <CardContent\n sx={{\n flexGrow: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {objectUrl ? (\n <audio\n ref={audioRef}\n controls\n controlsList=\"nodownload\"\n style={{ width: \"100%\" }}\n src={objectUrl}\n />\n ) : (\n <Typography variant=\"body2\" color=\"text.secondary\">\n No audio source provided.\n </Typography>\n )}\n </CardContent>\n </Card>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,kBAAkB;AACzB,OAAO,eAAe;AACtB,OAAO,oBAAoB;AAC3B,OAAO,cAAc;AACrB,OAAO,qBAAqB;AAC5B,OAAO,iBAAiB;AACxB,SAAS,kBAAkB;AAiJT,cAON,YAPM;AA3IX,IAAM,cAAyC,CAAC;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,cAAc;AAAA;AAAA,EAEd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,WAAW,OAAgC,IAAI;AACrD,QAAM,eAAe,OAAuB,IAAI;AAChD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAwB,IAAI;AAC9D,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AAEtD,YAAU,MAAM;AACd,QAAI,WAA0B;AAE9B,QAAI,MAAM;AACR,mBAAa,IAAI;AACjB,iBAAW,IAAI,gBAAgB,IAAI;AAAA,IACrC,WAAW,KAAK;AACd,iBAAW;AAAA,IACb;AAEA,iBAAa,QAAQ;AACrB,aAAS,IAAI;AAEb,WAAO,MAAM;AACX,UAAI,YAAY,MAAM;AACpB,YAAI,gBAAgB,QAAQ;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,MAAM,GAAG,CAAC;AAEd,YAAU,MAAM;AACd,QAAI,CAAC,SAAS,SAAS;AACrB;AAAA,IACF;AAEA,UAAM,uBAAuB,MAAM;AACjC,mBAAa,KAAK;AAClB,eAAS;AAAA,IACX;AAEA,UAAM,cAAc,MAAM;AACxB,YAAM,UAAU;AAChB,mBAAa,KAAK;AAClB,eAAS,OAAO;AAChB,gBAAU,IAAI,MAAM,OAAO,CAAC;AAAA,IAC9B;AAEA,UAAM,UAAU,SAAS;AACzB,YAAQ,iBAAiB,kBAAkB,oBAAoB;AAC/D,YAAQ,iBAAiB,SAAS,WAAW;AAE7C,WAAO,MAAM;AACX,cAAQ,oBAAoB,kBAAkB,oBAAoB;AAClE,cAAQ,oBAAoB,SAAS,WAAW;AAAA,IAClD;AAAA,EACF,GAAG,CAAC,QAAQ,SAAS,SAAS,CAAC;AAE/B,QAAM,mBAAmB;AAAA,IACvB,MAAM,YAAY,MAAM,SAAS,MAAM,IAAI,MAAM,GAAG,EAAE,IAAI,IAAI;AAAA,IAC9D,CAAC,UAAU,MAAM,GAAG;AAAA,EACtB;AAEA,QAAM,gBAAgB;AAAA,IACpB,MAAM,iBAAiB,oBAAoB,EAAE;AAAA,IAC7C,CAAC,gBAAgB;AAAA,EACnB;AAEA,QAAM,yBAAyB,MAAM;AACnC,QAAI,CAAC,gBAAgB,aAAa,SAAS,mBAAmB;AAC5D,mBAAa,QAAQ,kBAAkB;AACvC,sBAAgB,IAAI;AAAA,IACtB,WAAW,gBAAgB,SAAS,gBAAgB;AAClD,eAAS,eAAe;AACxB,sBAAgB,KAAK;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,UAAU,mBAAmB;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,gBAAgB,SAAS;AAAA,MACpC,IAAI,EAAE,OAAO,QAAQ,GAAG,MAAM;AAAA,MAC7B,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,IAAI,EAAE,QAAQ,QAAQ,SAAS,QAAQ,eAAe,SAAS;AAAA,UAC/D,WAAW;AAAA,UAEX;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,QAAQ,oBAAC,oBAAS,KAAK,eAAe,MAAM,IAAI;AAAA,gBAChD,OACE,oBAAC,cAAW,SAAQ,aAAY,YAAY,KACzC,4BACH;AAAA,gBAEF,QACE,qBAAC,SAAM,WAAU,OAAM,SAAS,GAC7B;AAAA,mBAAC,QAAQ,SAAS,UAAU,KAC3B,oBAAC,WAAQ,OAAO,QAAQ,SAAS,UAAU,KAAK,YAC9C;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAAS,QAAQ,WAAW,YAAY,eAAe;AAAA,sBACvD,UAAU,QAAQ,WAAW,UAAU;AAAA,sBACvC,cAAW;AAAA,sBAEV,kBAAQ,QAAQ,UAAU,KAAK,oBAAC,gBAAa;AAAA;AAAA,kBAChD,GACF;AAAA,kBAED,CAAC,QAAQ,SAAS,OAAO,KACxB,oBAAC,WAAQ,OAAO,QAAQ,SAAS,OAAO,KAAK,SAC3C;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAAS,QAAQ,WAAW,SAAS,YAAY;AAAA,sBACjD,UAAU,QAAQ,WAAW,OAAO;AAAA,sBACpC,cAAW;AAAA,sBAEV,kBAAQ,QAAQ,OAAO,KAAK,oBAAC,aAAU;AAAA;AAAA,kBAC1C,GACF;AAAA,kBAED,CAAC,QAAQ,SAAS,YAAY,KAC7B,oBAAC,WAAQ,OAAO,QAAQ,SAAS,YAAY,KAAK,cAChD;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAAS,QAAQ;AAAA,wBACf;AAAA,wBACA;AAAA,sBACF;AAAA,sBACA,UAAU,QAAQ,WAAW,YAAY;AAAA,sBACzC,cAAW;AAAA,sBAEV,kBAAQ,QAAQ,YAAY,KAAK,oBAAC,kBAAe;AAAA;AAAA,kBACpD,GACF;AAAA,kBAED,CAAC,QAAQ,SAAS,UAAU,KAC3B;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO,QAAQ,SAAS,UAAU,KAAK;AAAA,sBAEvC;AAAA,wBAAC;AAAA;AAAA,0BACC,MAAK;AAAA,0BACL,SAAS,QAAQ,WAAW,YAAY,eAAe;AAAA,0BACvD,UAAU,QAAQ,WAAW,UAAU;AAAA,0BACvC,cAAW;AAAA,0BAEV,kBAAQ,QAAQ,UAAU,KAAK,oBAAC,mBAAgB;AAAA;AAAA,sBACnD;AAAA;AAAA,kBACF;AAAA,kBAED,CAAC,QAAQ,SAAS,YAAY,KAC7B;AAAA,oBAAC;AAAA;AAAA,sBACC,OACE,QAAQ,SAAS,YAAY,KAAK;AAAA,sBAGpC;AAAA,wBAAC;AAAA;AAAA,0BACC,MAAK;AAAA,0BACL,SAAS,QAAQ;AAAA,4BACf;AAAA,4BACA;AAAA,0BACF;AAAA,0BACA,UAAU,QAAQ,WAAW,YAAY;AAAA,0BACzC,cAAW;AAAA,0BAEV,kBAAQ,QAAQ,YAAY,KAAK,oBAAC,YAAS;AAAA;AAAA,sBAC9C;AAAA;AAAA,kBACF;AAAA,kBAED,CAAC,QAAQ,SAAS,MAAM,KACvB,oBAAC,WAAQ,OAAO,QAAQ,SAAS,MAAM,KAAK,iBAC1C;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAAS,QAAQ,WAAW,QAAQ,WAAW;AAAA,sBAC/C,UAAU,QAAQ,WAAW,MAAM;AAAA,sBACnC,cAAW;AAAA,sBAEV,kBAAQ,QAAQ,MAAM,KAAK,oBAAC,cAAW;AAAA;AAAA,kBAC1C,GACF;AAAA,kBAED,CAAC,QAAQ,SAAS,SAAS,KAC1B;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAO,QAAQ,SAAS,SAAS,KAAK;AAAA,sBAEtC;AAAA,wBAAC;AAAA;AAAA,0BACC,MAAK;AAAA,0BACL,SAAS,QAAQ,WAAW,WAAW,cAAc;AAAA,0BACrD,UAAU,QAAQ,WAAW,SAAS;AAAA,0BACtC,cAAW;AAAA,0BAEV,kBAAQ,QAAQ,SAAS,KAAK,oBAAC,eAAY;AAAA;AAAA,sBAC9C;AAAA;AAAA,kBACF;AAAA,mBAEJ;AAAA,gBAEF,IAAI,EAAE,IAAI,IAAI;AAAA;AAAA,YAChB;AAAA,YACC,aAAa,oBAAC,kBAAe,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG;AAAA,YACnD,SACC,oBAAC,cAAW,OAAM,SAAQ,SAAQ,SAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAC1D,iBACH;AAAA,YAEF;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI;AAAA,kBACF,UAAU;AAAA,kBACV,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,gBAAgB;AAAA,gBAClB;AAAA,gBAEC,sBACC;AAAA,kBAAC;AAAA;AAAA,oBACC,KAAK;AAAA,oBACL,UAAQ;AAAA,oBACR,cAAa;AAAA,oBACb,OAAO,EAAE,OAAO,OAAO;AAAA,oBACvB,KAAK;AAAA;AAAA,gBACP,IAEA,oBAAC,cAAW,SAAQ,SAAQ,OAAM,kBAAiB,uCAEnD;AAAA;AAAA,YAEJ;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,290 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
+
3
+ // src/utils/toolbarUtils.ts
4
+ function mergeToolbarConfig(props) {
5
+ const { toolbarActions = {} } = props;
6
+ const legacyVisibility = {
7
+ download: props.showDownload,
8
+ print: props.showPrint,
9
+ search: props.showSearch,
10
+ metadata: props.showMetadata,
11
+ properties: props.showProperties,
12
+ tags: props.showTags,
13
+ history: props.showHistory,
14
+ pageNavigation: props.showPageNavigation,
15
+ zoomControls: props.showZoomControls,
16
+ pageCount: props.showPageCount,
17
+ rotation: props.showRotation,
18
+ rotateLeft: props.showRotation,
19
+ rotateRight: props.showRotation
20
+ };
21
+ const legacyHandlers = {
22
+ download: props.onDownloadClick,
23
+ print: props.onPrintClick,
24
+ metadata: props.onMetadataClick,
25
+ properties: props.onPropertiesClick,
26
+ tags: props.onTagsClick,
27
+ history: props.onHistoryClick
28
+ };
29
+ return {
30
+ isHidden: (actionId) => {
31
+ if (_optionalChain([toolbarActions, 'access', _ => _[actionId], 'optionalAccess', _2 => _2.hidden]) !== void 0) {
32
+ return toolbarActions[actionId].hidden;
33
+ }
34
+ if (_optionalChain([toolbarActions, 'access', _3 => _3[actionId], 'optionalAccess', _4 => _4.disabled]) !== void 0) {
35
+ return false;
36
+ }
37
+ if (legacyVisibility[actionId] !== void 0) {
38
+ return !legacyVisibility[actionId];
39
+ }
40
+ return false;
41
+ },
42
+ isDisabled: (actionId) => {
43
+ if (_optionalChain([toolbarActions, 'access', _5 => _5[actionId], 'optionalAccess', _6 => _6.disabled]) !== void 0) {
44
+ return toolbarActions[actionId].disabled;
45
+ }
46
+ return false;
47
+ },
48
+ getHandler: (actionId, defaultHandler) => {
49
+ return _nullishCoalesce(_nullishCoalesce(_optionalChain([toolbarActions, 'access', _7 => _7[actionId], 'optionalAccess', _8 => _8.onClick]), () => ( legacyHandlers[actionId])), () => ( defaultHandler));
50
+ },
51
+ getIcon: (actionId) => {
52
+ return _optionalChain([toolbarActions, 'access', _9 => _9[actionId], 'optionalAccess', _10 => _10.icon]);
53
+ },
54
+ getLabel: (actionId) => {
55
+ return _optionalChain([toolbarActions, 'access', _11 => _11[actionId], 'optionalAccess', _12 => _12.label]);
56
+ }
57
+ };
58
+ }
59
+
60
+ // src/components/FileIcon.tsx
61
+ var _jsxruntime = require('react/jsx-runtime');
62
+ var FileIcon = ({ ext, size = 48, sx = {} }) => {
63
+ const extension = _optionalChain([ext, 'optionalAccess', _13 => _13.toLowerCase, 'call', _14 => _14(), 'access', _15 => _15.replace, 'call', _16 => _16(/^\./, "")]) || "";
64
+ const getIconConfig = (extension2) => {
65
+ switch (extension2) {
66
+ case "pdf":
67
+ return { color: "#d32f2f", bgColor: "#ffebee", label: "PDF" };
68
+ case "doc":
69
+ case "docx":
70
+ return { color: "#1976d2", bgColor: "#e3f2fd", label: extension2.toUpperCase() };
71
+ case "xls":
72
+ case "xlsx":
73
+ return { color: "#388e3c", bgColor: "#e8f5e8", label: extension2.toUpperCase() };
74
+ case "ppt":
75
+ case "pptx":
76
+ return { color: "#f57c00", bgColor: "#fff3e0", label: extension2.toUpperCase() };
77
+ case "jpg":
78
+ case "jpeg":
79
+ case "png":
80
+ case "gif":
81
+ case "svg":
82
+ case "webp":
83
+ case "bmp":
84
+ case "tiff":
85
+ case "tif":
86
+ return { color: "#7b1fa2", bgColor: "#f3e5f5", label: extension2.toUpperCase() };
87
+ case "mp4":
88
+ case "avi":
89
+ case "mov":
90
+ case "wmv":
91
+ case "webm":
92
+ case "mkv":
93
+ return { color: "#c2185b", bgColor: "#fce4ec", label: extension2.toUpperCase() };
94
+ case "mp3":
95
+ case "wav":
96
+ case "flac":
97
+ case "aac":
98
+ case "ogg":
99
+ case "m4a":
100
+ return { color: "#303f9f", bgColor: "#e8eaf6", label: extension2.toUpperCase() };
101
+ case "zip":
102
+ case "rar":
103
+ case "7z":
104
+ case "tar":
105
+ case "gz":
106
+ return { color: "#f9a825", bgColor: "#fffde7", label: extension2.toUpperCase() };
107
+ case "txt":
108
+ case "md":
109
+ case "csv":
110
+ return { color: "#424242", bgColor: "#f5f5f5", label: extension2.toUpperCase() };
111
+ case "js":
112
+ case "jsx":
113
+ case "ts":
114
+ case "tsx":
115
+ case "html":
116
+ case "css":
117
+ case "json":
118
+ case "xml":
119
+ case "py":
120
+ case "java":
121
+ case "cpp":
122
+ case "c":
123
+ return { color: "#424242", bgColor: "#f5f5f5", label: extension2.toUpperCase() };
124
+ default:
125
+ return { color: "#757575", bgColor: "#fafafa", label: extension2 ? extension2.toUpperCase() : "FILE" };
126
+ }
127
+ };
128
+ const iconConfig = getIconConfig(extension);
129
+ const getSVGIcon = (ext2) => {
130
+ const iconSize = size * 0.6;
131
+ switch (ext2) {
132
+ case "pdf":
133
+ case "doc":
134
+ case "docx":
135
+ case "ppt":
136
+ case "pptx":
137
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: iconSize, height: iconSize, viewBox: "0 0 24 24", fill: "none", children: [
138
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
139
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "14,2 14,8 20,8", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
140
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "16", y1: "13", x2: "8", y2: "13", stroke: iconConfig.color, strokeWidth: "2" }),
141
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "16", y1: "17", x2: "8", y2: "17", stroke: iconConfig.color, strokeWidth: "2" }),
142
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "10,9 9,9 8,9", stroke: iconConfig.color, strokeWidth: "2" })
143
+ ] });
144
+ case "xls":
145
+ case "xlsx":
146
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: iconSize, height: iconSize, viewBox: "0 0 24 24", fill: "none", children: [
147
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
148
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "14,2 14,8 20,8", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
149
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "8", y1: "13", x2: "16", y2: "13", stroke: iconConfig.color, strokeWidth: "2" }),
150
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "8", y1: "17", x2: "16", y2: "17", stroke: iconConfig.color, strokeWidth: "2" }),
151
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "12", y1: "9", x2: "12", y2: "21", stroke: iconConfig.color, strokeWidth: "2" })
152
+ ] });
153
+ case "jpg":
154
+ case "jpeg":
155
+ case "png":
156
+ case "gif":
157
+ case "svg":
158
+ case "webp":
159
+ case "bmp":
160
+ case "tiff":
161
+ case "tif":
162
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: iconSize, height: iconSize, viewBox: "0 0 24 24", fill: "none", children: [
163
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
164
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "circle", { cx: "8.5", cy: "8.5", r: "1.5", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
165
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "21,15 16,10 5,21", stroke: iconConfig.color, strokeWidth: "2", fill: "none" })
166
+ ] });
167
+ case "mp4":
168
+ case "avi":
169
+ case "mov":
170
+ case "wmv":
171
+ case "webm":
172
+ case "mkv":
173
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: iconSize, height: iconSize, viewBox: "0 0 24 24", fill: "none", children: [
174
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polygon", { points: "23 12 8 2 8 22 23 12", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
175
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "rect", { x: "1", y: "5", width: "6", height: "14", rx: "1", stroke: iconConfig.color, strokeWidth: "2", fill: "none" })
176
+ ] });
177
+ case "mp3":
178
+ case "wav":
179
+ case "flac":
180
+ case "aac":
181
+ case "ogg":
182
+ case "m4a":
183
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: iconSize, height: iconSize, viewBox: "0 0 24 24", fill: "none", children: [
184
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M9 18V5l12-2v13", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
185
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "circle", { cx: "6", cy: "18", r: "3", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
186
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "circle", { cx: "18", cy: "16", r: "3", stroke: iconConfig.color, strokeWidth: "2", fill: "none" })
187
+ ] });
188
+ case "zip":
189
+ case "rar":
190
+ case "7z":
191
+ case "tar":
192
+ case "gz":
193
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: iconSize, height: iconSize, viewBox: "0 0 24 24", fill: "none", children: [
194
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "rect", { x: "3", y: "11", width: "18", height: "10", rx: "2", ry: "2", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
195
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "circle", { cx: "12", cy: "16", r: "1", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
196
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M7 11V7a5 5 0 0 1 10 0v4", stroke: iconConfig.color, strokeWidth: "2", fill: "none" })
197
+ ] });
198
+ case "txt":
199
+ case "md":
200
+ case "csv":
201
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: iconSize, height: iconSize, viewBox: "0 0 24 24", fill: "none", children: [
202
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
203
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "14,2 14,8 20,8", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
204
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "16", y1: "13", x2: "8", y2: "13", stroke: iconConfig.color, strokeWidth: "2" }),
205
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "16", y1: "17", x2: "8", y2: "17", stroke: iconConfig.color, strokeWidth: "2" })
206
+ ] });
207
+ case "js":
208
+ case "jsx":
209
+ case "ts":
210
+ case "tsx":
211
+ case "html":
212
+ case "css":
213
+ case "json":
214
+ case "xml":
215
+ case "py":
216
+ case "java":
217
+ case "cpp":
218
+ case "c":
219
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: iconSize, height: iconSize, viewBox: "0 0 24 24", fill: "none", children: [
220
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "16 18 22 12 16 6", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
221
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "8 6 2 12 8 18", stroke: iconConfig.color, strokeWidth: "2", fill: "none" })
222
+ ] });
223
+ default:
224
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: iconSize, height: iconSize, viewBox: "0 0 24 24", fill: "none", children: [
225
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z", stroke: iconConfig.color, strokeWidth: "2", fill: "none" }),
226
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "14,2 14,8 20,8", stroke: iconConfig.color, strokeWidth: "2", fill: "none" })
227
+ ] });
228
+ }
229
+ };
230
+ const containerStyle = {
231
+ position: "relative",
232
+ display: "inline-flex",
233
+ alignItems: "center",
234
+ justifyContent: "center",
235
+ ...sx
236
+ };
237
+ const iconBoxStyle = {
238
+ position: "relative",
239
+ width: size,
240
+ height: size,
241
+ backgroundColor: iconConfig.bgColor,
242
+ borderRadius: "8px",
243
+ border: "1px solid rgba(0, 0, 0, 0.12)",
244
+ display: "flex",
245
+ alignItems: "center",
246
+ justifyContent: "center",
247
+ transition: "all 0.2s ease-in-out",
248
+ cursor: "default"
249
+ };
250
+ const labelStyle = {
251
+ position: "absolute",
252
+ bottom: "-4px",
253
+ right: "-4px",
254
+ padding: "2px 4px",
255
+ backgroundColor: "#ffffff",
256
+ border: "1px solid rgba(0, 0, 0, 0.12)",
257
+ borderRadius: "4px",
258
+ boxShadow: "0px 2px 4px rgba(0, 0, 0, 0.1)",
259
+ fontSize: "10px",
260
+ fontWeight: 600,
261
+ color: iconConfig.color,
262
+ lineHeight: 1,
263
+ fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif'
264
+ };
265
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: containerStyle, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
266
+ "div",
267
+ {
268
+ style: iconBoxStyle,
269
+ onMouseEnter: (e) => {
270
+ e.currentTarget.style.boxShadow = "0px 4px 8px rgba(0, 0, 0, 0.12)";
271
+ e.currentTarget.style.transform = "translateY(-1px)";
272
+ },
273
+ onMouseLeave: (e) => {
274
+ e.currentTarget.style.boxShadow = "none";
275
+ e.currentTarget.style.transform = "translateY(0)";
276
+ },
277
+ children: [
278
+ getSVGIcon(extension),
279
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: labelStyle, children: iconConfig.label })
280
+ ]
281
+ }
282
+ ) });
283
+ };
284
+ var FileIcon_default = FileIcon;
285
+
286
+
287
+
288
+
289
+ exports.mergeToolbarConfig = mergeToolbarConfig; exports.FileIcon_default = FileIcon_default;
290
+ //# sourceMappingURL=chunk-EM63H4SA.js.map