@cannyminds/dms-file-viewers 0.4.0 → 0.6.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.
Files changed (101) hide show
  1. package/dist/{chunk-DOOYIHGW.js → chunk-56PP5GHZ.js} +70 -18
  2. package/dist/chunk-56PP5GHZ.js.map +1 -0
  3. package/dist/{chunk-7BLEPGZ4.mjs → chunk-7AUCINV2.mjs} +70 -18
  4. package/dist/chunk-7AUCINV2.mjs.map +1 -0
  5. package/dist/chunk-A2MSWOEM.js +159 -0
  6. package/dist/chunk-A2MSWOEM.js.map +1 -0
  7. package/dist/{chunk-SBEFC7HP.js → chunk-CQ3HSM5S.js} +70 -18
  8. package/dist/chunk-CQ3HSM5S.js.map +1 -0
  9. package/dist/{chunk-DDT3GC3C.js → chunk-D7LXG67Z.js} +482 -510
  10. package/dist/chunk-D7LXG67Z.js.map +1 -0
  11. package/dist/chunk-EAM7CURM.js +334 -0
  12. package/dist/chunk-EAM7CURM.js.map +1 -0
  13. package/dist/{chunk-SNEIVT4R.js → chunk-ETHSDRF5.js} +70 -18
  14. package/dist/chunk-ETHSDRF5.js.map +1 -0
  15. package/dist/{chunk-RE4XRGSV.js → chunk-FA5L62Y5.js} +52 -32
  16. package/dist/chunk-FA5L62Y5.js.map +1 -0
  17. package/dist/chunk-GMDRDOWP.mjs +159 -0
  18. package/dist/chunk-GMDRDOWP.mjs.map +1 -0
  19. package/dist/{chunk-4DJJINTB.mjs → chunk-KBST5Z5H.mjs} +69 -17
  20. package/dist/chunk-KBST5Z5H.mjs.map +1 -0
  21. package/dist/{chunk-WP55NYFS.js → chunk-LQVHD4FS.js} +71 -19
  22. package/dist/chunk-LQVHD4FS.js.map +1 -0
  23. package/dist/chunk-M57PSU4O.mjs +36 -0
  24. package/dist/chunk-M57PSU4O.mjs.map +1 -0
  25. package/dist/{chunk-YHMHDPLQ.mjs → chunk-PFJKVNUA.mjs} +69 -17
  26. package/dist/chunk-PFJKVNUA.mjs.map +1 -0
  27. package/dist/{chunk-677DWENS.mjs → chunk-THFHTTQX.mjs} +64 -17
  28. package/dist/chunk-THFHTTQX.mjs.map +1 -0
  29. package/dist/chunk-U4W524VZ.mjs +334 -0
  30. package/dist/chunk-U4W524VZ.mjs.map +1 -0
  31. package/dist/{chunk-77UARJVQ.js → chunk-UUM656JE.js} +66 -19
  32. package/dist/chunk-UUM656JE.js.map +1 -0
  33. package/dist/{chunk-QQDQJ7TS.mjs → chunk-VJFXCN5Z.mjs} +50 -30
  34. package/dist/chunk-VJFXCN5Z.mjs.map +1 -0
  35. package/dist/{chunk-BHMFZTZ7.mjs → chunk-WNZHGFNC.mjs} +69 -17
  36. package/dist/chunk-WNZHGFNC.mjs.map +1 -0
  37. package/dist/chunk-YEPEMLM3.js +36 -0
  38. package/dist/chunk-YEPEMLM3.js.map +1 -0
  39. package/dist/{chunk-J2YW5DHC.mjs → chunk-ZKGWS327.mjs} +517 -545
  40. package/dist/chunk-ZKGWS327.mjs.map +1 -0
  41. package/dist/components/viewers/AudioViewer.d.mts +1 -1
  42. package/dist/components/viewers/AudioViewer.d.ts +1 -1
  43. package/dist/components/viewers/AudioViewer.js +4 -3
  44. package/dist/components/viewers/AudioViewer.js.map +1 -1
  45. package/dist/components/viewers/AudioViewer.mjs +3 -2
  46. package/dist/components/viewers/DefaultViewer.d.mts +1 -1
  47. package/dist/components/viewers/DefaultViewer.d.ts +1 -1
  48. package/dist/components/viewers/DefaultViewer.js +4 -3
  49. package/dist/components/viewers/DefaultViewer.js.map +1 -1
  50. package/dist/components/viewers/DefaultViewer.mjs +3 -2
  51. package/dist/components/viewers/ImageViewer.d.mts +1 -1
  52. package/dist/components/viewers/ImageViewer.d.ts +1 -1
  53. package/dist/components/viewers/ImageViewer.js +4 -4
  54. package/dist/components/viewers/ImageViewer.mjs +3 -3
  55. package/dist/components/viewers/PDFViewer.d.mts +1 -1
  56. package/dist/components/viewers/PDFViewer.d.ts +1 -1
  57. package/dist/components/viewers/PDFViewer.js +5 -3
  58. package/dist/components/viewers/PDFViewer.js.map +1 -1
  59. package/dist/components/viewers/PDFViewer.mjs +4 -2
  60. package/dist/components/viewers/TIFFViewer.d.mts +1 -1
  61. package/dist/components/viewers/TIFFViewer.d.ts +1 -1
  62. package/dist/components/viewers/TIFFViewer.js +4 -3
  63. package/dist/components/viewers/TIFFViewer.js.map +1 -1
  64. package/dist/components/viewers/TIFFViewer.mjs +3 -2
  65. package/dist/components/viewers/TextViewer.d.mts +1 -1
  66. package/dist/components/viewers/TextViewer.d.ts +1 -1
  67. package/dist/components/viewers/TextViewer.js +4 -3
  68. package/dist/components/viewers/TextViewer.js.map +1 -1
  69. package/dist/components/viewers/TextViewer.mjs +3 -2
  70. package/dist/components/viewers/VideoViewer.d.mts +1 -1
  71. package/dist/components/viewers/VideoViewer.d.ts +1 -1
  72. package/dist/components/viewers/VideoViewer.js +4 -3
  73. package/dist/components/viewers/VideoViewer.js.map +1 -1
  74. package/dist/components/viewers/VideoViewer.mjs +3 -2
  75. package/dist/index.d.mts +2 -2
  76. package/dist/index.d.ts +2 -2
  77. package/dist/index.js +14 -11
  78. package/dist/index.js.map +1 -1
  79. package/dist/index.mjs +12 -9
  80. package/dist/index.mjs.map +1 -1
  81. package/dist/{types-C6IEfcTM.d.mts → types-BmZB9kkJ.d.mts} +13 -1
  82. package/dist/{types-C6IEfcTM.d.ts → types-BmZB9kkJ.d.ts} +13 -1
  83. package/package.json +1 -1
  84. package/dist/chunk-4DJJINTB.mjs.map +0 -1
  85. package/dist/chunk-677DWENS.mjs.map +0 -1
  86. package/dist/chunk-77UARJVQ.js.map +0 -1
  87. package/dist/chunk-7BLEPGZ4.mjs.map +0 -1
  88. package/dist/chunk-BHMFZTZ7.mjs.map +0 -1
  89. package/dist/chunk-BONT4K3R.mjs +0 -294
  90. package/dist/chunk-BONT4K3R.mjs.map +0 -1
  91. package/dist/chunk-DDT3GC3C.js.map +0 -1
  92. package/dist/chunk-DOOYIHGW.js.map +0 -1
  93. package/dist/chunk-J2YW5DHC.mjs.map +0 -1
  94. package/dist/chunk-QQDQJ7TS.mjs.map +0 -1
  95. package/dist/chunk-RE4XRGSV.js.map +0 -1
  96. package/dist/chunk-SBEFC7HP.js.map +0 -1
  97. package/dist/chunk-SNEIVT4R.js.map +0 -1
  98. package/dist/chunk-WP55NYFS.js.map +0 -1
  99. package/dist/chunk-YHMHDPLQ.mjs.map +0 -1
  100. package/dist/chunk-Z3IUTTJQ.js +0 -294
  101. package/dist/chunk-Z3IUTTJQ.js.map +0 -1
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { F as FileViewerProps, V as ViewerInfo, a as FileViewerComponent } from './types-C6IEfcTM.mjs';
3
- export { c as DynamicViewerImport, D as DynamicViewerRegistry, S as SearchResult, b as ViewerRegistry } from './types-C6IEfcTM.mjs';
2
+ import { F as FileViewerProps, V as ViewerInfo, a as FileViewerComponent } from './types-BmZB9kkJ.mjs';
3
+ export { c as DynamicViewerImport, D as DynamicViewerRegistry, S as SearchResult, T as ToolbarActionId, d as ToolbarActionsConfig, b as ViewerRegistry } from './types-BmZB9kkJ.mjs';
4
4
  export { TextViewer } from './components/viewers/TextViewer.mjs';
5
5
  export { ImageViewer } from './components/viewers/ImageViewer.mjs';
6
6
  export { PDFViewer } from './components/viewers/PDFViewer.mjs';
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { F as FileViewerProps, V as ViewerInfo, a as FileViewerComponent } from './types-C6IEfcTM.js';
3
- export { c as DynamicViewerImport, D as DynamicViewerRegistry, S as SearchResult, b as ViewerRegistry } from './types-C6IEfcTM.js';
2
+ import { F as FileViewerProps, V as ViewerInfo, a as FileViewerComponent } from './types-BmZB9kkJ.js';
3
+ export { c as DynamicViewerImport, D as DynamicViewerRegistry, S as SearchResult, T as ToolbarActionId, d as ToolbarActionsConfig, b as ViewerRegistry } from './types-BmZB9kkJ.js';
4
4
  export { TextViewer } from './components/viewers/TextViewer.js';
5
5
  export { ImageViewer } from './components/viewers/ImageViewer.js';
6
6
  export { PDFViewer } from './components/viewers/PDFViewer.js';
package/dist/index.js CHANGED
@@ -1,30 +1,33 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } 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
2
 
3
3
 
4
- var _chunkDOOYIHGWjs = require('./chunk-DOOYIHGW.js');
4
+ var _chunk56PP5GHZjs = require('./chunk-56PP5GHZ.js');
5
5
 
6
6
 
7
- var _chunk77UARJVQjs = require('./chunk-77UARJVQ.js');
7
+ var _chunkUUM656JEjs = require('./chunk-UUM656JE.js');
8
8
 
9
9
 
10
- var _chunkZ3IUTTJQjs = require('./chunk-Z3IUTTJQ.js');
10
+ var _chunkEAM7CURMjs = require('./chunk-EAM7CURM.js');
11
11
 
12
12
 
13
- var _chunkDDT3GC3Cjs = require('./chunk-DDT3GC3C.js');
13
+ var _chunkD7LXG67Zjs = require('./chunk-D7LXG67Z.js');
14
+ require('./chunk-A2MSWOEM.js');
14
15
 
15
16
 
16
- var _chunkWP55NYFSjs = require('./chunk-WP55NYFS.js');
17
+ var _chunkLQVHD4FSjs = require('./chunk-LQVHD4FS.js');
17
18
 
18
19
 
19
- var _chunkSBEFC7HPjs = require('./chunk-SBEFC7HP.js');
20
+ var _chunkCQ3HSM5Sjs = require('./chunk-CQ3HSM5S.js');
20
21
 
21
22
 
22
- var _chunkSNEIVT4Rjs = require('./chunk-SNEIVT4R.js');
23
+ var _chunkETHSDRF5js = require('./chunk-ETHSDRF5.js');
23
24
 
24
25
 
25
26
 
27
+ var _chunkYEPEMLM3js = require('./chunk-YEPEMLM3.js');
26
28
 
27
- var _chunkRE4XRGSVjs = require('./chunk-RE4XRGSV.js');
29
+
30
+ var _chunkFA5L62Y5js = require('./chunk-FA5L62Y5.js');
28
31
 
29
32
  // src/components/FileViewer.tsx
30
33
  var _react = require('react');
@@ -200,13 +203,13 @@ var FileViewer = ({
200
203
  if (!resolvedFileName && url) {
201
204
  resolvedFileName = url.split("/").pop() || "unknown";
202
205
  }
203
- const extension = resolvedFileName ? _chunkRE4XRGSVjs.getFileExtension.call(void 0, resolvedFileName) : "";
206
+ const extension = resolvedFileName ? _chunkYEPEMLM3js.getFileExtension.call(void 0, resolvedFileName) : "";
204
207
  let resolvedMimeType = mimeType;
205
208
  if (!resolvedMimeType && file) {
206
209
  resolvedMimeType = file.type;
207
210
  }
208
211
  if (!resolvedMimeType && extension) {
209
- resolvedMimeType = _chunkRE4XRGSVjs.getMimeTypeFromExtension.call(void 0, extension);
212
+ resolvedMimeType = _chunkYEPEMLM3js.getMimeTypeFromExtension.call(void 0, extension);
210
213
  }
211
214
  const viewerInfo = getViewerInfo(extension);
212
215
  return {
@@ -291,5 +294,5 @@ var FileViewer = ({
291
294
 
292
295
 
293
296
 
294
- exports.AudioViewer = _chunkDOOYIHGWjs.AudioViewer; exports.DefaultViewer = _chunk77UARJVQjs.DefaultViewer; exports.FileIcon = _chunkRE4XRGSVjs.FileIcon_default; exports.FileViewer = FileViewer; exports.ImageViewer = _chunkZ3IUTTJQjs.ImageViewer; exports.PDFViewer = _chunkDDT3GC3Cjs.PDFViewer; exports.TIFFViewer = _chunkSBEFC7HPjs.TIFFViewer; exports.TextViewer = _chunkWP55NYFSjs.TextViewer; exports.VideoViewer = _chunkSNEIVT4Rjs.VideoViewer; exports.dynamicViewerRegistry = dynamicViewerRegistry; exports.getFileExtension = _chunkRE4XRGSVjs.getFileExtension; exports.getMimeTypeFromExtension = _chunkRE4XRGSVjs.getMimeTypeFromExtension; exports.getViewerComponent = getViewerComponent; exports.getViewerInfo = getViewerInfo;
297
+ exports.AudioViewer = _chunk56PP5GHZjs.AudioViewer; exports.DefaultViewer = _chunkUUM656JEjs.DefaultViewer; exports.FileIcon = _chunkFA5L62Y5js.FileIcon_default; exports.FileViewer = FileViewer; exports.ImageViewer = _chunkEAM7CURMjs.ImageViewer; exports.PDFViewer = _chunkD7LXG67Zjs.PDFViewer; exports.TIFFViewer = _chunkCQ3HSM5Sjs.TIFFViewer; exports.TextViewer = _chunkLQVHD4FSjs.TextViewer; exports.VideoViewer = _chunkETHSDRF5js.VideoViewer; exports.dynamicViewerRegistry = dynamicViewerRegistry; exports.getFileExtension = _chunkYEPEMLM3js.getFileExtension; exports.getMimeTypeFromExtension = _chunkYEPEMLM3js.getMimeTypeFromExtension; exports.getViewerComponent = getViewerComponent; exports.getViewerInfo = getViewerInfo;
295
298
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\Projects\\DMS-File-Viewers\\packages\\lib\\dist\\index.js"],"names":[],"mappings":"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","file":"D:\\Projects\\DMS-File-Viewers\\packages\\lib\\dist\\index.js","sourcesContent":[null]}
1
+ {"version":3,"sources":["d:\\Projects\\DMS-File-Viewers\\packages\\lib\\dist\\index.js"],"names":[],"mappings":"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","file":"D:\\Projects\\DMS-File-Viewers\\packages\\lib\\dist\\index.js","sourcesContent":[null]}
package/dist/index.mjs CHANGED
@@ -1,30 +1,33 @@
1
1
  "use client";
2
2
  import {
3
3
  AudioViewer
4
- } from "./chunk-4DJJINTB.mjs";
4
+ } from "./chunk-KBST5Z5H.mjs";
5
5
  import {
6
6
  DefaultViewer
7
- } from "./chunk-677DWENS.mjs";
7
+ } from "./chunk-THFHTTQX.mjs";
8
8
  import {
9
9
  ImageViewer
10
- } from "./chunk-BONT4K3R.mjs";
10
+ } from "./chunk-U4W524VZ.mjs";
11
11
  import {
12
12
  PDFViewer
13
- } from "./chunk-J2YW5DHC.mjs";
13
+ } from "./chunk-ZKGWS327.mjs";
14
+ import "./chunk-GMDRDOWP.mjs";
14
15
  import {
15
16
  TextViewer
16
- } from "./chunk-7BLEPGZ4.mjs";
17
+ } from "./chunk-7AUCINV2.mjs";
17
18
  import {
18
19
  TIFFViewer
19
- } from "./chunk-YHMHDPLQ.mjs";
20
+ } from "./chunk-PFJKVNUA.mjs";
20
21
  import {
21
22
  VideoViewer
22
- } from "./chunk-BHMFZTZ7.mjs";
23
+ } from "./chunk-WNZHGFNC.mjs";
23
24
  import {
24
- FileIcon_default,
25
25
  getFileExtension,
26
26
  getMimeTypeFromExtension
27
- } from "./chunk-QQDQJ7TS.mjs";
27
+ } from "./chunk-M57PSU4O.mjs";
28
+ import {
29
+ FileIcon_default
30
+ } from "./chunk-VJFXCN5Z.mjs";
28
31
 
29
32
  // src/components/FileViewer.tsx
30
33
  import { useState, useEffect, useMemo } from "react";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/FileViewer.tsx","../src/registry.ts"],"sourcesContent":["import React, { useState, useEffect, useMemo } from 'react';\r\nimport { FileViewerProps, ViewerInfo, FileViewerComponent } from '../types';\r\nimport { getFileExtension, getMimeTypeFromExtension } from '../utils/fileUtils';\r\nimport { getViewerComponent, getViewerInfo } from '../registry';\r\n\r\nexport interface FileViewerComponentProps extends Partial<FileViewerProps> {\r\n customRegistry?: Record<string, ViewerInfo>;\r\n loadingComponent?: React.ComponentType<{ fileName?: string; type?: string; }>;\r\n errorComponent?: React.ComponentType<{ error: Error; retry: () => void; }>;\r\n}\r\n\r\n// Default loading component\r\nconst DefaultLoadingComponent: React.FC<{ fileName?: string; type?: string; }> = ({ fileName, type }) => (\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '40px',\r\n border: '1px solid #ddd',\r\n borderRadius: '4px',\r\n backgroundColor: '#f9f9f9'\r\n }}>\r\n <div style={{ textAlign: 'center' }}>\r\n <div style={{\r\n width: '24px',\r\n height: '24px',\r\n border: '2px solid #ccc',\r\n borderTop: '2px solid #007bff',\r\n borderRadius: '50%',\r\n animation: 'dms-file-viewer-spin 1s linear infinite',\r\n margin: '0 auto 16px'\r\n }} />\r\n <p>Loading {type} viewer...</p>\r\n {fileName && <p style={{ fontSize: '12px', color: '#666' }}>File: {fileName}</p>}\r\n </div>\r\n </div>\r\n);\r\n\r\n// Default error component\r\nconst DefaultErrorComponent: React.FC<{ error: Error; retry: () => void; }> = ({ error, retry }) => (\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '40px',\r\n border: '1px solid #ddd',\r\n borderRadius: '4px',\r\n backgroundColor: '#fff2f2'\r\n }}>\r\n <div style={{ textAlign: 'center' }}>\r\n <p style={{ color: '#d32f2f', marginBottom: '16px' }}>\r\n Failed to load file viewer\r\n </p>\r\n <p style={{ fontSize: '12px', color: '#666', marginBottom: '16px' }}>\r\n {error.message}\r\n </p>\r\n <button\r\n onClick={retry}\r\n style={{\r\n padding: '8px 16px',\r\n border: '1px solid #007bff',\r\n borderRadius: '4px',\r\n backgroundColor: '#007bff',\r\n color: '#fff',\r\n cursor: 'pointer'\r\n }}\r\n >\r\n Retry\r\n </button>\r\n </div>\r\n </div>\r\n);\r\n\r\nexport const FileViewer: React.FC<FileViewerComponentProps> = ({\r\n file,\r\n url,\r\n fileName,\r\n mimeType,\r\n customRegistry,\r\n loadingComponent: LoadingComponent = DefaultLoadingComponent,\r\n errorComponent: ErrorComponent = DefaultErrorComponent,\r\n initialSearchText,\r\n initialSearchPages,\r\n autoOpenSearch,\r\n autoExecuteSearch,\r\n onSearchComplete,\r\n ...props\r\n}) => {\r\n const [ViewerComponent, setViewerComponent] = useState<FileViewerComponent | null>(null);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<Error | null>(null);\r\n\r\n // Resolve file information\r\n const resolvedFileInfo = useMemo(() => {\r\n // Determine file name\r\n let resolvedFileName = fileName;\r\n if (!resolvedFileName && file) {\r\n resolvedFileName = file.name;\r\n }\r\n if (!resolvedFileName && url) {\r\n resolvedFileName = url.split('/').pop() || 'unknown';\r\n }\r\n\r\n // Determine file extension\r\n const extension = resolvedFileName ? getFileExtension(resolvedFileName) : '';\r\n\r\n // Determine mime type\r\n let resolvedMimeType = mimeType;\r\n if (!resolvedMimeType && file) {\r\n resolvedMimeType = file.type;\r\n }\r\n if (!resolvedMimeType && extension) {\r\n resolvedMimeType = getMimeTypeFromExtension(extension);\r\n }\r\n\r\n // Get viewer info\r\n const viewerInfo = getViewerInfo(extension);\r\n\r\n return {\r\n fileName: resolvedFileName,\r\n extension,\r\n mimeType: resolvedMimeType,\r\n viewerInfo\r\n };\r\n }, [file, url, fileName, mimeType]);\r\n\r\n // Load viewer component dynamically\r\n const loadViewer = async () => {\r\n if (loading) return;\r\n\r\n setLoading(true);\r\n setError(null);\r\n\r\n try {\r\n const component = await getViewerComponent(resolvedFileInfo.extension, customRegistry);\r\n setViewerComponent(() => component);\r\n } catch (err) {\r\n setError(err instanceof Error ? err : new Error('Failed to load viewer'));\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n // Load viewer when file info changes\r\n useEffect(() => {\r\n loadViewer();\r\n }, [resolvedFileInfo.extension]);\r\n\r\n // Prepare props for the viewer\r\n const viewerProps = useMemo(() => ({\r\n file,\r\n url,\r\n fileName: resolvedFileInfo.fileName,\r\n mimeType: resolvedFileInfo.mimeType,\r\n fileSize: file?.size,\r\n initialSearchText,\r\n initialSearchPages,\r\n autoOpenSearch,\r\n autoExecuteSearch,\r\n onSearchComplete,\r\n ...props\r\n }), [\r\n file,\r\n url,\r\n resolvedFileInfo.fileName,\r\n resolvedFileInfo.mimeType,\r\n initialSearchText,\r\n initialSearchPages,\r\n autoOpenSearch,\r\n autoExecuteSearch,\r\n onSearchComplete,\r\n props\r\n ]);\r\n\r\n // Show loading state\r\n if (loading || !ViewerComponent) {\r\n return (\r\n <LoadingComponent\r\n fileName={resolvedFileInfo.fileName}\r\n type={resolvedFileInfo.viewerInfo.type}\r\n />\r\n );\r\n }\r\n\r\n // Show error state\r\n if (error) {\r\n return (\r\n <ErrorComponent\r\n error={error}\r\n retry={loadViewer}\r\n />\r\n );\r\n }\r\n\r\n // Render the loaded viewer component\r\n return <ViewerComponent {...viewerProps} />;\r\n};","import { DynamicViewerRegistry, ViewerInfo, FileViewerComponent } from './types';\r\n\r\n// Dynamic import functions for each viewer type\r\nconst loadTextViewer = () => import('./components/viewers/TextViewer').then(m => ({ default: m.TextViewer }));\r\nconst loadImageViewer = () => import('./components/viewers/ImageViewer').then(m => ({ default: m.ImageViewer }));\r\nconst loadPDFViewer = () => import('./components/viewers/PDFViewer').then(m => ({ default: m.PDFViewer }));\r\nconst loadVideoViewer = () => import('./components/viewers/VideoViewer').then(m => ({ default: m.VideoViewer }));\r\nconst loadAudioViewer = () => import('./components/viewers/AudioViewer').then(m => ({ default: m.AudioViewer }));\r\nconst loadTIFFViewer = () => import('./components/viewers/TIFFViewer').then(m => ({ default: m.TIFFViewer }));\r\nconst loadDefaultViewer = () => import('./components/viewers/DefaultViewer').then(m => ({ default: m.DefaultViewer }));\r\n\r\n// Registry mapping file extensions to viewer info\r\nexport const dynamicViewerRegistry: Record<string, ViewerInfo> = {\r\n // Text files\r\n 'txt': { type: 'text', loader: loadTextViewer },\r\n 'json': { type: 'text', loader: loadTextViewer },\r\n 'xml': { type: 'text', loader: loadTextViewer },\r\n 'csv': { type: 'text', loader: loadTextViewer },\r\n 'md': { type: 'text', loader: loadTextViewer },\r\n 'js': { type: 'text', loader: loadTextViewer },\r\n 'jsx': { type: 'text', loader: loadTextViewer },\r\n 'ts': { type: 'text', loader: loadTextViewer },\r\n 'tsx': { type: 'text', loader: loadTextViewer },\r\n 'css': { type: 'text', loader: loadTextViewer },\r\n 'scss': { type: 'text', loader: loadTextViewer },\r\n 'html': { type: 'text', loader: loadTextViewer },\r\n 'py': { type: 'text', loader: loadTextViewer },\r\n 'java': { type: 'text', loader: loadTextViewer },\r\n 'cpp': { type: 'text', loader: loadTextViewer },\r\n 'c': { type: 'text', loader: loadTextViewer },\r\n 'php': { type: 'text', loader: loadTextViewer },\r\n 'rb': { type: 'text', loader: loadTextViewer },\r\n 'go': { type: 'text', loader: loadTextViewer },\r\n 'rs': { type: 'text', loader: loadTextViewer },\r\n 'sql': { type: 'text', loader: loadTextViewer },\r\n 'yaml': { type: 'text', loader: loadTextViewer },\r\n 'yml': { type: 'text', loader: loadTextViewer },\r\n\r\n // Images\r\n 'jpg': { type: 'image', loader: loadImageViewer },\r\n 'jpeg': { type: 'image', loader: loadImageViewer },\r\n 'png': { type: 'image', loader: loadImageViewer },\r\n 'gif': { type: 'image', loader: loadImageViewer },\r\n 'svg': { type: 'image', loader: loadImageViewer },\r\n 'webp': { type: 'image', loader: loadImageViewer },\r\n 'bmp': { type: 'image', loader: loadImageViewer },\r\n 'ico': { type: 'image', loader: loadImageViewer },\r\n 'tif': { type: 'tiff', loader: loadTIFFViewer },\r\n 'tiff': { type: 'tiff', loader: loadTIFFViewer },\r\n\r\n // PDF\r\n 'pdf': { type: 'pdf', loader: loadPDFViewer },\r\n\r\n // Videos\r\n 'mp4': { type: 'video', loader: loadVideoViewer },\r\n 'webm': { type: 'video', loader: loadVideoViewer },\r\n 'ogg': { type: 'video', loader: loadVideoViewer },\r\n 'avi': { type: 'video', loader: loadVideoViewer },\r\n 'mov': { type: 'video', loader: loadVideoViewer },\r\n 'wmv': { type: 'video', loader: loadVideoViewer },\r\n 'flv': { type: 'video', loader: loadVideoViewer },\r\n 'mkv': { type: 'video', loader: loadVideoViewer },\r\n\r\n // Audio\r\n 'mp3': { type: 'audio', loader: loadAudioViewer },\r\n 'wav': { type: 'audio', loader: loadAudioViewer },\r\n 'm4a': { type: 'audio', loader: loadAudioViewer },\r\n 'flac': { type: 'audio', loader: loadAudioViewer },\r\n 'aac': { type: 'audio', loader: loadAudioViewer },\r\n 'oga': { type: 'audio', loader: loadAudioViewer },\r\n};\r\n\r\n// Cache to store loaded components\r\nconst componentCache = new Map<string, FileViewerComponent>();\r\n\r\nexport const getViewerInfo = (extension: string): ViewerInfo => {\r\n const ext = extension.toLowerCase();\r\n return dynamicViewerRegistry[ext] || { type: 'default', loader: loadDefaultViewer };\r\n};\r\n\r\nexport const getViewerComponent = async (\r\n extension: string,\r\n customRegistry?: Record<string, ViewerInfo>\r\n): Promise<FileViewerComponent> => {\r\n const ext = extension.toLowerCase();\r\n\r\n // Check cache first\r\n if (componentCache.has(ext)) {\r\n return componentCache.get(ext)!;\r\n }\r\n\r\n // Get viewer info from registry\r\n const registry = { ...dynamicViewerRegistry, ...customRegistry };\r\n const viewerInfo = registry[ext] || { type: 'default', loader: loadDefaultViewer };\r\n\r\n try {\r\n // Dynamically import the component\r\n const { default: Component } = await viewerInfo.loader();\r\n\r\n // Cache the loaded component\r\n componentCache.set(ext, Component);\r\n\r\n return Component;\r\n } catch (error) {\r\n // Fallback to default viewer on error\r\n if (!componentCache.has('default')) {\r\n const { default: DefaultComponent } = await loadDefaultViewer();\r\n componentCache.set('default', DefaultComponent);\r\n }\r\n\r\n return componentCache.get('default')!;\r\n }\r\n};"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/components/FileViewer.tsx","../src/registry.ts"],"sourcesContent":["import React, { useState, useEffect, useMemo } from 'react';\r\nimport { FileViewerProps, ViewerInfo, FileViewerComponent } from '../types';\r\nimport { getFileExtension, getMimeTypeFromExtension } from '../utils/fileUtils';\r\nimport { getViewerComponent, getViewerInfo } from '../registry';\r\n\r\nexport interface FileViewerComponentProps extends Partial<FileViewerProps> {\r\n customRegistry?: Record<string, ViewerInfo>;\r\n loadingComponent?: React.ComponentType<{ fileName?: string; type?: string; }>;\r\n errorComponent?: React.ComponentType<{ error: Error; retry: () => void; }>;\r\n}\r\n\r\n// Default loading component\r\nconst DefaultLoadingComponent: React.FC<{ fileName?: string; type?: string; }> = ({ fileName, type }) => (\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '40px',\r\n border: '1px solid #ddd',\r\n borderRadius: '4px',\r\n backgroundColor: '#f9f9f9'\r\n }}>\r\n <div style={{ textAlign: 'center' }}>\r\n <div style={{\r\n width: '24px',\r\n height: '24px',\r\n border: '2px solid #ccc',\r\n borderTop: '2px solid #007bff',\r\n borderRadius: '50%',\r\n animation: 'dms-file-viewer-spin 1s linear infinite',\r\n margin: '0 auto 16px'\r\n }} />\r\n <p>Loading {type} viewer...</p>\r\n {fileName && <p style={{ fontSize: '12px', color: '#666' }}>File: {fileName}</p>}\r\n </div>\r\n </div>\r\n);\r\n\r\n// Default error component\r\nconst DefaultErrorComponent: React.FC<{ error: Error; retry: () => void; }> = ({ error, retry }) => (\r\n <div style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '40px',\r\n border: '1px solid #ddd',\r\n borderRadius: '4px',\r\n backgroundColor: '#fff2f2'\r\n }}>\r\n <div style={{ textAlign: 'center' }}>\r\n <p style={{ color: '#d32f2f', marginBottom: '16px' }}>\r\n Failed to load file viewer\r\n </p>\r\n <p style={{ fontSize: '12px', color: '#666', marginBottom: '16px' }}>\r\n {error.message}\r\n </p>\r\n <button\r\n onClick={retry}\r\n style={{\r\n padding: '8px 16px',\r\n border: '1px solid #007bff',\r\n borderRadius: '4px',\r\n backgroundColor: '#007bff',\r\n color: '#fff',\r\n cursor: 'pointer'\r\n }}\r\n >\r\n Retry\r\n </button>\r\n </div>\r\n </div>\r\n);\r\n\r\nexport const FileViewer: React.FC<FileViewerComponentProps> = ({\r\n file,\r\n url,\r\n fileName,\r\n mimeType,\r\n customRegistry,\r\n loadingComponent: LoadingComponent = DefaultLoadingComponent,\r\n errorComponent: ErrorComponent = DefaultErrorComponent,\r\n initialSearchText,\r\n initialSearchPages,\r\n autoOpenSearch,\r\n autoExecuteSearch,\r\n onSearchComplete,\r\n ...props\r\n}) => {\r\n const [ViewerComponent, setViewerComponent] = useState<FileViewerComponent | null>(null);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<Error | null>(null);\r\n\r\n // Resolve file information\r\n const resolvedFileInfo = useMemo(() => {\r\n // Determine file name\r\n let resolvedFileName = fileName;\r\n if (!resolvedFileName && file) {\r\n resolvedFileName = file.name;\r\n }\r\n if (!resolvedFileName && url) {\r\n resolvedFileName = url.split('/').pop() || 'unknown';\r\n }\r\n\r\n // Determine file extension\r\n const extension = resolvedFileName ? getFileExtension(resolvedFileName) : '';\r\n\r\n // Determine mime type\r\n let resolvedMimeType = mimeType;\r\n if (!resolvedMimeType && file) {\r\n resolvedMimeType = file.type;\r\n }\r\n if (!resolvedMimeType && extension) {\r\n resolvedMimeType = getMimeTypeFromExtension(extension);\r\n }\r\n\r\n // Get viewer info\r\n const viewerInfo = getViewerInfo(extension);\r\n\r\n return {\r\n fileName: resolvedFileName,\r\n extension,\r\n mimeType: resolvedMimeType,\r\n viewerInfo\r\n };\r\n }, [file, url, fileName, mimeType]);\r\n\r\n // Load viewer component dynamically\r\n const loadViewer = async () => {\r\n if (loading) return;\r\n\r\n setLoading(true);\r\n setError(null);\r\n\r\n try {\r\n const component = await getViewerComponent(resolvedFileInfo.extension, customRegistry);\r\n setViewerComponent(() => component);\r\n } catch (err) {\r\n setError(err instanceof Error ? err : new Error('Failed to load viewer'));\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n // Load viewer when file info changes\r\n useEffect(() => {\r\n loadViewer();\r\n }, [resolvedFileInfo.extension]);\r\n\r\n // Prepare props for the viewer\r\n const viewerProps = useMemo(() => ({\r\n file,\r\n url,\r\n fileName: resolvedFileInfo.fileName,\r\n mimeType: resolvedFileInfo.mimeType,\r\n fileSize: file?.size,\r\n initialSearchText,\r\n initialSearchPages,\r\n autoOpenSearch,\r\n autoExecuteSearch,\r\n onSearchComplete,\r\n ...props\r\n }), [\r\n file,\r\n url,\r\n resolvedFileInfo.fileName,\r\n resolvedFileInfo.mimeType,\r\n initialSearchText,\r\n initialSearchPages,\r\n autoOpenSearch,\r\n autoExecuteSearch,\r\n onSearchComplete,\r\n props\r\n ]);\r\n\r\n // Show loading state\r\n if (loading || !ViewerComponent) {\r\n return (\r\n <LoadingComponent\r\n fileName={resolvedFileInfo.fileName}\r\n type={resolvedFileInfo.viewerInfo.type}\r\n />\r\n );\r\n }\r\n\r\n // Show error state\r\n if (error) {\r\n return (\r\n <ErrorComponent\r\n error={error}\r\n retry={loadViewer}\r\n />\r\n );\r\n }\r\n\r\n // Render the loaded viewer component\r\n return <ViewerComponent {...viewerProps} />;\r\n};","import { DynamicViewerRegistry, ViewerInfo, FileViewerComponent } from './types';\r\n\r\n// Dynamic import functions for each viewer type\r\nconst loadTextViewer = () => import('./components/viewers/TextViewer').then(m => ({ default: m.TextViewer }));\r\nconst loadImageViewer = () => import('./components/viewers/ImageViewer').then(m => ({ default: m.ImageViewer }));\r\nconst loadPDFViewer = () => import('./components/viewers/PDFViewer').then(m => ({ default: m.PDFViewer }));\r\nconst loadVideoViewer = () => import('./components/viewers/VideoViewer').then(m => ({ default: m.VideoViewer }));\r\nconst loadAudioViewer = () => import('./components/viewers/AudioViewer').then(m => ({ default: m.AudioViewer }));\r\nconst loadTIFFViewer = () => import('./components/viewers/TIFFViewer').then(m => ({ default: m.TIFFViewer }));\r\nconst loadDefaultViewer = () => import('./components/viewers/DefaultViewer').then(m => ({ default: m.DefaultViewer }));\r\n\r\n// Registry mapping file extensions to viewer info\r\nexport const dynamicViewerRegistry: Record<string, ViewerInfo> = {\r\n // Text files\r\n 'txt': { type: 'text', loader: loadTextViewer },\r\n 'json': { type: 'text', loader: loadTextViewer },\r\n 'xml': { type: 'text', loader: loadTextViewer },\r\n 'csv': { type: 'text', loader: loadTextViewer },\r\n 'md': { type: 'text', loader: loadTextViewer },\r\n 'js': { type: 'text', loader: loadTextViewer },\r\n 'jsx': { type: 'text', loader: loadTextViewer },\r\n 'ts': { type: 'text', loader: loadTextViewer },\r\n 'tsx': { type: 'text', loader: loadTextViewer },\r\n 'css': { type: 'text', loader: loadTextViewer },\r\n 'scss': { type: 'text', loader: loadTextViewer },\r\n 'html': { type: 'text', loader: loadTextViewer },\r\n 'py': { type: 'text', loader: loadTextViewer },\r\n 'java': { type: 'text', loader: loadTextViewer },\r\n 'cpp': { type: 'text', loader: loadTextViewer },\r\n 'c': { type: 'text', loader: loadTextViewer },\r\n 'php': { type: 'text', loader: loadTextViewer },\r\n 'rb': { type: 'text', loader: loadTextViewer },\r\n 'go': { type: 'text', loader: loadTextViewer },\r\n 'rs': { type: 'text', loader: loadTextViewer },\r\n 'sql': { type: 'text', loader: loadTextViewer },\r\n 'yaml': { type: 'text', loader: loadTextViewer },\r\n 'yml': { type: 'text', loader: loadTextViewer },\r\n\r\n // Images\r\n 'jpg': { type: 'image', loader: loadImageViewer },\r\n 'jpeg': { type: 'image', loader: loadImageViewer },\r\n 'png': { type: 'image', loader: loadImageViewer },\r\n 'gif': { type: 'image', loader: loadImageViewer },\r\n 'svg': { type: 'image', loader: loadImageViewer },\r\n 'webp': { type: 'image', loader: loadImageViewer },\r\n 'bmp': { type: 'image', loader: loadImageViewer },\r\n 'ico': { type: 'image', loader: loadImageViewer },\r\n 'tif': { type: 'tiff', loader: loadTIFFViewer },\r\n 'tiff': { type: 'tiff', loader: loadTIFFViewer },\r\n\r\n // PDF\r\n 'pdf': { type: 'pdf', loader: loadPDFViewer },\r\n\r\n // Videos\r\n 'mp4': { type: 'video', loader: loadVideoViewer },\r\n 'webm': { type: 'video', loader: loadVideoViewer },\r\n 'ogg': { type: 'video', loader: loadVideoViewer },\r\n 'avi': { type: 'video', loader: loadVideoViewer },\r\n 'mov': { type: 'video', loader: loadVideoViewer },\r\n 'wmv': { type: 'video', loader: loadVideoViewer },\r\n 'flv': { type: 'video', loader: loadVideoViewer },\r\n 'mkv': { type: 'video', loader: loadVideoViewer },\r\n\r\n // Audio\r\n 'mp3': { type: 'audio', loader: loadAudioViewer },\r\n 'wav': { type: 'audio', loader: loadAudioViewer },\r\n 'm4a': { type: 'audio', loader: loadAudioViewer },\r\n 'flac': { type: 'audio', loader: loadAudioViewer },\r\n 'aac': { type: 'audio', loader: loadAudioViewer },\r\n 'oga': { type: 'audio', loader: loadAudioViewer },\r\n};\r\n\r\n// Cache to store loaded components\r\nconst componentCache = new Map<string, FileViewerComponent>();\r\n\r\nexport const getViewerInfo = (extension: string): ViewerInfo => {\r\n const ext = extension.toLowerCase();\r\n return dynamicViewerRegistry[ext] || { type: 'default', loader: loadDefaultViewer };\r\n};\r\n\r\nexport const getViewerComponent = async (\r\n extension: string,\r\n customRegistry?: Record<string, ViewerInfo>\r\n): Promise<FileViewerComponent> => {\r\n const ext = extension.toLowerCase();\r\n\r\n // Check cache first\r\n if (componentCache.has(ext)) {\r\n return componentCache.get(ext)!;\r\n }\r\n\r\n // Get viewer info from registry\r\n const registry = { ...dynamicViewerRegistry, ...customRegistry };\r\n const viewerInfo = registry[ext] || { type: 'default', loader: loadDefaultViewer };\r\n\r\n try {\r\n // Dynamically import the component\r\n const { default: Component } = await viewerInfo.loader();\r\n\r\n // Cache the loaded component\r\n componentCache.set(ext, Component);\r\n\r\n return Component;\r\n } catch (error) {\r\n // Fallback to default viewer on error\r\n if (!componentCache.has('default')) {\r\n const { default: DefaultComponent } = await loadDefaultViewer();\r\n componentCache.set('default', DefaultComponent);\r\n }\r\n\r\n return componentCache.get('default')!;\r\n }\r\n};"],"mappings":"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","names":[]}
@@ -1,3 +1,14 @@
1
+ type ToolbarActionId = 'download' | 'print' | 'zoomIn' | 'zoomOut' | 'fitToWidth' | 'fitToPage' | 'search' | 'metadata' | 'properties' | 'fullscreen' | 'firstPage' | 'lastPage' | 'nextPage' | 'previousPage' | 'rotateLeft' | 'rotateRight' | string;
2
+ type ToolbarActionsConfig = Partial<Record<ToolbarActionId, {
3
+ /** Hide action entirely (not just disabled) */
4
+ hidden?: boolean;
5
+ /** Disable action (grayed out, still visible) */
6
+ disabled?: boolean;
7
+ /** Optional: Override the handler or icon */
8
+ onClick?: () => void;
9
+ icon?: React.ReactNode;
10
+ label?: string;
11
+ }>>;
1
12
  interface FileViewerProps {
2
13
  file?: File;
3
14
  url?: string;
@@ -11,6 +22,7 @@ interface FileViewerProps {
11
22
  onLoad?: () => void;
12
23
  onError?: (error: Error) => void;
13
24
  onPasswordRequest?: (fileName?: string) => Promise<string | null>;
25
+ toolbarActions?: ToolbarActionsConfig;
14
26
  showPageCount?: boolean;
15
27
  showPageNavigation?: boolean;
16
28
  showZoomControls?: boolean;
@@ -52,4 +64,4 @@ interface SearchResult {
52
64
  index: number;
53
65
  }
54
66
 
55
- export type { DynamicViewerRegistry as D, FileViewerProps as F, SearchResult as S, ViewerInfo as V, FileViewerComponent as a, ViewerRegistry as b, DynamicViewerImport as c };
67
+ export type { DynamicViewerRegistry as D, FileViewerProps as F, SearchResult as S, ToolbarActionId as T, ViewerInfo as V, FileViewerComponent as a, ViewerRegistry as b, DynamicViewerImport as c, ToolbarActionsConfig as d };
@@ -1,3 +1,14 @@
1
+ type ToolbarActionId = 'download' | 'print' | 'zoomIn' | 'zoomOut' | 'fitToWidth' | 'fitToPage' | 'search' | 'metadata' | 'properties' | 'fullscreen' | 'firstPage' | 'lastPage' | 'nextPage' | 'previousPage' | 'rotateLeft' | 'rotateRight' | string;
2
+ type ToolbarActionsConfig = Partial<Record<ToolbarActionId, {
3
+ /** Hide action entirely (not just disabled) */
4
+ hidden?: boolean;
5
+ /** Disable action (grayed out, still visible) */
6
+ disabled?: boolean;
7
+ /** Optional: Override the handler or icon */
8
+ onClick?: () => void;
9
+ icon?: React.ReactNode;
10
+ label?: string;
11
+ }>>;
1
12
  interface FileViewerProps {
2
13
  file?: File;
3
14
  url?: string;
@@ -11,6 +22,7 @@ interface FileViewerProps {
11
22
  onLoad?: () => void;
12
23
  onError?: (error: Error) => void;
13
24
  onPasswordRequest?: (fileName?: string) => Promise<string | null>;
25
+ toolbarActions?: ToolbarActionsConfig;
14
26
  showPageCount?: boolean;
15
27
  showPageNavigation?: boolean;
16
28
  showZoomControls?: boolean;
@@ -52,4 +64,4 @@ interface SearchResult {
52
64
  index: number;
53
65
  }
54
66
 
55
- export type { DynamicViewerRegistry as D, FileViewerProps as F, SearchResult as S, ViewerInfo as V, FileViewerComponent as a, ViewerRegistry as b, DynamicViewerImport as c };
67
+ export type { DynamicViewerRegistry as D, FileViewerProps as F, SearchResult as S, ToolbarActionId as T, ViewerInfo as V, FileViewerComponent as a, ViewerRegistry as b, DynamicViewerImport as c, ToolbarActionsConfig as d };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cannyminds/dms-file-viewers",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "File viewer components library with dynamic loading",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/viewers/AudioViewer.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { Box, Card, CardContent, CardHeader, LinearProgress, Typography, IconButton, Tooltip, Stack } from '@mui/material';\r\nimport DownloadIcon from '@mui/icons-material/Download';\r\nimport InfoIcon from '@mui/icons-material/Info';\r\nimport DescriptionIcon from '@mui/icons-material/Description';\r\nimport { FileViewerProps } from '../../types';\r\nimport { getFileExtension } from '../../utils/fileUtils';\r\nimport FileIcon from '../FileIcon';\r\n\r\nexport const AudioViewer: React.FC<FileViewerProps> = ({\r\n file,\r\n url,\r\n fileName,\r\n className = '',\r\n style = {},\r\n width = '100%',\r\n height = '100%',\r\n onLoad,\r\n onError,\r\n onDownloadClick,\r\n onMetadataClick,\r\n onPropertiesClick,\r\n showMetadata = true,\r\n showProperties = true,\r\n // Extract props that shouldn't be passed to DOM elements\r\n mimeType,\r\n fileSize,\r\n showPageCount,\r\n showPageNavigation,\r\n showZoomControls,\r\n showDownload,\r\n showPrint,\r\n showSearch,\r\n onPrintClick,\r\n customRegistry,\r\n initialSearchText,\r\n initialSearchPages,\r\n autoOpenSearch,\r\n autoExecuteSearch,\r\n onSearchComplete,\r\n ...props\r\n}) => {\r\n const audioRef = useRef<HTMLAudioElement | null>(null);\r\n const [objectUrl, setObjectUrl] = useState<string | null>(null);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n useEffect(() => {\r\n let urlValue: string | null = null;\r\n\r\n if (file) {\r\n setIsLoading(true);\r\n urlValue = URL.createObjectURL(file);\r\n } else if (url) {\r\n urlValue = url;\r\n }\r\n\r\n setObjectUrl(urlValue);\r\n setError(null);\r\n\r\n return () => {\r\n if (urlValue && file) {\r\n URL.revokeObjectURL(urlValue);\r\n }\r\n };\r\n }, [file, url]);\r\n\r\n useEffect(() => {\r\n if (!audioRef.current) {\r\n return;\r\n }\r\n\r\n const handleLoadedMetadata = () => {\r\n setIsLoading(false);\r\n onLoad?.();\r\n };\r\n\r\n const handleError = () => {\r\n const message = 'Failed to load audio resource';\r\n setIsLoading(false);\r\n setError(message);\r\n onError?.(new Error(message));\r\n };\r\n\r\n const element = audioRef.current;\r\n element.addEventListener('loadedmetadata', handleLoadedMetadata);\r\n element.addEventListener('error', handleError);\r\n\r\n return () => {\r\n element.removeEventListener('loadedmetadata', handleLoadedMetadata);\r\n element.removeEventListener('error', handleError);\r\n };\r\n }, [onLoad, onError, objectUrl]);\r\n\r\n const resolvedFileName = useMemo(() => fileName || file?.name || (url ? url.split('/').pop() : 'audio'), [fileName, file, url]);\r\n\r\n const fileExtension = useMemo(\r\n () => getFileExtension(resolvedFileName || ''),\r\n [resolvedFileName]\r\n );\r\n\r\n return (\r\n <Box\r\n className={`audio-viewer ${className}`}\r\n sx={{ width, height, ...style }}\r\n {...props}\r\n >\r\n <Card sx={{ height: '100%', display: 'flex', flexDirection: 'column' }} elevation={1}>\r\n <CardHeader\r\n avatar={<FileIcon ext={fileExtension} size={32} />}\r\n title={\r\n <Typography variant=\"subtitle1\" fontWeight={500}>\r\n {resolvedFileName}\r\n </Typography>\r\n }\r\n action={\r\n <Stack direction=\"row\" spacing={1}>\r\n <Tooltip title=\"Download\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onDownloadClick}\r\n aria-label=\"Download audio\"\r\n >\r\n <DownloadIcon />\r\n </IconButton>\r\n </Tooltip>\r\n {showMetadata && (\r\n <Tooltip title=\"Document Metadata\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onMetadataClick}\r\n aria-label=\"View document metadata\"\r\n >\r\n <InfoIcon />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {showProperties && (\r\n <Tooltip title=\"Document Properties\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onPropertiesClick}\r\n aria-label=\"View document properties\"\r\n >\r\n <DescriptionIcon />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n </Stack>\r\n }\r\n sx={{ pb: 1.5 }}\r\n />\r\n {isLoading && (\r\n <LinearProgress sx={{ mx: 3, mb: 2 }} />\r\n )}\r\n {error && (\r\n <Typography color=\"error\" variant=\"body2\" sx={{ px: 3, pb: 1 }}>\r\n {error}\r\n </Typography>\r\n )}\r\n <CardContent sx={{ flexGrow: 1, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n {objectUrl ? (\r\n <audio\r\n ref={audioRef}\r\n controls\r\n controlsList=\"nodownload\"\r\n style={{ width: '100%' }}\r\n src={objectUrl}\r\n />\r\n ) : (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n No audio source provided.\r\n </Typography>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/viewers/DefaultViewer.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\nimport { Box, Card, CardContent, CardHeader, Typography, IconButton, Tooltip, Stack } from '@mui/material';\r\nimport DownloadIcon from '@mui/icons-material/Download';\r\nimport InfoIcon from '@mui/icons-material/Info';\r\nimport DescriptionIcon from '@mui/icons-material/Description';\r\nimport { FileViewerProps } from '../../types';\r\nimport { getFileExtension } from '../../utils/fileUtils';\r\nimport FileIcon from '../FileIcon';\r\n\r\nexport const DefaultViewer: React.FC<FileViewerProps> = ({\r\n file,\r\n url,\r\n fileName,\r\n className = '',\r\n style = {},\r\n width = '100%',\r\n height = '100%',\r\n onLoad,\r\n onError,\r\n // Extract props that shouldn't be passed to DOM elements\r\n mimeType,\r\n fileSize,\r\n showPageCount,\r\n showPageNavigation,\r\n showZoomControls,\r\n showDownload,\r\n showPrint,\r\n showSearch,\r\n showMetadata,\r\n showProperties,\r\n onMetadataClick,\r\n onPropertiesClick,\r\n onPrintClick,\r\n onDownloadClick,\r\n customRegistry,\r\n ...props\r\n}) => {\r\n const resolvedFileName = useMemo(\r\n () => fileName || file?.name || (url ? url.split('/').pop() : 'unknown-file'),\r\n [fileName, file, url]\r\n );\r\n\r\n const fileExtension = useMemo(\r\n () => getFileExtension(resolvedFileName || ''),\r\n [resolvedFileName]\r\n );\r\n\r\n return (\r\n <Box\r\n className={`default-viewer ${className}`}\r\n sx={{ width, height, ...style }}\r\n {...props}\r\n >\r\n <Card sx={{ height: '100%', display: 'flex', flexDirection: 'column' }} elevation={1}>\r\n <CardHeader\r\n avatar={<FileIcon ext={fileExtension} size={32} />}\r\n title={\r\n <Typography variant=\"subtitle1\" fontWeight={500}>\r\n {resolvedFileName}\r\n </Typography>\r\n }\r\n action={\r\n <Stack direction=\"row\" spacing={1}>\r\n <Tooltip title=\"Download\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onDownloadClick}\r\n aria-label=\"Download file\"\r\n >\r\n <DownloadIcon />\r\n </IconButton>\r\n </Tooltip>\r\n {showMetadata && (\r\n <Tooltip title=\"Document Metadata\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onMetadataClick}\r\n aria-label=\"View document metadata\"\r\n >\r\n <InfoIcon />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {showProperties && (\r\n <Tooltip title=\"Document Properties\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onPropertiesClick}\r\n aria-label=\"View document properties\"\r\n >\r\n <DescriptionIcon />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n </Stack>\r\n }\r\n sx={{ pb: 1 }}\r\n />\r\n <CardContent sx={{\r\n flexGrow: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n textAlign: 'center',\r\n color: '#666'\r\n }}>\r\n <Typography variant=\"h6\" gutterBottom color=\"text.primary\">\r\n File Preview Not Available\r\n </Typography>\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant=\"body2\"><strong>File:</strong> {resolvedFileName}</Typography>\r\n {mimeType && <Typography variant=\"body2\"><strong>Type:</strong> {mimeType}</Typography>}\r\n {fileSize && <Typography variant=\"body2\"><strong>Size:</strong> {Math.round(fileSize / 1024)} KB</Typography>}\r\n <Typography variant=\"body2\" sx={{ mt: 2 }}>\r\n This file type is not supported for preview.\r\n </Typography>\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n You can download the file using the button above.\r\n </Typography>\r\n </Box>\r\n </CardContent>\r\n </Card>\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["d:\\Projects\\DMS-File-Viewers\\packages\\lib\\dist\\chunk-77UARJVQ.js"],"names":[],"mappings":"AAAA,yrBAAY;AACZ;AACE;AACA;AACF,sDAA4B;AAC5B;AACA;AACA,8BAA+B;AAC/B,yCAA0G;AAC1G,4GAAuD;AACvD,4FAA+C;AAC/C,wHAA6D;AAC7D,+CAA6C;AAC7C,IAAI,cAAc,EAAE,CAAC;AACrB,EAAE,IAAI;AACN,EAAE,GAAG;AACL,EAAE,QAAQ;AACV,EAAE,UAAU,EAAE,EAAE;AAChB,EAAE,MAAM,EAAE,CAAC,CAAC;AACZ,EAAE,MAAM,EAAE,MAAM;AAChB,EAAE,OAAO,EAAE,MAAM;AACjB,EAAE,MAAM;AACR,EAAE,OAAO;AACT;AACA,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,aAAa;AACf,EAAE,kBAAkB;AACpB,EAAE,gBAAgB;AAClB,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,cAAc;AAChB,EAAE,eAAe;AACjB,EAAE,iBAAiB;AACnB,EAAE,YAAY;AACd,EAAE,eAAe;AACjB,EAAE,cAAc;AAChB,EAAE,GAAG;AACL,CAAC,EAAE,GAAG;AACN,EAAE,MAAM,iBAAiB,EAAE,4BAAO;AAClC,IAAI,CAAC,EAAE,GAAG,SAAS,mBAAG,IAAI,2BAAE,OAAK,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC;AACjF,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG;AACxB,EAAE,CAAC;AACH,EAAE,MAAM,cAAc,EAAE,4BAAO;AAC/B,IAAI,CAAC,EAAE,GAAG,+CAAgB,iBAAkB,GAAG,EAAE,CAAC;AAClD,IAAI,CAAC,gBAAgB;AACrB,EAAE,CAAC;AACH,EAAE,uBAAuB,6BAAG;AAC5B,IAAI,aAAG;AACP,IAAI;AACJ,MAAM,SAAS,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,wBAAA;AACA,UAAA;AACA,UAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,8BAAA;AACA,gBAAA;AACA,gBAAA;AACA,kBAAA;AACA,kBAAA;AACA,kBAAA;AACA,kBAAA;AACA,gBAAA;AACA,cAAA;AACA,cAAA;AACA,gBAAA;AACA,gBAAA;AACA,kBAAA;AACA,kBAAA;AACA,kBAAA;AACA,kBAAA;AACA,gBAAA;AACA,cAAA;AACA,cAAA;AACA,gBAAA;AACA,gBAAA;AACA,kBAAA;AACA,kBAAA;AACA,kBAAA;AACA,kBAAA;AACA,gBAAA;AACA,cAAA;AACA,YAAA;AACA,YAAA;AACA,UAAA;AACA,QAAA;AACA,wBAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,0BAAA;AACA,0BAAA;AACA,4BAAA;AACA,8BAAA;AACA,cAAA;AACA,cAAA;AACA,YAAA;AACA,YAAA;AACA,8BAAA;AACA,cAAA;AACA,cAAA;AACA,YAAA;AACA,YAAA;AACA,8BAAA;AACA,cAAA;AACA,cAAA;AACA,cAAA;AACA,YAAA;AACA,4BAAA;AACA,4BAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA","file":"D:\\Projects\\DMS-File-Viewers\\packages\\lib\\dist\\chunk-77UARJVQ.js","sourcesContent":[null]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/viewers/TextViewer.tsx"],"sourcesContent":["import React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useState\r\n} from 'react';\r\nimport {\r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n CardHeader,\r\n Divider,\r\n LinearProgress,\r\n Stack,\r\n Typography,\r\n IconButton,\r\n Tooltip\r\n} from '@mui/material';\r\nimport DownloadIcon from '@mui/icons-material/Download';\r\nimport InfoIcon from '@mui/icons-material/Info';\r\nimport DescriptionIcon from '@mui/icons-material/Description';\r\nimport { FileViewerProps } from '../../types';\r\nimport { getFileExtension } from '../../utils/fileUtils';\r\nimport FileIcon from '../FileIcon';\r\n\r\nconst LINE_HEIGHT = 24;\r\n\r\nexport const TextViewer: React.FC<FileViewerProps> = ({\r\n file,\r\n url,\r\n fileName,\r\n className = '',\r\n style = {},\r\n width = '100%',\r\n height = '100%',\r\n onLoad,\r\n onError,\r\n onDownloadClick,\r\n onMetadataClick,\r\n onPropertiesClick,\r\n showMetadata = true,\r\n showProperties = true,\r\n // Extract props that shouldn't be passed to DOM elements\r\n mimeType,\r\n fileSize,\r\n showPageCount,\r\n showPageNavigation,\r\n showZoomControls,\r\n showDownload,\r\n showPrint,\r\n showSearch,\r\n onPrintClick,\r\n customRegistry,\r\n initialSearchText,\r\n initialSearchPages,\r\n autoOpenSearch,\r\n autoExecuteSearch,\r\n onSearchComplete,\r\n ...props\r\n}) => {\r\n const [content, setContent] = useState<string>('');\r\n const [lines, setLines] = useState<string[]>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n const resolvedFileName = useMemo(\r\n () => fileName || file?.name || (url ? url.split('/').pop() : 'text-document'),\r\n [fileName, file, url]\r\n );\r\n\r\n const fileExtension = useMemo(\r\n () => getFileExtension(resolvedFileName || ''),\r\n [resolvedFileName]\r\n );\r\n\r\n const loadText = useCallback(async () => {\r\n if (!file && !url) {\r\n setContent('');\r\n setLines([]);\r\n setError(null);\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n setError(null);\r\n\r\n try {\r\n let textContent: string;\r\n if (file) {\r\n textContent = await file.text();\r\n } else {\r\n const response = await fetch(url!);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch text (${response.status})`);\r\n }\r\n textContent = await response.text();\r\n }\r\n\r\n setContent(textContent);\r\n setLines(textContent.split(/\\r?\\n/));\r\n onLoad?.();\r\n } catch (err) {\r\n const message = err instanceof Error ? err.message : 'Unable to load text file';\r\n setError(message);\r\n setContent('');\r\n setLines([]);\r\n onError?.(new Error(message));\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n }, [file, url, onLoad, onError]);\r\n\r\n useEffect(() => {\r\n void loadText();\r\n }, [loadText]);\r\n\r\n return (\r\n <Box\r\n className={`text-viewer ${className}`}\r\n sx={{ width, height, ...style }}\r\n {...props}\r\n >\r\n <Card sx={{ height: '100%', display: 'flex', flexDirection: 'column' }} elevation={1}>\r\n <CardHeader\r\n avatar={<FileIcon ext={fileExtension} size={32} />}\r\n title={\r\n <Typography variant=\"subtitle1\" fontWeight={500}>\r\n {resolvedFileName}\r\n </Typography>\r\n }\r\n action={\r\n <Stack direction=\"row\" spacing={1}>\r\n <Tooltip title=\"Download\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onDownloadClick}\r\n aria-label=\"Download text file\"\r\n >\r\n <DownloadIcon />\r\n </IconButton>\r\n </Tooltip>\r\n {showMetadata && (\r\n <Tooltip title=\"Document Metadata\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onMetadataClick}\r\n aria-label=\"View document metadata\"\r\n >\r\n <InfoIcon />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {showProperties && (\r\n <Tooltip title=\"Document Properties\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onPropertiesClick}\r\n aria-label=\"View document properties\"\r\n >\r\n <DescriptionIcon />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n </Stack>\r\n }\r\n sx={{ pb: 1 }}\r\n />\r\n {isLoading && <LinearProgress sx={{ mx: 3, mb: 1 }} />}\r\n {error && (\r\n <Typography color=\"error\" variant=\"body2\" sx={{ px: 3, pb: 1 }}>\r\n {error}\r\n </Typography>\r\n )}\r\n <Divider />\r\n <CardContent sx={{ flexGrow: 1, minHeight: 0, p: 0, overflow: 'auto' }}>\r\n {content ? (\r\n <Box sx={{ \r\n fontFamily: 'monospace', \r\n fontSize: '0.85rem',\r\n p: 2,\r\n whiteSpace: 'pre'\r\n }}>\r\n {lines.map((line, index) => (\r\n <Box\r\n key={index}\r\n sx={{\r\n minHeight: LINE_HEIGHT,\r\n lineHeight: `${LINE_HEIGHT}px`\r\n }}\r\n >\r\n {line || '\\u00A0'}\r\n </Box>\r\n ))}\r\n </Box>\r\n ) : (\r\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center', p: 4, minHeight: 200 }}>\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n No text content available.\r\n </Typography>\r\n </Box>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </Box>\r\n );\r\n};"],"mappings":";;;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,kBAAkB;AACzB,OAAO,cAAc;AACrB,OAAO,qBAAqB;AAwGV,cAON,YAPM;AAnGlB,IAAM,cAAc;AAEb,IAAM,aAAwC,CAAC;AAAA,EACpD;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,eAAe;AAAA,EACf,iBAAiB;AAAA;AAAA,EAEjB;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;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,SAAS,UAAU,IAAI,SAAiB,EAAE;AACjD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAmB,CAAC,CAAC;AAC/C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AAEtD,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,WAAW,YAAY,YAAY;AACvC,QAAI,CAAC,QAAQ,CAAC,KAAK;AACjB,iBAAW,EAAE;AACb,eAAS,CAAC,CAAC;AACX,eAAS,IAAI;AACb;AAAA,IACF;AAEA,iBAAa,IAAI;AACjB,aAAS,IAAI;AAEb,QAAI;AACF,UAAI;AACJ,UAAI,MAAM;AACR,sBAAc,MAAM,KAAK,KAAK;AAAA,MAChC,OAAO;AACL,cAAM,WAAW,MAAM,MAAM,GAAI;AACjC,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,IAAI,MAAM,yBAAyB,SAAS,MAAM,GAAG;AAAA,QAC7D;AACA,sBAAc,MAAM,SAAS,KAAK;AAAA,MACpC;AAEA,iBAAW,WAAW;AACtB,eAAS,YAAY,MAAM,OAAO,CAAC;AACnC,eAAS;AAAA,IACX,SAAS,KAAK;AACZ,YAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,eAAS,OAAO;AAChB,iBAAW,EAAE;AACb,eAAS,CAAC,CAAC;AACX,gBAAU,IAAI,MAAM,OAAO,CAAC;AAAA,IAC9B,UAAE;AACA,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,MAAM,KAAK,QAAQ,OAAO,CAAC;AAE/B,YAAU,MAAM;AACd,SAAK,SAAS;AAAA,EAChB,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,eAAe,SAAS;AAAA,MACnC,IAAI,EAAE,OAAO,QAAQ,GAAG,MAAM;AAAA,MAC7B,GAAG;AAAA,MAEJ,+BAAC,QAAK,IAAI,EAAE,QAAQ,QAAQ,SAAS,QAAQ,eAAe,SAAS,GAAG,WAAW,GACjF;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,QAAQ,oBAAC,oBAAS,KAAK,eAAe,MAAM,IAAI;AAAA,YAChD,OACE,oBAAC,cAAW,SAAQ,aAAY,YAAY,KACzC,4BACH;AAAA,YAEF,QACE,qBAAC,SAAM,WAAU,OAAM,SAAS,GAC9B;AAAA,kCAAC,WAAQ,OAAM,YACb;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT,cAAW;AAAA,kBAEX,8BAAC,gBAAa;AAAA;AAAA,cAChB,GACF;AAAA,cACC,gBACC,oBAAC,WAAQ,OAAM,qBACb;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT,cAAW;AAAA,kBAEX,8BAAC,YAAS;AAAA;AAAA,cACZ,GACF;AAAA,cAED,kBACC,oBAAC,WAAQ,OAAM,uBACb;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT,cAAW;AAAA,kBAEX,8BAAC,mBAAgB;AAAA;AAAA,cACnB,GACF;AAAA,eAEJ;AAAA,YAEF,IAAI,EAAE,IAAI,EAAE;AAAA;AAAA,QACd;AAAA,QACC,aAAa,oBAAC,kBAAe,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG;AAAA,QACnD,SACC,oBAAC,cAAW,OAAM,SAAQ,SAAQ,SAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAC1D,iBACH;AAAA,QAEF,oBAAC,WAAQ;AAAA,QACT,oBAAC,eAAY,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,GAAG,GAAG,UAAU,OAAO,GAClE,oBACC,oBAAC,OAAI,IAAI;AAAA,UACP,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,GAAG;AAAA,UACH,YAAY;AAAA,QACd,GACG,gBAAM,IAAI,CAAC,MAAM,UAChB;AAAA,UAAC;AAAA;AAAA,YAEC,IAAI;AAAA,cACF,WAAW;AAAA,cACX,YAAY,GAAG,WAAW;AAAA,YAC5B;AAAA,YAEC,kBAAQ;AAAA;AAAA,UANJ;AAAA,QAOP,CACD,GACH,IAEA,oBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,UAAU,GAAG,GAAG,WAAW,IAAI,GAC/F,8BAAC,cAAW,SAAQ,SAAQ,OAAM,kBAAiB,wCAEnD,GACF,GAEJ;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/viewers/VideoViewer.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { Box, Card, CardContent, CardHeader, LinearProgress, Typography, Stack, IconButton, Tooltip } from '@mui/material';\r\nimport DownloadIcon from '@mui/icons-material/Download';\r\nimport InfoIcon from '@mui/icons-material/Info';\r\nimport DescriptionIcon from '@mui/icons-material/Description';\r\nimport { FileViewerProps } from '../../types';\r\nimport { getFileExtension } from '../../utils/fileUtils';\r\nimport FileIcon from '../FileIcon';\r\n\r\nexport const VideoViewer: React.FC<FileViewerProps> = ({\r\n file,\r\n url,\r\n fileName,\r\n className = '',\r\n style = {},\r\n width = '100%',\r\n height = '100%',\r\n onLoad,\r\n onError,\r\n onDownloadClick,\r\n onMetadataClick,\r\n onPropertiesClick,\r\n showMetadata = true,\r\n showProperties = true,\r\n // Extract props that shouldn't be passed to DOM elements\r\n mimeType,\r\n fileSize,\r\n showPageCount,\r\n showPageNavigation,\r\n showZoomControls,\r\n showDownload,\r\n showPrint,\r\n showSearch,\r\n onPrintClick,\r\n customRegistry,\r\n initialSearchText,\r\n initialSearchPages,\r\n autoOpenSearch,\r\n autoExecuteSearch,\r\n onSearchComplete,\r\n ...props\r\n}) => {\r\n const videoRef = useRef<HTMLVideoElement | null>(null);\r\n const [videoSource, setVideoSource] = useState<string | null>(null);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [videoDimensions, setVideoDimensions] = useState<{ width: number; height: number } | null>(null);\r\n\r\n useEffect(() => {\r\n let objectUrl: string | null = null;\r\n\r\n if (file) {\r\n objectUrl = URL.createObjectURL(file);\r\n setVideoSource(objectUrl);\r\n setIsLoading(true);\r\n } else if (url) {\r\n setVideoSource(url);\r\n } else {\r\n setVideoSource(null);\r\n }\r\n\r\n setError(null);\r\n\r\n return () => {\r\n if (objectUrl) {\r\n URL.revokeObjectURL(objectUrl);\r\n }\r\n };\r\n }, [file, url]);\r\n\r\n useEffect(() => {\r\n const element = videoRef.current;\r\n if (!element) {\r\n return;\r\n }\r\n\r\n const handleLoaded = () => {\r\n setIsLoading(false);\r\n // Capture video dimensions\r\n setVideoDimensions({\r\n width: element.videoWidth,\r\n height: element.videoHeight\r\n });\r\n onLoad?.();\r\n };\r\n\r\n const handleError = () => {\r\n const message = 'Failed to load video resource';\r\n setIsLoading(false);\r\n setError(message);\r\n onError?.(new Error(message));\r\n };\r\n\r\n element.addEventListener('loadedmetadata', handleLoaded);\r\n element.addEventListener('error', handleError);\r\n\r\n return () => {\r\n element.removeEventListener('loadedmetadata', handleLoaded);\r\n element.removeEventListener('error', handleError);\r\n };\r\n }, [onLoad, onError, videoSource]);\r\n\r\n const resolvedFileName = useMemo(\r\n () => fileName || file?.name || (url ? url.split('/').pop() : 'video'),\r\n [fileName, file, url]\r\n );\r\n\r\n const fileExtension = useMemo(\r\n () => getFileExtension(resolvedFileName || ''),\r\n [resolvedFileName]\r\n );\r\n\r\n return (\r\n <Box\r\n className={`video-viewer ${className}`}\r\n sx={{ width, height, ...style }}\r\n {...props}\r\n >\r\n <Card sx={{ height: '100%', display: 'flex', flexDirection: 'column' }} elevation={1}>\r\n <CardHeader\r\n avatar={<FileIcon ext={fileExtension} size={32} />}\r\n title={\r\n <Typography variant=\"subtitle1\" fontWeight={500}>\r\n {resolvedFileName}\r\n </Typography>\r\n }\r\n action={\r\n <Stack direction=\"row\" spacing={1}>\r\n <Tooltip title=\"Download\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onDownloadClick}\r\n aria-label=\"Download video\"\r\n >\r\n <DownloadIcon />\r\n </IconButton>\r\n </Tooltip>\r\n {showMetadata && (\r\n <Tooltip title=\"Document Metadata\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onMetadataClick}\r\n aria-label=\"View document metadata\"\r\n >\r\n <InfoIcon />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {showProperties && (\r\n <Tooltip title=\"Document Properties\">\r\n <IconButton\r\n size=\"small\"\r\n onClick={onPropertiesClick}\r\n aria-label=\"View document properties\"\r\n >\r\n <DescriptionIcon />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n </Stack>\r\n }\r\n sx={{ pb: 1.5 }}\r\n />\r\n {isLoading && <LinearProgress sx={{ mx: 3, mb: 2 }} />}\r\n {error && (\r\n <Typography color=\"error\" variant=\"body2\" sx={{ px: 3, pb: 1 }}>\r\n {error}\r\n </Typography>\r\n )}\r\n <CardContent sx={{ \r\n flexGrow: 1, \r\n display: 'flex', \r\n alignItems: 'center', \r\n justifyContent: 'center', \r\n p: 2,\r\n overflow: 'hidden'\r\n }}>\r\n {videoSource ? (\r\n <Box\r\n sx={{\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: '#000',\r\n borderRadius: 2\r\n }}\r\n >\r\n <video\r\n ref={videoRef}\r\n controls\r\n controlsList=\"nodownload\"\r\n style={{\r\n maxWidth: '100%',\r\n maxHeight: '100%',\r\n width: 'auto',\r\n height: 'auto',\r\n objectFit: 'contain'\r\n }}\r\n src={videoSource}\r\n />\r\n </Box>\r\n ) : (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n No video source provided.\r\n </Typography>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </Box>\r\n );\r\n};"],"mappings":"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","names":[]}