@cannymindstech/file-viewers 0.27.12 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/dist/chunk-2BLHLWNN.js +0 -299
- package/dist/chunk-2BLHLWNN.js.map +0 -1
- package/dist/chunk-6BRYDA3B.js +0 -329
- package/dist/chunk-6BRYDA3B.js.map +0 -1
- package/dist/chunk-7JPF5AYR.mjs +0 -488
- package/dist/chunk-7JPF5AYR.mjs.map +0 -1
- package/dist/chunk-7P6WEBHN.js +0 -2299
- package/dist/chunk-7P6WEBHN.js.map +0 -1
- package/dist/chunk-7PMZ4GN5.mjs +0 -290
- package/dist/chunk-7PMZ4GN5.mjs.map +0 -1
- package/dist/chunk-B5NNB4KD.mjs +0 -268
- package/dist/chunk-B5NNB4KD.mjs.map +0 -1
- package/dist/chunk-CIWCHSAA.js +0 -309
- package/dist/chunk-CIWCHSAA.js.map +0 -1
- package/dist/chunk-D7SDEVDM.js +0 -268
- package/dist/chunk-D7SDEVDM.js.map +0 -1
- package/dist/chunk-ECZ6IBOS.js +0 -424
- package/dist/chunk-ECZ6IBOS.js.map +0 -1
- package/dist/chunk-EKNP342T.mjs +0 -299
- package/dist/chunk-EKNP342T.mjs.map +0 -1
- package/dist/chunk-EM63H4SA.js +0 -290
- package/dist/chunk-EM63H4SA.js.map +0 -1
- package/dist/chunk-IJMNPAXX.mjs +0 -309
- package/dist/chunk-IJMNPAXX.mjs.map +0 -1
- package/dist/chunk-JKX5RSLF.mjs +0 -871
- package/dist/chunk-JKX5RSLF.mjs.map +0 -1
- package/dist/chunk-KJNOBIUZ.mjs +0 -36
- package/dist/chunk-KJNOBIUZ.mjs.map +0 -1
- package/dist/chunk-KQCU7XW2.mjs +0 -424
- package/dist/chunk-KQCU7XW2.mjs.map +0 -1
- package/dist/chunk-KQLIG6WK.js +0 -871
- package/dist/chunk-KQLIG6WK.js.map +0 -1
- package/dist/chunk-OPJOCUSL.js +0 -36
- package/dist/chunk-OPJOCUSL.js.map +0 -1
- package/dist/chunk-PZGUVU6N.mjs +0 -2299
- package/dist/chunk-PZGUVU6N.mjs.map +0 -1
- package/dist/chunk-QV63FULE.js +0 -488
- package/dist/chunk-QV63FULE.js.map +0 -1
- package/dist/chunk-XJQ5J2UF.mjs +0 -329
- package/dist/chunk-XJQ5J2UF.mjs.map +0 -1
- package/dist/components/viewers/AudioViewer.d.mts +0 -6
- package/dist/components/viewers/AudioViewer.d.ts +0 -6
- package/dist/components/viewers/AudioViewer.js +0 -10
- package/dist/components/viewers/AudioViewer.js.map +0 -1
- package/dist/components/viewers/AudioViewer.mjs +0 -10
- package/dist/components/viewers/AudioViewer.mjs.map +0 -1
- package/dist/components/viewers/DefaultViewer.d.mts +0 -6
- package/dist/components/viewers/DefaultViewer.d.ts +0 -6
- package/dist/components/viewers/DefaultViewer.js +0 -10
- package/dist/components/viewers/DefaultViewer.js.map +0 -1
- package/dist/components/viewers/DefaultViewer.mjs +0 -10
- package/dist/components/viewers/DefaultViewer.mjs.map +0 -1
- package/dist/components/viewers/ImageViewer.d.mts +0 -6
- package/dist/components/viewers/ImageViewer.d.ts +0 -6
- package/dist/components/viewers/ImageViewer.js +0 -10
- package/dist/components/viewers/ImageViewer.js.map +0 -1
- package/dist/components/viewers/ImageViewer.mjs +0 -10
- package/dist/components/viewers/ImageViewer.mjs.map +0 -1
- package/dist/components/viewers/PDFViewer.d.mts +0 -51
- package/dist/components/viewers/PDFViewer.d.ts +0 -51
- package/dist/components/viewers/PDFViewer.js +0 -11
- package/dist/components/viewers/PDFViewer.js.map +0 -1
- package/dist/components/viewers/PDFViewer.mjs +0 -11
- package/dist/components/viewers/PDFViewer.mjs.map +0 -1
- package/dist/components/viewers/TIFFViewer.d.mts +0 -6
- package/dist/components/viewers/TIFFViewer.d.ts +0 -6
- package/dist/components/viewers/TIFFViewer.js +0 -10
- package/dist/components/viewers/TIFFViewer.js.map +0 -1
- package/dist/components/viewers/TIFFViewer.mjs +0 -10
- package/dist/components/viewers/TIFFViewer.mjs.map +0 -1
- package/dist/components/viewers/TextViewer.d.mts +0 -6
- package/dist/components/viewers/TextViewer.d.ts +0 -6
- package/dist/components/viewers/TextViewer.js +0 -10
- package/dist/components/viewers/TextViewer.js.map +0 -1
- package/dist/components/viewers/TextViewer.mjs +0 -10
- package/dist/components/viewers/TextViewer.mjs.map +0 -1
- package/dist/components/viewers/VideoViewer.d.mts +0 -6
- package/dist/components/viewers/VideoViewer.d.ts +0 -6
- package/dist/components/viewers/VideoViewer.js +0 -10
- package/dist/components/viewers/VideoViewer.js.map +0 -1
- package/dist/components/viewers/VideoViewer.mjs +0 -10
- package/dist/components/viewers/VideoViewer.mjs.map +0 -1
- package/dist/index.d.mts +0 -75
- package/dist/index.d.ts +0 -75
- package/dist/index.js +0 -305
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -305
- package/dist/index.mjs.map +0 -1
- package/dist/types-BYTxtKEc.d.mts +0 -100
- package/dist/types-BYTxtKEc.d.ts +0 -100
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var _chunkKQLIG6WKjs = require('../../chunk-KQLIG6WK.js');
|
|
5
|
-
require('../../chunk-OPJOCUSL.js');
|
|
6
|
-
require('../../chunk-EM63H4SA.js');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.TIFFViewer = _chunkKQLIG6WKjs.TIFFViewer;
|
|
10
|
-
//# sourceMappingURL=TIFFViewer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/premkumar/Documents/GitHub/DMS-File-Viewers/packages/lib/dist/components/viewers/TIFFViewer.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,iDAAC","file":"/home/premkumar/Documents/GitHub/DMS-File-Viewers/packages/lib/dist/components/viewers/TIFFViewer.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var _chunkCIWCHSAAjs = require('../../chunk-CIWCHSAA.js');
|
|
5
|
-
require('../../chunk-OPJOCUSL.js');
|
|
6
|
-
require('../../chunk-EM63H4SA.js');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.TextViewer = _chunkCIWCHSAAjs.TextViewer;
|
|
10
|
-
//# sourceMappingURL=TextViewer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/premkumar/Documents/GitHub/DMS-File-Viewers/packages/lib/dist/components/viewers/TextViewer.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,iDAAC","file":"/home/premkumar/Documents/GitHub/DMS-File-Viewers/packages/lib/dist/components/viewers/TextViewer.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var _chunk6BRYDA3Bjs = require('../../chunk-6BRYDA3B.js');
|
|
5
|
-
require('../../chunk-OPJOCUSL.js');
|
|
6
|
-
require('../../chunk-EM63H4SA.js');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.VideoViewer = _chunk6BRYDA3Bjs.VideoViewer;
|
|
10
|
-
//# sourceMappingURL=VideoViewer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/premkumar/Documents/GitHub/DMS-File-Viewers/packages/lib/dist/components/viewers/VideoViewer.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,mDAAC","file":"/home/premkumar/Documents/GitHub/DMS-File-Viewers/packages/lib/dist/components/viewers/VideoViewer.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/index.d.mts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { F as FileViewerProps, V as ViewerInfo, a as FileViewerComponent } from './types-BYTxtKEc.mjs';
|
|
3
|
-
export { c as DynamicViewerImport, D as DynamicViewerRegistry, S as SearchResult, T as ToolbarActionId, d as ToolbarActionsConfig, b as ViewerRegistry } from './types-BYTxtKEc.mjs';
|
|
4
|
-
export { TextViewer } from './components/viewers/TextViewer.mjs';
|
|
5
|
-
export { ImageViewer } from './components/viewers/ImageViewer.mjs';
|
|
6
|
-
export { PDFViewer, PDFViewerMethods } from './components/viewers/PDFViewer.mjs';
|
|
7
|
-
export { VideoViewer } from './components/viewers/VideoViewer.mjs';
|
|
8
|
-
export { AudioViewer } from './components/viewers/AudioViewer.mjs';
|
|
9
|
-
export { TIFFViewer } from './components/viewers/TIFFViewer.mjs';
|
|
10
|
-
export { DefaultViewer } from './components/viewers/DefaultViewer.mjs';
|
|
11
|
-
|
|
12
|
-
interface FileViewerComponentProps extends Partial<FileViewerProps> {
|
|
13
|
-
customRegistry?: Record<string, ViewerInfo>;
|
|
14
|
-
loadingComponent?: React.ComponentType<{
|
|
15
|
-
fileName?: string;
|
|
16
|
-
type?: string;
|
|
17
|
-
}>;
|
|
18
|
-
errorComponent?: React.ComponentType<{
|
|
19
|
-
error: Error;
|
|
20
|
-
retry: () => void;
|
|
21
|
-
}>;
|
|
22
|
-
}
|
|
23
|
-
declare const FileViewer: React.FC<FileViewerComponentProps>;
|
|
24
|
-
|
|
25
|
-
interface FileIconProps {
|
|
26
|
-
ext?: string;
|
|
27
|
-
size?: number;
|
|
28
|
-
sx?: React.CSSProperties;
|
|
29
|
-
}
|
|
30
|
-
declare const FileIcon: React.FC<FileIconProps>;
|
|
31
|
-
|
|
32
|
-
declare const dynamicViewerRegistry: Record<string, ViewerInfo>;
|
|
33
|
-
declare const getViewerInfo: (extension: string) => ViewerInfo;
|
|
34
|
-
declare const getViewerComponent: (extension: string, customRegistry?: Record<string, ViewerInfo>) => Promise<FileViewerComponent>;
|
|
35
|
-
|
|
36
|
-
declare const getFileExtension: (fileName: string) => string;
|
|
37
|
-
declare const getMimeTypeFromExtension: (extension: string) => string;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Local shim for @embedpdf/plugin-annotation v2.14.1 lock-mode types.
|
|
41
|
-
*
|
|
42
|
-
* Once @cannymindstech/pdf-viewer @ 0.7.0 is published with its own re-exports
|
|
43
|
-
* of these from @embedpdf/plugin-annotation, this file should be deleted and
|
|
44
|
-
* src/index.ts switched back to:
|
|
45
|
-
*
|
|
46
|
-
* export { LockModeType } from '@cannymindstech/pdf-viewer';
|
|
47
|
-
* export type { LockMode, PdfAnnotationFlagName } from '@cannymindstech/pdf-viewer';
|
|
48
|
-
*
|
|
49
|
-
* Numeric values intentionally match the upstream enum so the shim is wire-
|
|
50
|
-
* compatible with the engine even before the upstream bump.
|
|
51
|
-
*/
|
|
52
|
-
declare enum LockModeType {
|
|
53
|
-
None = 0,
|
|
54
|
-
All = 1,
|
|
55
|
-
Include = 2,
|
|
56
|
-
Exclude = 3
|
|
57
|
-
}
|
|
58
|
-
type LockMode = {
|
|
59
|
-
type: LockModeType.None;
|
|
60
|
-
} | {
|
|
61
|
-
type: LockModeType.All;
|
|
62
|
-
} | {
|
|
63
|
-
type: LockModeType.Include;
|
|
64
|
-
categories: string[];
|
|
65
|
-
} | {
|
|
66
|
-
type: LockModeType.Exclude;
|
|
67
|
-
categories: string[];
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* PDF annotation flag names recognized by @embedpdf/plugin-annotation v2.14.1.
|
|
71
|
-
* `lockedContents` is new in 2.14.1; older runtimes silently ignore it.
|
|
72
|
-
*/
|
|
73
|
-
type PdfAnnotationFlagName = 'invisible' | 'hidden' | 'print' | 'noZoom' | 'noRotate' | 'noView' | 'readOnly' | 'locked' | 'toggleNoView' | 'lockedContents';
|
|
74
|
-
|
|
75
|
-
export { FileIcon, FileViewer, FileViewerComponent, FileViewerProps, type LockMode, LockModeType, type PdfAnnotationFlagName, ViewerInfo, dynamicViewerRegistry, getFileExtension, getMimeTypeFromExtension, getViewerComponent, getViewerInfo };
|
package/dist/index.d.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { F as FileViewerProps, V as ViewerInfo, a as FileViewerComponent } from './types-BYTxtKEc.js';
|
|
3
|
-
export { c as DynamicViewerImport, D as DynamicViewerRegistry, S as SearchResult, T as ToolbarActionId, d as ToolbarActionsConfig, b as ViewerRegistry } from './types-BYTxtKEc.js';
|
|
4
|
-
export { TextViewer } from './components/viewers/TextViewer.js';
|
|
5
|
-
export { ImageViewer } from './components/viewers/ImageViewer.js';
|
|
6
|
-
export { PDFViewer, PDFViewerMethods } from './components/viewers/PDFViewer.js';
|
|
7
|
-
export { VideoViewer } from './components/viewers/VideoViewer.js';
|
|
8
|
-
export { AudioViewer } from './components/viewers/AudioViewer.js';
|
|
9
|
-
export { TIFFViewer } from './components/viewers/TIFFViewer.js';
|
|
10
|
-
export { DefaultViewer } from './components/viewers/DefaultViewer.js';
|
|
11
|
-
|
|
12
|
-
interface FileViewerComponentProps extends Partial<FileViewerProps> {
|
|
13
|
-
customRegistry?: Record<string, ViewerInfo>;
|
|
14
|
-
loadingComponent?: React.ComponentType<{
|
|
15
|
-
fileName?: string;
|
|
16
|
-
type?: string;
|
|
17
|
-
}>;
|
|
18
|
-
errorComponent?: React.ComponentType<{
|
|
19
|
-
error: Error;
|
|
20
|
-
retry: () => void;
|
|
21
|
-
}>;
|
|
22
|
-
}
|
|
23
|
-
declare const FileViewer: React.FC<FileViewerComponentProps>;
|
|
24
|
-
|
|
25
|
-
interface FileIconProps {
|
|
26
|
-
ext?: string;
|
|
27
|
-
size?: number;
|
|
28
|
-
sx?: React.CSSProperties;
|
|
29
|
-
}
|
|
30
|
-
declare const FileIcon: React.FC<FileIconProps>;
|
|
31
|
-
|
|
32
|
-
declare const dynamicViewerRegistry: Record<string, ViewerInfo>;
|
|
33
|
-
declare const getViewerInfo: (extension: string) => ViewerInfo;
|
|
34
|
-
declare const getViewerComponent: (extension: string, customRegistry?: Record<string, ViewerInfo>) => Promise<FileViewerComponent>;
|
|
35
|
-
|
|
36
|
-
declare const getFileExtension: (fileName: string) => string;
|
|
37
|
-
declare const getMimeTypeFromExtension: (extension: string) => string;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Local shim for @embedpdf/plugin-annotation v2.14.1 lock-mode types.
|
|
41
|
-
*
|
|
42
|
-
* Once @cannymindstech/pdf-viewer @ 0.7.0 is published with its own re-exports
|
|
43
|
-
* of these from @embedpdf/plugin-annotation, this file should be deleted and
|
|
44
|
-
* src/index.ts switched back to:
|
|
45
|
-
*
|
|
46
|
-
* export { LockModeType } from '@cannymindstech/pdf-viewer';
|
|
47
|
-
* export type { LockMode, PdfAnnotationFlagName } from '@cannymindstech/pdf-viewer';
|
|
48
|
-
*
|
|
49
|
-
* Numeric values intentionally match the upstream enum so the shim is wire-
|
|
50
|
-
* compatible with the engine even before the upstream bump.
|
|
51
|
-
*/
|
|
52
|
-
declare enum LockModeType {
|
|
53
|
-
None = 0,
|
|
54
|
-
All = 1,
|
|
55
|
-
Include = 2,
|
|
56
|
-
Exclude = 3
|
|
57
|
-
}
|
|
58
|
-
type LockMode = {
|
|
59
|
-
type: LockModeType.None;
|
|
60
|
-
} | {
|
|
61
|
-
type: LockModeType.All;
|
|
62
|
-
} | {
|
|
63
|
-
type: LockModeType.Include;
|
|
64
|
-
categories: string[];
|
|
65
|
-
} | {
|
|
66
|
-
type: LockModeType.Exclude;
|
|
67
|
-
categories: string[];
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* PDF annotation flag names recognized by @embedpdf/plugin-annotation v2.14.1.
|
|
71
|
-
* `lockedContents` is new in 2.14.1; older runtimes silently ignore it.
|
|
72
|
-
*/
|
|
73
|
-
type PdfAnnotationFlagName = 'invisible' | 'hidden' | 'print' | 'noZoom' | 'noRotate' | 'noView' | 'readOnly' | 'locked' | 'toggleNoView' | 'lockedContents';
|
|
74
|
-
|
|
75
|
-
export { FileIcon, FileViewer, FileViewerComponent, FileViewerProps, type LockMode, LockModeType, type PdfAnnotationFlagName, ViewerInfo, dynamicViewerRegistry, getFileExtension, getMimeTypeFromExtension, getViewerComponent, getViewerInfo };
|
package/dist/index.js
DELETED
|
@@ -1,305 +0,0 @@
|
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
var _chunk2BLHLWNNjs = require('./chunk-2BLHLWNN.js');
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var _chunkD7SDEVDMjs = require('./chunk-D7SDEVDM.js');
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _chunkQV63FULEjs = require('./chunk-QV63FULE.js');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var _chunk7P6WEBHNjs = require('./chunk-7P6WEBHN.js');
|
|
14
|
-
require('./chunk-ECZ6IBOS.js');
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
var _chunkKQLIG6WKjs = require('./chunk-KQLIG6WK.js');
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var _chunkCIWCHSAAjs = require('./chunk-CIWCHSAA.js');
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var _chunk6BRYDA3Bjs = require('./chunk-6BRYDA3B.js');
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var _chunkOPJOCUSLjs = require('./chunk-OPJOCUSL.js');
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var _chunkEM63H4SAjs = require('./chunk-EM63H4SA.js');
|
|
31
|
-
|
|
32
|
-
// src/components/FileViewer.tsx
|
|
33
|
-
var _react = require('react');
|
|
34
|
-
|
|
35
|
-
// src/registry.ts
|
|
36
|
-
var loadTextViewer = () => Promise.resolve().then(() => _interopRequireWildcard(require("./components/viewers/TextViewer.js"))).then((m) => ({ default: m.TextViewer }));
|
|
37
|
-
var loadImageViewer = () => Promise.resolve().then(() => _interopRequireWildcard(require("./components/viewers/ImageViewer.js"))).then((m) => ({ default: m.ImageViewer }));
|
|
38
|
-
var loadPDFViewer = () => Promise.resolve().then(() => _interopRequireWildcard(require("./components/viewers/PDFViewer.js"))).then((m) => ({ default: m.PDFViewer }));
|
|
39
|
-
var loadVideoViewer = () => Promise.resolve().then(() => _interopRequireWildcard(require("./components/viewers/VideoViewer.js"))).then((m) => ({ default: m.VideoViewer }));
|
|
40
|
-
var loadAudioViewer = () => Promise.resolve().then(() => _interopRequireWildcard(require("./components/viewers/AudioViewer.js"))).then((m) => ({ default: m.AudioViewer }));
|
|
41
|
-
var loadTIFFViewer = () => Promise.resolve().then(() => _interopRequireWildcard(require("./components/viewers/TIFFViewer.js"))).then((m) => ({ default: m.TIFFViewer }));
|
|
42
|
-
var loadDefaultViewer = () => Promise.resolve().then(() => _interopRequireWildcard(require("./components/viewers/DefaultViewer.js"))).then((m) => ({ default: m.DefaultViewer }));
|
|
43
|
-
var dynamicViewerRegistry = {
|
|
44
|
-
// Text files
|
|
45
|
-
"txt": { type: "text", loader: loadTextViewer },
|
|
46
|
-
"json": { type: "text", loader: loadTextViewer },
|
|
47
|
-
"xml": { type: "text", loader: loadTextViewer },
|
|
48
|
-
"csv": { type: "text", loader: loadTextViewer },
|
|
49
|
-
"md": { type: "text", loader: loadTextViewer },
|
|
50
|
-
"js": { type: "text", loader: loadTextViewer },
|
|
51
|
-
"jsx": { type: "text", loader: loadTextViewer },
|
|
52
|
-
"ts": { type: "text", loader: loadTextViewer },
|
|
53
|
-
"tsx": { type: "text", loader: loadTextViewer },
|
|
54
|
-
"css": { type: "text", loader: loadTextViewer },
|
|
55
|
-
"scss": { type: "text", loader: loadTextViewer },
|
|
56
|
-
"html": { type: "text", loader: loadTextViewer },
|
|
57
|
-
"py": { type: "text", loader: loadTextViewer },
|
|
58
|
-
"java": { type: "text", loader: loadTextViewer },
|
|
59
|
-
"cpp": { type: "text", loader: loadTextViewer },
|
|
60
|
-
"c": { type: "text", loader: loadTextViewer },
|
|
61
|
-
"php": { type: "text", loader: loadTextViewer },
|
|
62
|
-
"rb": { type: "text", loader: loadTextViewer },
|
|
63
|
-
"go": { type: "text", loader: loadTextViewer },
|
|
64
|
-
"rs": { type: "text", loader: loadTextViewer },
|
|
65
|
-
"sql": { type: "text", loader: loadTextViewer },
|
|
66
|
-
"yaml": { type: "text", loader: loadTextViewer },
|
|
67
|
-
"yml": { type: "text", loader: loadTextViewer },
|
|
68
|
-
// Images
|
|
69
|
-
"jpg": { type: "image", loader: loadImageViewer },
|
|
70
|
-
"jpeg": { type: "image", loader: loadImageViewer },
|
|
71
|
-
"png": { type: "image", loader: loadImageViewer },
|
|
72
|
-
"gif": { type: "image", loader: loadImageViewer },
|
|
73
|
-
"svg": { type: "image", loader: loadImageViewer },
|
|
74
|
-
"webp": { type: "image", loader: loadImageViewer },
|
|
75
|
-
"bmp": { type: "image", loader: loadImageViewer },
|
|
76
|
-
"ico": { type: "image", loader: loadImageViewer },
|
|
77
|
-
"tif": { type: "tiff", loader: loadTIFFViewer },
|
|
78
|
-
"tiff": { type: "tiff", loader: loadTIFFViewer },
|
|
79
|
-
// PDF
|
|
80
|
-
"pdf": { type: "pdf", loader: loadPDFViewer },
|
|
81
|
-
// Videos
|
|
82
|
-
"mp4": { type: "video", loader: loadVideoViewer },
|
|
83
|
-
"webm": { type: "video", loader: loadVideoViewer },
|
|
84
|
-
"ogg": { type: "video", loader: loadVideoViewer },
|
|
85
|
-
"avi": { type: "video", loader: loadVideoViewer },
|
|
86
|
-
"mov": { type: "video", loader: loadVideoViewer },
|
|
87
|
-
"wmv": { type: "video", loader: loadVideoViewer },
|
|
88
|
-
"flv": { type: "video", loader: loadVideoViewer },
|
|
89
|
-
"mkv": { type: "video", loader: loadVideoViewer },
|
|
90
|
-
// Audio
|
|
91
|
-
"mp3": { type: "audio", loader: loadAudioViewer },
|
|
92
|
-
"wav": { type: "audio", loader: loadAudioViewer },
|
|
93
|
-
"m4a": { type: "audio", loader: loadAudioViewer },
|
|
94
|
-
"flac": { type: "audio", loader: loadAudioViewer },
|
|
95
|
-
"aac": { type: "audio", loader: loadAudioViewer },
|
|
96
|
-
"oga": { type: "audio", loader: loadAudioViewer }
|
|
97
|
-
};
|
|
98
|
-
var componentCache = /* @__PURE__ */ new Map();
|
|
99
|
-
var getViewerInfo = (extension) => {
|
|
100
|
-
const ext = extension.toLowerCase();
|
|
101
|
-
return dynamicViewerRegistry[ext] || { type: "default", loader: loadDefaultViewer };
|
|
102
|
-
};
|
|
103
|
-
var getViewerComponent = async (extension, customRegistry) => {
|
|
104
|
-
const ext = extension.toLowerCase();
|
|
105
|
-
if (componentCache.has(ext)) {
|
|
106
|
-
return componentCache.get(ext);
|
|
107
|
-
}
|
|
108
|
-
const registry = { ...dynamicViewerRegistry, ...customRegistry };
|
|
109
|
-
const viewerInfo = registry[ext] || { type: "default", loader: loadDefaultViewer };
|
|
110
|
-
try {
|
|
111
|
-
const { default: Component } = await viewerInfo.loader();
|
|
112
|
-
componentCache.set(ext, Component);
|
|
113
|
-
return Component;
|
|
114
|
-
} catch (error) {
|
|
115
|
-
if (!componentCache.has("default")) {
|
|
116
|
-
const { default: DefaultComponent } = await loadDefaultViewer();
|
|
117
|
-
componentCache.set("default", DefaultComponent);
|
|
118
|
-
}
|
|
119
|
-
return componentCache.get("default");
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
// src/components/FileViewer.tsx
|
|
124
|
-
var _jsxruntime = require('react/jsx-runtime');
|
|
125
|
-
var DefaultLoadingComponent = ({ fileName, type }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { style: {
|
|
126
|
-
display: "flex",
|
|
127
|
-
alignItems: "center",
|
|
128
|
-
justifyContent: "center",
|
|
129
|
-
padding: "40px",
|
|
130
|
-
height: "100%",
|
|
131
|
-
width: "100%"
|
|
132
|
-
}, children: [
|
|
133
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "dms-loading-spinner", style: {
|
|
134
|
-
width: "40px",
|
|
135
|
-
height: "40px",
|
|
136
|
-
border: "3px solid #f3f3f3",
|
|
137
|
-
borderTop: "3px solid #3498db",
|
|
138
|
-
borderRadius: "50%",
|
|
139
|
-
animation: "spin 1s linear infinite"
|
|
140
|
-
} }),
|
|
141
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "style", { children: `
|
|
142
|
-
@keyframes spin {
|
|
143
|
-
0% { transform: rotate(0deg); }
|
|
144
|
-
100% { transform: rotate(360deg); }
|
|
145
|
-
}
|
|
146
|
-
` })
|
|
147
|
-
] });
|
|
148
|
-
var DefaultErrorComponent = ({ error, retry }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: {
|
|
149
|
-
display: "flex",
|
|
150
|
-
alignItems: "center",
|
|
151
|
-
justifyContent: "center",
|
|
152
|
-
padding: "40px",
|
|
153
|
-
border: "1px solid #ddd",
|
|
154
|
-
borderRadius: "4px",
|
|
155
|
-
backgroundColor: "#fff2f2"
|
|
156
|
-
}, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { style: { textAlign: "center" }, children: [
|
|
157
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { style: { color: "#d32f2f", marginBottom: "16px" }, children: "Failed to load file viewer" }),
|
|
158
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { style: { fontSize: "12px", color: "#666", marginBottom: "16px" }, children: error.message }),
|
|
159
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
160
|
-
"button",
|
|
161
|
-
{
|
|
162
|
-
onClick: retry,
|
|
163
|
-
style: {
|
|
164
|
-
padding: "8px 16px",
|
|
165
|
-
border: "1px solid #007bff",
|
|
166
|
-
borderRadius: "4px",
|
|
167
|
-
backgroundColor: "#007bff",
|
|
168
|
-
color: "#fff",
|
|
169
|
-
cursor: "pointer"
|
|
170
|
-
},
|
|
171
|
-
children: "Retry"
|
|
172
|
-
}
|
|
173
|
-
)
|
|
174
|
-
] }) });
|
|
175
|
-
var FileViewer = ({
|
|
176
|
-
file,
|
|
177
|
-
url,
|
|
178
|
-
fileName,
|
|
179
|
-
mimeType,
|
|
180
|
-
loading: externalLoading,
|
|
181
|
-
customRegistry,
|
|
182
|
-
loadingComponent: LoadingComponent = DefaultLoadingComponent,
|
|
183
|
-
errorComponent: ErrorComponent = DefaultErrorComponent,
|
|
184
|
-
initialSearchText,
|
|
185
|
-
initialSearchPages,
|
|
186
|
-
autoOpenSearch,
|
|
187
|
-
autoExecuteSearch,
|
|
188
|
-
onSearchComplete,
|
|
189
|
-
...props
|
|
190
|
-
}) => {
|
|
191
|
-
const [ViewerComponent, setViewerComponent] = _react.useState.call(void 0, null);
|
|
192
|
-
const [internalLoading, setInternalLoading] = _react.useState.call(void 0, false);
|
|
193
|
-
const [error, setError] = _react.useState.call(void 0, null);
|
|
194
|
-
const isLoading = externalLoading || internalLoading;
|
|
195
|
-
const resolvedFileInfo = _react.useMemo.call(void 0, () => {
|
|
196
|
-
let resolvedFileName = fileName;
|
|
197
|
-
if (!resolvedFileName && file) {
|
|
198
|
-
resolvedFileName = file.name;
|
|
199
|
-
}
|
|
200
|
-
if (!resolvedFileName && url) {
|
|
201
|
-
resolvedFileName = url.split("/").pop() || "unknown";
|
|
202
|
-
}
|
|
203
|
-
const extension = resolvedFileName ? _chunkOPJOCUSLjs.getFileExtension.call(void 0, resolvedFileName) : "";
|
|
204
|
-
let resolvedMimeType = mimeType;
|
|
205
|
-
if (!resolvedMimeType && file) {
|
|
206
|
-
resolvedMimeType = file.type;
|
|
207
|
-
}
|
|
208
|
-
if (!resolvedMimeType && extension) {
|
|
209
|
-
resolvedMimeType = _chunkOPJOCUSLjs.getMimeTypeFromExtension.call(void 0, extension);
|
|
210
|
-
}
|
|
211
|
-
const viewerInfo = getViewerInfo(extension);
|
|
212
|
-
return {
|
|
213
|
-
fileName: resolvedFileName,
|
|
214
|
-
extension,
|
|
215
|
-
mimeType: resolvedMimeType,
|
|
216
|
-
viewerInfo
|
|
217
|
-
};
|
|
218
|
-
}, [file, url, fileName, mimeType]);
|
|
219
|
-
const loadViewer = async () => {
|
|
220
|
-
if (internalLoading) return;
|
|
221
|
-
setInternalLoading(true);
|
|
222
|
-
setError(null);
|
|
223
|
-
try {
|
|
224
|
-
const component = await getViewerComponent(resolvedFileInfo.extension, customRegistry);
|
|
225
|
-
setViewerComponent(() => component);
|
|
226
|
-
} catch (err) {
|
|
227
|
-
setError(err instanceof Error ? err : new Error("Failed to load viewer"));
|
|
228
|
-
} finally {
|
|
229
|
-
setInternalLoading(false);
|
|
230
|
-
}
|
|
231
|
-
};
|
|
232
|
-
_react.useEffect.call(void 0, () => {
|
|
233
|
-
loadViewer();
|
|
234
|
-
}, [resolvedFileInfo.extension, customRegistry]);
|
|
235
|
-
const viewerProps = _react.useMemo.call(void 0, () => ({
|
|
236
|
-
file,
|
|
237
|
-
url,
|
|
238
|
-
fileName: resolvedFileInfo.fileName,
|
|
239
|
-
mimeType: resolvedFileInfo.mimeType,
|
|
240
|
-
fileSize: _optionalChain([file, 'optionalAccess', _ => _.size]),
|
|
241
|
-
initialSearchText,
|
|
242
|
-
initialSearchPages,
|
|
243
|
-
autoOpenSearch,
|
|
244
|
-
autoExecuteSearch,
|
|
245
|
-
onSearchComplete,
|
|
246
|
-
...props
|
|
247
|
-
}), [
|
|
248
|
-
file,
|
|
249
|
-
url,
|
|
250
|
-
resolvedFileInfo.fileName,
|
|
251
|
-
resolvedFileInfo.mimeType,
|
|
252
|
-
initialSearchText,
|
|
253
|
-
initialSearchPages,
|
|
254
|
-
autoOpenSearch,
|
|
255
|
-
autoExecuteSearch,
|
|
256
|
-
onSearchComplete,
|
|
257
|
-
props
|
|
258
|
-
]);
|
|
259
|
-
if (isLoading || !ViewerComponent) {
|
|
260
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
261
|
-
LoadingComponent,
|
|
262
|
-
{
|
|
263
|
-
fileName: resolvedFileInfo.fileName,
|
|
264
|
-
type: resolvedFileInfo.viewerInfo.type
|
|
265
|
-
}
|
|
266
|
-
);
|
|
267
|
-
}
|
|
268
|
-
if (error) {
|
|
269
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
270
|
-
ErrorComponent,
|
|
271
|
-
{
|
|
272
|
-
error,
|
|
273
|
-
retry: loadViewer
|
|
274
|
-
}
|
|
275
|
-
);
|
|
276
|
-
}
|
|
277
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ViewerComponent, { ...viewerProps });
|
|
278
|
-
};
|
|
279
|
-
|
|
280
|
-
// src/lock-types.ts
|
|
281
|
-
var LockModeType = /* @__PURE__ */ ((LockModeType2) => {
|
|
282
|
-
LockModeType2[LockModeType2["None"] = 0] = "None";
|
|
283
|
-
LockModeType2[LockModeType2["All"] = 1] = "All";
|
|
284
|
-
LockModeType2[LockModeType2["Include"] = 2] = "Include";
|
|
285
|
-
LockModeType2[LockModeType2["Exclude"] = 3] = "Exclude";
|
|
286
|
-
return LockModeType2;
|
|
287
|
-
})(LockModeType || {});
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
exports.AudioViewer = _chunk2BLHLWNNjs.AudioViewer; exports.DefaultViewer = _chunkD7SDEVDMjs.DefaultViewer; exports.FileIcon = _chunkEM63H4SAjs.FileIcon_default; exports.FileViewer = FileViewer; exports.ImageViewer = _chunkQV63FULEjs.ImageViewer; exports.LockModeType = LockModeType; exports.PDFViewer = _chunk7P6WEBHNjs.PDFViewer; exports.TIFFViewer = _chunkKQLIG6WKjs.TIFFViewer; exports.TextViewer = _chunkCIWCHSAAjs.TextViewer; exports.VideoViewer = _chunk6BRYDA3Bjs.VideoViewer; exports.dynamicViewerRegistry = dynamicViewerRegistry; exports.getFileExtension = _chunkOPJOCUSLjs.getFileExtension; exports.getMimeTypeFromExtension = _chunkOPJOCUSLjs.getMimeTypeFromExtension; exports.getViewerComponent = getViewerComponent; exports.getViewerInfo = getViewerInfo;
|
|
305
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/premkumar/Documents/GitHub/DMS-File-Viewers/packages/lib/dist/index.js","../src/components/FileViewer.tsx","../src/registry.ts","../src/lock-types.ts"],"names":["LockModeType"],"mappings":"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","file":"/home/premkumar/Documents/GitHub/DMS-File-Viewers/packages/lib/dist/index.js","sourcesContent":[null,"import React, { useState, useEffect, useMemo } from 'react';\nimport { FileViewerProps, ViewerInfo, FileViewerComponent } from '../types';\nimport { getFileExtension, getMimeTypeFromExtension } from '../utils/fileUtils';\nimport { getViewerComponent, getViewerInfo } from '../registry';\n\nexport interface FileViewerComponentProps extends Partial<FileViewerProps> {\n customRegistry?: Record<string, ViewerInfo>;\n loadingComponent?: React.ComponentType<{ fileName?: string; type?: string; }>;\n errorComponent?: React.ComponentType<{ error: Error; retry: () => void; }>;\n}\n\n// Default loading component\n// Default loading component\nconst DefaultLoadingComponent: React.FC<{ fileName?: string; type?: string; }> = ({ fileName, type }) => (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '40px',\n height: '100%',\n width: '100%'\n }}>\n <div className=\"dms-loading-spinner\" style={{\n width: '40px',\n height: '40px',\n border: '3px solid #f3f3f3',\n borderTop: '3px solid #3498db',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite'\n }} />\n <style>{`\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n);\n\n// Default error component\nconst DefaultErrorComponent: React.FC<{ error: Error; retry: () => void; }> = ({ error, retry }) => (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '40px',\n border: '1px solid #ddd',\n borderRadius: '4px',\n backgroundColor: '#fff2f2'\n }}>\n <div style={{ textAlign: 'center' }}>\n <p style={{ color: '#d32f2f', marginBottom: '16px' }}>\n Failed to load file viewer\n </p>\n <p style={{ fontSize: '12px', color: '#666', marginBottom: '16px' }}>\n {error.message}\n </p>\n <button\n onClick={retry}\n style={{\n padding: '8px 16px',\n border: '1px solid #007bff',\n borderRadius: '4px',\n backgroundColor: '#007bff',\n color: '#fff',\n cursor: 'pointer'\n }}\n >\n Retry\n </button>\n </div>\n </div>\n);\n\nexport const FileViewer: React.FC<FileViewerComponentProps> = ({\n file,\n url,\n fileName,\n mimeType,\n loading: externalLoading,\n customRegistry,\n loadingComponent: LoadingComponent = DefaultLoadingComponent,\n errorComponent: ErrorComponent = DefaultErrorComponent,\n initialSearchText,\n initialSearchPages,\n autoOpenSearch,\n autoExecuteSearch,\n onSearchComplete,\n ...props\n}) => {\n const [ViewerComponent, setViewerComponent] = useState<FileViewerComponent | null>(null);\n const [internalLoading, setInternalLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Combined loading state: either external loading or internal component loading\n const isLoading = externalLoading || internalLoading;\n\n // Resolve file information\n const resolvedFileInfo = useMemo(() => {\n // Determine file name\n let resolvedFileName = fileName;\n if (!resolvedFileName && file) {\n resolvedFileName = file.name;\n }\n if (!resolvedFileName && url) {\n resolvedFileName = url.split('/').pop() || 'unknown';\n }\n\n // Determine file extension\n const extension = resolvedFileName ? getFileExtension(resolvedFileName) : '';\n\n // Determine mime type\n let resolvedMimeType = mimeType;\n if (!resolvedMimeType && file) {\n resolvedMimeType = file.type;\n }\n if (!resolvedMimeType && extension) {\n resolvedMimeType = getMimeTypeFromExtension(extension);\n }\n\n // Get viewer info\n const viewerInfo = getViewerInfo(extension);\n\n return {\n fileName: resolvedFileName,\n extension,\n mimeType: resolvedMimeType,\n viewerInfo\n };\n }, [file, url, fileName, mimeType]);\n\n // Load viewer component dynamically\n const loadViewer = async () => {\n if (internalLoading) return;\n\n setInternalLoading(true);\n setError(null);\n\n try {\n const component = await getViewerComponent(resolvedFileInfo.extension, customRegistry);\n setViewerComponent(() => component);\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to load viewer'));\n } finally {\n setInternalLoading(false);\n }\n };\n\n // Load viewer when file extension changes\n useEffect(() => {\n loadViewer();\n }, [resolvedFileInfo.extension, customRegistry]);\n\n // Prepare props for the viewer\n const viewerProps = useMemo(() => ({\n file,\n url,\n fileName: resolvedFileInfo.fileName,\n mimeType: resolvedFileInfo.mimeType,\n fileSize: file?.size,\n initialSearchText,\n initialSearchPages,\n autoOpenSearch,\n autoExecuteSearch,\n onSearchComplete,\n ...props\n }), [\n file,\n url,\n resolvedFileInfo.fileName,\n resolvedFileInfo.mimeType,\n initialSearchText,\n initialSearchPages,\n autoOpenSearch,\n autoExecuteSearch,\n onSearchComplete,\n props\n ]);\n\n // Show loading state\n if (isLoading || !ViewerComponent) {\n return (\n <LoadingComponent\n fileName={resolvedFileInfo.fileName}\n type={resolvedFileInfo.viewerInfo.type}\n />\n );\n }\n\n // Show error state\n if (error) {\n return (\n <ErrorComponent\n error={error}\n retry={loadViewer}\n />\n );\n }\n\n // Render the loaded viewer component\n return <ViewerComponent {...viewerProps} />;\n};","import { DynamicViewerRegistry, ViewerInfo, FileViewerComponent } from './types';\n\n// Dynamic import functions for each viewer type\nconst loadTextViewer = () => import('./components/viewers/TextViewer').then(m => ({ default: m.TextViewer }));\nconst loadImageViewer = () => import('./components/viewers/ImageViewer').then(m => ({ default: m.ImageViewer }));\nconst loadPDFViewer = () => import('./components/viewers/PDFViewer').then(m => ({ default: m.PDFViewer }));\nconst loadVideoViewer = () => import('./components/viewers/VideoViewer').then(m => ({ default: m.VideoViewer }));\nconst loadAudioViewer = () => import('./components/viewers/AudioViewer').then(m => ({ default: m.AudioViewer }));\nconst loadTIFFViewer = () => import('./components/viewers/TIFFViewer').then(m => ({ default: m.TIFFViewer }));\nconst loadDefaultViewer = () => import('./components/viewers/DefaultViewer').then(m => ({ default: m.DefaultViewer }));\n\n// Registry mapping file extensions to viewer info\nexport const dynamicViewerRegistry: Record<string, ViewerInfo> = {\n // Text files\n 'txt': { type: 'text', loader: loadTextViewer },\n 'json': { type: 'text', loader: loadTextViewer },\n 'xml': { type: 'text', loader: loadTextViewer },\n 'csv': { type: 'text', loader: loadTextViewer },\n 'md': { type: 'text', loader: loadTextViewer },\n 'js': { type: 'text', loader: loadTextViewer },\n 'jsx': { type: 'text', loader: loadTextViewer },\n 'ts': { type: 'text', loader: loadTextViewer },\n 'tsx': { type: 'text', loader: loadTextViewer },\n 'css': { type: 'text', loader: loadTextViewer },\n 'scss': { type: 'text', loader: loadTextViewer },\n 'html': { type: 'text', loader: loadTextViewer },\n 'py': { type: 'text', loader: loadTextViewer },\n 'java': { type: 'text', loader: loadTextViewer },\n 'cpp': { type: 'text', loader: loadTextViewer },\n 'c': { type: 'text', loader: loadTextViewer },\n 'php': { type: 'text', loader: loadTextViewer },\n 'rb': { type: 'text', loader: loadTextViewer },\n 'go': { type: 'text', loader: loadTextViewer },\n 'rs': { type: 'text', loader: loadTextViewer },\n 'sql': { type: 'text', loader: loadTextViewer },\n 'yaml': { type: 'text', loader: loadTextViewer },\n 'yml': { type: 'text', loader: loadTextViewer },\n\n // Images\n 'jpg': { type: 'image', loader: loadImageViewer },\n 'jpeg': { type: 'image', loader: loadImageViewer },\n 'png': { type: 'image', loader: loadImageViewer },\n 'gif': { type: 'image', loader: loadImageViewer },\n 'svg': { type: 'image', loader: loadImageViewer },\n 'webp': { type: 'image', loader: loadImageViewer },\n 'bmp': { type: 'image', loader: loadImageViewer },\n 'ico': { type: 'image', loader: loadImageViewer },\n 'tif': { type: 'tiff', loader: loadTIFFViewer },\n 'tiff': { type: 'tiff', loader: loadTIFFViewer },\n\n // PDF\n 'pdf': { type: 'pdf', loader: loadPDFViewer },\n\n // Videos\n 'mp4': { type: 'video', loader: loadVideoViewer },\n 'webm': { type: 'video', loader: loadVideoViewer },\n 'ogg': { type: 'video', loader: loadVideoViewer },\n 'avi': { type: 'video', loader: loadVideoViewer },\n 'mov': { type: 'video', loader: loadVideoViewer },\n 'wmv': { type: 'video', loader: loadVideoViewer },\n 'flv': { type: 'video', loader: loadVideoViewer },\n 'mkv': { type: 'video', loader: loadVideoViewer },\n\n // Audio\n 'mp3': { type: 'audio', loader: loadAudioViewer },\n 'wav': { type: 'audio', loader: loadAudioViewer },\n 'm4a': { type: 'audio', loader: loadAudioViewer },\n 'flac': { type: 'audio', loader: loadAudioViewer },\n 'aac': { type: 'audio', loader: loadAudioViewer },\n 'oga': { type: 'audio', loader: loadAudioViewer },\n};\n\n// Cache to store loaded components\nconst componentCache = new Map<string, FileViewerComponent>();\n\nexport const getViewerInfo = (extension: string): ViewerInfo => {\n const ext = extension.toLowerCase();\n return dynamicViewerRegistry[ext] || { type: 'default', loader: loadDefaultViewer };\n};\n\nexport const getViewerComponent = async (\n extension: string,\n customRegistry?: Record<string, ViewerInfo>\n): Promise<FileViewerComponent> => {\n const ext = extension.toLowerCase();\n\n // Check cache first\n if (componentCache.has(ext)) {\n return componentCache.get(ext)!;\n }\n\n // Get viewer info from registry\n const registry = { ...dynamicViewerRegistry, ...customRegistry };\n const viewerInfo = registry[ext] || { type: 'default', loader: loadDefaultViewer };\n\n try {\n // Dynamically import the component\n const { default: Component } = await viewerInfo.loader();\n\n // Cache the loaded component\n componentCache.set(ext, Component);\n\n return Component;\n } catch (error) {\n // Fallback to default viewer on error\n if (!componentCache.has('default')) {\n const { default: DefaultComponent } = await loadDefaultViewer();\n componentCache.set('default', DefaultComponent);\n }\n\n return componentCache.get('default')!;\n }\n};","/**\n * Local shim for @embedpdf/plugin-annotation v2.14.1 lock-mode types.\n *\n * Once @cannymindstech/pdf-viewer @ 0.7.0 is published with its own re-exports\n * of these from @embedpdf/plugin-annotation, this file should be deleted and\n * src/index.ts switched back to:\n *\n * export { LockModeType } from '@cannymindstech/pdf-viewer';\n * export type { LockMode, PdfAnnotationFlagName } from '@cannymindstech/pdf-viewer';\n *\n * Numeric values intentionally match the upstream enum so the shim is wire-\n * compatible with the engine even before the upstream bump.\n */\n\nexport enum LockModeType {\n None = 0,\n All = 1,\n Include = 2,\n Exclude = 3,\n}\n\nexport type LockMode =\n | { type: LockModeType.None }\n | { type: LockModeType.All }\n | { type: LockModeType.Include; categories: string[] }\n | { type: LockModeType.Exclude; categories: string[] };\n\n/**\n * PDF annotation flag names recognized by @embedpdf/plugin-annotation v2.14.1.\n * `lockedContents` is new in 2.14.1; older runtimes silently ignore it.\n */\nexport type PdfAnnotationFlagName =\n | 'invisible'\n | 'hidden'\n | 'print'\n | 'noZoom'\n | 'noRotate'\n | 'noView'\n | 'readOnly'\n | 'locked'\n | 'toggleNoView'\n | 'lockedContents';\n"]}
|