@ttt-productions/media-viewer 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ import type { MediaViewerBaseProps } from "./types";
2
+ export declare function AudioViewer(props: MediaViewerBaseProps): import("react/jsx-runtime").JSX.Element | null;
3
+ //# sourceMappingURL=audio-viewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-viewer.d.ts","sourceRoot":"","sources":["../src/audio-viewer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,kDAkCtD"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { MediaFallbackLink, shouldShowFallback } from "./fallback";
4
+ export function AudioViewer(props) {
5
+ const { url, className, mediaClassName, onError, fallbackMode = "link", fallbackLabel } = props;
6
+ const [failed, setFailed] = React.useState(false);
7
+ if (failed) {
8
+ return shouldShowFallback(fallbackMode) ? (_jsx("div", { className: className, children: _jsx(MediaFallbackLink, { url: url, label: fallbackLabel ?? "Open audio" }) })) : null;
9
+ }
10
+ return (_jsx("div", { className: className, children: _jsx("audio", { src: url, className: mediaClassName, controls: true, preload: "metadata", onError: (e) => {
11
+ setFailed(true);
12
+ onError?.(e);
13
+ } }) }));
14
+ }
15
+ //# sourceMappingURL=audio-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-viewer.js","sourceRoot":"","sources":["../src/audio-viewer.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,UAAU,WAAW,CAAC,KAA2B;IACrD,MAAM,EACJ,GAAG,EACH,SAAS,EACT,cAAc,EACd,OAAO,EACP,YAAY,GAAG,MAAM,EACrB,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACxC,cAAK,SAAS,EAAE,SAAS,YACvB,KAAC,iBAAiB,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,IAAI,YAAY,GAAI,GACjE,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,gBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,cAAc,EACzB,QAAQ,QACR,OAAO,EAAC,UAAU,EAClB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,GACD,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { MediaViewerBaseProps } from "./types";
2
+ export declare function MediaFallbackLink(props: {
3
+ url: string;
4
+ filename?: string;
5
+ className?: string;
6
+ label?: string;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ export declare function shouldShowFallback(mode: MediaViewerBaseProps["fallbackMode"]): boolean;
9
+ //# sourceMappingURL=fallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../src/fallback.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,2CAcA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,CAAC,cAAc,CAAC,GAAG,OAAO,CAEtF"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function MediaFallbackLink(props) {
3
+ const { url, filename, className, label } = props;
4
+ return (_jsx("a", { href: url, target: "_blank", rel: "noreferrer", download: filename || undefined, className: className, children: label ?? "Download" }));
5
+ }
6
+ export function shouldShowFallback(mode) {
7
+ return mode !== "none";
8
+ }
9
+ //# sourceMappingURL=fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.tsx"],"names":[],"mappings":";AAGA,MAAM,UAAU,iBAAiB,CAAC,KAKjC;IACC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAElD,OAAO,CACL,YACE,IAAI,EAAE,GAAG,EACT,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,SAAS,EAAE,SAAS,YAEnB,KAAK,IAAI,UAAU,GAClB,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAA0C;IAC3E,OAAO,IAAI,KAAK,MAAM,CAAC;AACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MediaViewerBaseProps } from "./types";
2
+ export declare function ImageViewer(props: MediaViewerBaseProps): import("react/jsx-runtime").JSX.Element | null;
3
+ //# sourceMappingURL=image-viewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-viewer.d.ts","sourceRoot":"","sources":["../src/image-viewer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,kDAoCtD"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { MediaFallbackLink, shouldShowFallback } from "./fallback";
4
+ export function ImageViewer(props) {
5
+ const { url, alt, className, mediaClassName, onError, fallbackMode = "link", fallbackLabel } = props;
6
+ const [failed, setFailed] = React.useState(false);
7
+ if (failed) {
8
+ return shouldShowFallback(fallbackMode) ? (_jsx("div", { className: className, children: _jsx(MediaFallbackLink, { url: url, label: fallbackLabel ?? "Open image" }) })) : null;
9
+ }
10
+ return (_jsx("div", { className: className, children: _jsx("img", { src: url, alt: alt ?? "", loading: "lazy", decoding: "async", className: mediaClassName, onError: (e) => {
11
+ setFailed(true);
12
+ onError?.(e);
13
+ } }) }));
14
+ }
15
+ //# sourceMappingURL=image-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-viewer.js","sourceRoot":"","sources":["../src/image-viewer.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,UAAU,WAAW,CAAC,KAA2B;IACrD,MAAM,EACJ,GAAG,EACH,GAAG,EACH,SAAS,EACT,cAAc,EACd,OAAO,EACP,YAAY,GAAG,MAAM,EACrB,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACxC,cAAK,SAAS,EAAE,SAAS,YACvB,KAAC,iBAAiB,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,IAAI,YAAY,GAAI,GACjE,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,cACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,IAAI,EAAE,EACd,OAAO,EAAC,MAAM,EACd,QAAQ,EAAC,OAAO,EAChB,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,GACD,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./types";
2
+ export * from "./media-viewer";
3
+ export * from "./image-viewer";
4
+ export * from "./video-viewer";
5
+ export * from "./audio-viewer";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./types";
2
+ export * from "./media-viewer";
3
+ export * from "./image-viewer";
4
+ export * from "./video-viewer";
5
+ export * from "./audio-viewer";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { MediaViewerBaseProps } from "./types";
2
+ export declare function MediaViewer(props: MediaViewerBaseProps): import("react/jsx-runtime").JSX.Element | null;
3
+ /** Back-compat alias */
4
+ export declare const MediaPreview: typeof MediaViewer;
5
+ //# sourceMappingURL=media-viewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-viewer.d.ts","sourceRoot":"","sources":["../src/media-viewer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAmB,MAAM,SAAS,CAAC;AAcrE,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,kDA2BtD;AAED,wBAAwB;AACxB,eAAO,MAAM,YAAY,oBAAc,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { getSimplifiedMediaType } from "@ttt-productions/media-contracts";
3
+ import { MediaFallbackLink, shouldShowFallback } from "./fallback";
4
+ import { ImageViewer } from "./image-viewer";
5
+ import { VideoViewer } from "./video-viewer";
6
+ import { AudioViewer } from "./audio-viewer";
7
+ function inferType(props) {
8
+ if (props.type)
9
+ return props.type;
10
+ const hint = props.mime ?? props.name ?? props.url;
11
+ const simplified = getSimplifiedMediaType(hint);
12
+ return simplified;
13
+ }
14
+ export function MediaViewer(props) {
15
+ const { url, className, filename, fallbackMode = "link", fallbackLabel } = props;
16
+ const t = inferType(props);
17
+ if (t === "image")
18
+ return _jsx(ImageViewer, { ...props, type: "image" });
19
+ if (t === "video")
20
+ return _jsx(VideoViewer, { ...props, type: "video" });
21
+ if (t === "audio")
22
+ return _jsx(AudioViewer, { ...props, type: "audio" });
23
+ // future: pdf
24
+ // if (t === "pdf") ...
25
+ return shouldShowFallback(fallbackMode) ? (_jsx("div", { className: className, children: _jsx(MediaFallbackLink, { url: url, filename: filename, label: fallbackLabel ?? "Download" }) })) : null;
26
+ }
27
+ /** Back-compat alias */
28
+ export const MediaPreview = MediaViewer;
29
+ //# sourceMappingURL=media-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-viewer.js","sourceRoot":"","sources":["../src/media-viewer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAI1E,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,SAAS,SAAS,CAAC,KAAmE;IACpF,IAAI,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAElC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC;IACnD,MAAM,UAAU,GAAwB,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAA2B;IACrD,MAAM,EACJ,GAAG,EACH,SAAS,EACT,QAAQ,EACR,YAAY,GAAG,MAAM,EACrB,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE3B,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,KAAC,WAAW,OAAK,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CAAC;IAClE,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,KAAC,WAAW,OAAK,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CAAC;IAClE,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,KAAC,WAAW,OAAK,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CAAC;IAElE,cAAc;IACd,uBAAuB;IAEvB,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACxC,cAAK,SAAS,EAAE,SAAS,YACvB,KAAC,iBAAiB,IAChB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,IAAI,UAAU,GAClC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,wBAAwB;AACxB,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { SimplifiedMediaType } from "@ttt-productions/media-contracts";
2
+ export type MediaViewerType = SimplifiedMediaType | "pdf";
3
+ export type MediaViewerFallbackMode = "link" | "none";
4
+ export interface MediaViewerBaseProps {
5
+ url: string;
6
+ /** Optional explicit type; otherwise inferred from mime/name/url. */
7
+ type?: MediaViewerType;
8
+ /** Optional hints for inference. */
9
+ mime?: string;
10
+ name?: string;
11
+ /** Wrapper class */
12
+ className?: string;
13
+ /** Media element class */
14
+ mediaClassName?: string;
15
+ /** For images */
16
+ alt?: string;
17
+ /** For link fallback */
18
+ filename?: string;
19
+ /** Called when the underlying media element errors. */
20
+ onError?: (error: unknown) => void;
21
+ /** Generic fallback behavior when type is unknown or render fails. */
22
+ fallbackMode?: MediaViewerFallbackMode;
23
+ /** Link label override */
24
+ fallbackLabel?: string;
25
+ poster?: string;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,KAAK,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IAEZ,qEAAqE;IACrE,IAAI,CAAC,EAAE,eAAe,CAAC;IAEvB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,0BAA0B;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,iBAAiB;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,uDAAuD;IACvD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnC,sEAAsE;IACtE,YAAY,CAAC,EAAE,uBAAuB,CAAC;IAEvC,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { MediaViewerBaseProps } from "./types";
2
+ export declare function VideoViewer(props: MediaViewerBaseProps): import("react/jsx-runtime").JSX.Element | null;
3
+ //# sourceMappingURL=video-viewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-viewer.d.ts","sourceRoot":"","sources":["../src/video-viewer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,kDAoCtD"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { MediaFallbackLink, shouldShowFallback } from "./fallback";
4
+ export function VideoViewer(props) {
5
+ const { url, className, mediaClassName, onError, fallbackMode = "link", fallbackLabel } = props;
6
+ const [failed, setFailed] = React.useState(false);
7
+ if (failed) {
8
+ return shouldShowFallback(fallbackMode) ? (_jsx("div", { className: className, children: _jsx(MediaFallbackLink, { url: url, label: fallbackLabel ?? "Open video" }) })) : null;
9
+ }
10
+ return (_jsx("div", { className: className, children: _jsx("video", { src: url, className: mediaClassName, controls: true, preload: "metadata", poster: props.poster, playsInline: true, onError: (e) => {
11
+ setFailed(true);
12
+ onError?.(e);
13
+ } }) }));
14
+ }
15
+ //# sourceMappingURL=video-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-viewer.js","sourceRoot":"","sources":["../src/video-viewer.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,UAAU,WAAW,CAAC,KAA2B;IACrD,MAAM,EACJ,GAAG,EACH,SAAS,EACT,cAAc,EACd,OAAO,EACP,YAAY,GAAG,MAAM,EACrB,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACxC,cAAK,SAAS,EAAE,SAAS,YACvB,KAAC,iBAAiB,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,IAAI,YAAY,GAAI,GACjE,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,gBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,cAAc,EACzB,QAAQ,QACR,OAAO,EAAC,UAAU,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,WAAW,QACX,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,GACD,GACE,CACP,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@ttt-productions/media-viewer",
3
+ "version": "0.0.1",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "git+https://github.com/ttt-productions/ttt-packages.git",
7
+ "directory": "packages/media-viewer"
8
+ },
9
+ "type": "module",
10
+ "main": "dist/index.js",
11
+ "module": "dist/index.js",
12
+ "types": "dist/index.d.ts",
13
+ "sideEffects": false,
14
+ "files": ["dist"],
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/index.js"
19
+ }
20
+ },
21
+ "scripts": {
22
+ "build": "tsc",
23
+ "clean": "rm -rf dist *.tsbuildinfo",
24
+ "typecheck": "tsc --noEmit",
25
+ "prepublishOnly": "npm run clean && npm run build"
26
+ },
27
+ "peerDependencies": {
28
+ "@ttt-productions/media-contracts": ">=0.0.0",
29
+ "react": ">=18.0.0",
30
+ "react-dom": ">=18.0.0"
31
+ },
32
+ "devDependencies": {
33
+ "typescript": "^5.8.3"
34
+ },
35
+ "author": "DJ (TTT Productions)",
36
+ "license": "MIT"
37
+ }
38
+