@touchcastllc/napster-companion-api 1.0.0-alpha.8 → 1.0.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 (115) hide show
  1. package/README.md +733 -531
  2. package/lib/CompanionApiProvider.d.ts +21 -0
  3. package/lib/CompanionApiProvider.d.ts.map +1 -0
  4. package/lib/assets/fonts/segoe/SegoeUI-Bold.eot +0 -0
  5. package/lib/assets/fonts/segoe/SegoeUI-Bold.svg +1541 -0
  6. package/lib/assets/fonts/segoe/SegoeUI-Bold.ttf +0 -0
  7. package/lib/assets/fonts/segoe/SegoeUI-Bold.woff +0 -0
  8. package/lib/assets/fonts/segoe/SegoeUI-Bold.woff2 +0 -0
  9. package/lib/assets/fonts/segoe/SegoeUI.eot +0 -0
  10. package/lib/assets/fonts/segoe/SegoeUI.svg +1521 -0
  11. package/lib/assets/fonts/segoe/SegoeUI.ttf +0 -0
  12. package/lib/assets/fonts/segoe/SegoeUI.woff +0 -0
  13. package/lib/assets/fonts/segoe/SegoeUI.woff2 +0 -0
  14. package/lib/components/Avatar/Avatar.d.ts +11 -0
  15. package/lib/components/Avatar/Avatar.d.ts.map +1 -0
  16. package/lib/components/Avatar/index.d.ts +2 -30
  17. package/lib/components/Avatar/index.d.ts.map +1 -0
  18. package/lib/components/Embed/Embed.d.ts +16 -0
  19. package/lib/components/Embed/Embed.d.ts.map +1 -0
  20. package/lib/components/Embed/index.d.ts +2 -20
  21. package/lib/components/Embed/index.d.ts.map +1 -0
  22. package/lib/components/InactiveOverlay/InactiveOverlay.d.ts +12 -0
  23. package/lib/components/InactiveOverlay/InactiveOverlay.d.ts.map +1 -0
  24. package/lib/components/InactiveOverlay/index.d.ts +2 -15
  25. package/lib/components/InactiveOverlay/index.d.ts.map +1 -0
  26. package/lib/components/Preview/Preview.d.ts +13 -0
  27. package/lib/components/Preview/Preview.d.ts.map +1 -0
  28. package/lib/components/Preview/index.d.ts +2 -18
  29. package/lib/components/Preview/index.d.ts.map +1 -0
  30. package/lib/components/StyledTooltip/StyledTooltip.d.ts +12 -0
  31. package/lib/components/StyledTooltip/StyledTooltip.d.ts.map +1 -0
  32. package/lib/components/StyledTooltip/index.d.ts +2 -16
  33. package/lib/components/StyledTooltip/index.d.ts.map +1 -0
  34. package/lib/components/WaveForm/WaveForm.d.ts +16 -0
  35. package/lib/components/WaveForm/WaveForm.d.ts.map +1 -0
  36. package/lib/components/WaveForm/index.d.ts +2 -18
  37. package/lib/components/WaveForm/index.d.ts.map +1 -0
  38. package/lib/components/index.d.ts +7 -2
  39. package/lib/components/index.d.ts.map +1 -0
  40. package/lib/hooks/index.d.ts +5 -0
  41. package/lib/hooks/index.d.ts.map +1 -0
  42. package/lib/hooks/useApp.d.ts +25 -0
  43. package/lib/hooks/useApp.d.ts.map +1 -0
  44. package/lib/hooks/useAvatar.d.ts +88 -0
  45. package/lib/hooks/useAvatar.d.ts.map +1 -0
  46. package/lib/hooks/useMicrophones.d.ts +8 -0
  47. package/lib/hooks/useMicrophones.d.ts.map +1 -0
  48. package/lib/hooks/useWebRTC.d.ts +22 -0
  49. package/lib/hooks/useWebRTC.d.ts.map +1 -0
  50. package/lib/index-legacy.d.ts +27 -0
  51. package/lib/index-legacy.d.ts.map +1 -0
  52. package/lib/index-legacy.esm.js +2 -0
  53. package/lib/index-legacy.esm.js.map +1 -0
  54. package/lib/index-legacy.js +2 -0
  55. package/lib/index-legacy.js.map +1 -0
  56. package/lib/index.css +1 -1
  57. package/lib/index.d.ts +14 -19
  58. package/lib/index.d.ts.map +1 -0
  59. package/lib/index.esm.js +2 -1
  60. package/lib/index.esm.js.map +1 -0
  61. package/lib/index.js +2 -1
  62. package/lib/index.js.map +1 -0
  63. package/lib/index.standalone.js +22599 -1
  64. package/lib/index.standalone.js.map +1 -0
  65. package/lib/index.standalone.min.js +11 -0
  66. package/lib/index.standalone.min.js.map +1 -0
  67. package/lib/index.umd.js +19928 -0
  68. package/lib/index.umd.js.map +1 -0
  69. package/lib/index.umd.min.js +11 -0
  70. package/lib/index.umd.min.js.map +1 -0
  71. package/lib/sdk-base-B2ct7PnW.js +7 -0
  72. package/lib/sdk-base-B2ct7PnW.js.map +1 -0
  73. package/lib/sdk-base-DLPLYGiY.js +7 -0
  74. package/lib/sdk-base-DLPLYGiY.js.map +1 -0
  75. package/lib/sdk-base.d.ts +69 -0
  76. package/lib/sdk-base.d.ts.map +1 -0
  77. package/lib/services/analytics.d.ts +41 -59
  78. package/lib/services/analytics.d.ts.map +1 -0
  79. package/lib/setupTests.d.ts +1 -0
  80. package/lib/setupTests.d.ts.map +1 -0
  81. package/lib/stores/hooks.d.ts +8 -0
  82. package/lib/stores/hooks.d.ts.map +1 -0
  83. package/lib/stores/index.d.ts +4 -3
  84. package/lib/stores/index.d.ts.map +1 -0
  85. package/lib/stores/middleware/featuresUpdateMiddleware.d.ts +1 -0
  86. package/lib/stores/middleware/featuresUpdateMiddleware.d.ts.map +1 -0
  87. package/lib/stores/slices/appSlice.d.ts +2 -2
  88. package/lib/stores/slices/appSlice.d.ts.map +1 -0
  89. package/lib/stores/slices/avatarSlice.d.ts +34 -3
  90. package/lib/stores/slices/avatarSlice.d.ts.map +1 -0
  91. package/lib/stores/store.d.ts +5 -4
  92. package/lib/stores/store.d.ts.map +1 -0
  93. package/lib/types/errors.d.ts +1 -0
  94. package/lib/types/errors.d.ts.map +1 -0
  95. package/lib/types/index.d.ts +34 -53
  96. package/lib/types/index.d.ts.map +1 -0
  97. package/lib/umd.d.ts +1 -0
  98. package/lib/umd.d.ts.map +1 -0
  99. package/lib/utils/index.d.ts +1 -4
  100. package/lib/utils/index.d.ts.map +1 -0
  101. package/package.json +23 -19
  102. package/lib/constants/events.d.ts +0 -49
  103. package/lib/constants/greenscreen.d.ts +0 -28
  104. package/lib/constants/index.d.ts +0 -6
  105. package/lib/constants/waveform.d.ts +0 -34
  106. package/lib/services/webrtc.d.ts +0 -26
  107. package/lib/stores/selectors.d.ts +0 -30
  108. package/lib/types/abstract-typing.d.ts +0 -35
  109. package/lib/types/analytics.d.ts +0 -95
  110. package/lib/utils/classnames.d.ts +0 -48
  111. package/lib/utils/debug.d.ts +0 -84
  112. package/lib/utils/domFactory.d.ts +0 -56
  113. package/lib/utils/greenscreen/GreenScreenProcessor.d.ts +0 -25
  114. package/lib/utils/greenscreen/index.d.ts +0 -1
  115. package/lib/utils/svg.d.ts +0 -30
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import "./Avatar.css";
3
+ import type { EventMessage } from "../../types";
4
+ export interface AvatarProps {
5
+ onData?: (data: EventMessage) => void;
6
+ onDestroy?: (cb?: () => void) => void;
7
+ onError?: (error: Error) => void;
8
+ showAvatarInactiveOverlay?: boolean;
9
+ }
10
+ export declare const Avatar: React.FC<AvatarProps>;
11
+ //# sourceMappingURL=Avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,cAAc,CAAC;AAStB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAggBxC,CAAC"}
@@ -1,30 +1,2 @@
1
- import "./Avatar.css";
2
- import { type WaveFormOptions } from "../WaveForm";
3
- import type { EventMessage, FeatureConfig, BaseController } from "../../types";
4
- export interface AvatarOptions {
5
- showAvatarInactiveOverlay?: boolean;
6
- onAvatarReady?: (isReady?: boolean) => void;
7
- onData?: (data: EventMessage) => void;
8
- onDestroy?: (cb?: () => void) => void;
9
- onError?: (error: Error) => void;
10
- onInactivityStatusChange?: (isInactive: boolean) => void;
11
- features?: Partial<FeatureConfig>;
12
- }
13
- export interface StreamsUpdate {
14
- videoStream?: MediaStream | null;
15
- audioStream?: MediaStream | null;
16
- userMicrophoneStream?: MediaStream | null;
17
- }
18
- export interface AvatarController extends BaseController<AvatarOptions> {
19
- updateStreams: (streams: StreamsUpdate) => void;
20
- updateWaveform: (opts: Partial<Pick<WaveFormOptions, "isMuted" | "isAvatarSpeaking" | "selectedMicrophone" | "userMicrophoneStream">>) => void;
21
- updateFeatures: (features: Partial<FeatureConfig>) => void;
22
- setAvatarReady: (ready: boolean) => void;
23
- handleMessage: (data: EventMessage) => void;
24
- }
25
- /**
26
- * Vanilla Avatar implementation.
27
- * Renders video->canvas with green-screen removal, mounts the WaveForm control bar,
28
- * and handles inactivity overlays and message processing.
29
- */
30
- export declare function createAvatar(mount: HTMLElement, options?: AvatarOptions): AvatarController;
1
+ export { Avatar } from "./Avatar";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ import "./Embed.css";
3
+ import "../../App.css";
4
+ import { type EventMessage } from "../../types";
5
+ export interface EmbedProps {
6
+ previewUrl?: string;
7
+ idleVideoUrl?: string;
8
+ className?: string;
9
+ startWithPreview?: boolean;
10
+ onData?: (data: EventMessage) => void;
11
+ onAvatarReady?: () => void;
12
+ onDestroy?: () => void;
13
+ onError?: (error: Error) => void;
14
+ }
15
+ export declare const Embed: React.NamedExoticComponent<EmbedProps>;
16
+ //# sourceMappingURL=Embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Embed.d.ts","sourceRoot":"","sources":["../../../src/components/Embed/Embed.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAIzD,OAAO,aAAa,CAAC;AAErB,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAoDD,eAAO,MAAM,KAAK,wCAQjB,CAAC"}
@@ -1,20 +1,2 @@
1
- import "./Embed.css";
2
- import "../../App.css";
3
- import type { EventMessage, FeatureConfig, BaseController } from "../../types";
4
- import type { StreamsUpdate } from "../Avatar";
5
- export interface EmbedOptions {
6
- onData?: (data: EventMessage) => void;
7
- onAvatarReady?: (isReady?: boolean) => void;
8
- onDestroy?: (cb?: () => void) => void;
9
- onError?: (error: Error) => void;
10
- onInactivityStatusChange?: (isInactive: boolean) => void;
11
- features?: Partial<FeatureConfig>;
12
- }
13
- export interface EmbedController extends BaseController<EmbedOptions> {
14
- updateStreams: (streams: StreamsUpdate) => void;
15
- handleMessage: (data: EventMessage) => void;
16
- }
17
- /**
18
- * Vanilla Embed implementation that renders a simple live container with Avatar
19
- */
20
- export declare function createEmbed(mount: HTMLElement, options?: EmbedOptions): EmbedController;
1
+ export { Embed } from "./Embed";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Embed/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import "./InactiveOverlay.css";
3
+ interface InactiveOverlayProps {
4
+ duration?: number;
5
+ isInteractionNeeded?: boolean;
6
+ message?: string;
7
+ onContinue: () => void;
8
+ onEnd: () => void;
9
+ }
10
+ export declare const InactiveOverlay: React.FC<InactiveOverlayProps>;
11
+ export {};
12
+ //# sourceMappingURL=InactiveOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InactiveOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/InactiveOverlay/InactiveOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,uBAAuB,CAAC;AAE/B,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAsE1D,CAAC"}
@@ -1,15 +1,2 @@
1
- import type { BaseController } from "../../types";
2
- import "./InactiveOverlay.css";
3
- export interface InactiveOverlayOptions {
4
- duration?: number;
5
- isInteractionNeeded?: boolean;
6
- message?: string;
7
- onContinue: () => void;
8
- onEnd: () => void;
9
- }
10
- export type InactiveOverlayController = BaseController<InactiveOverlayOptions>;
11
- /**
12
- * Vanilla InactiveOverlay implementation.
13
- * Renders a countdown overlay and invokes callbacks on End/Continue.
14
- */
15
- export declare function createInactiveOverlay(mount: HTMLElement, options: InactiveOverlayOptions): InactiveOverlayController;
1
+ export { InactiveOverlay } from "./InactiveOverlay";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/InactiveOverlay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import "./Preview.css";
3
+ export interface PreviewProps {
4
+ previewUrl?: string;
5
+ idleVideoUrl?: string;
6
+ isManualStartRequired?: boolean;
7
+ onStartClick?: () => void;
8
+ setPreviewVideoLoaded?: (videoLoad: boolean) => void;
9
+ previewVideoLoaded?: boolean;
10
+ isLoading?: boolean;
11
+ }
12
+ export declare const Preview: React.FC<PreviewProps>;
13
+ //# sourceMappingURL=Preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preview.d.ts","sourceRoot":"","sources":["../../../src/components/Preview/Preview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,eAAe,CAAC;AAsBvB,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA0S1C,CAAC"}
@@ -1,18 +1,2 @@
1
- import "./Preview.css";
2
- export interface PreviewOptions {
3
- previewUrl?: string;
4
- idleVideoUrl?: string;
5
- onStartClick: () => void;
6
- isLoading?: boolean;
7
- onVideoLoaded?: (loaded: boolean) => void;
8
- shouldAnimate?: boolean;
9
- }
10
- export interface PreviewController {
11
- update: (opts: Partial<PreviewOptions>) => void;
12
- destroy: () => void;
13
- }
14
- /**
15
- * Vanilla Preview implementation. Renders a canvas over an optional looping video
16
- * and exposes a \"Start\" button. Designed to be lightweight and framework-free.
17
- */
18
- export declare function createPreview(mount: HTMLElement, options: PreviewOptions): PreviewController;
1
+ export { Preview } from "./Preview";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Preview/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import "./StyledTooltip.css";
3
+ type Placement = "top" | "bottom" | "left" | "right";
4
+ interface TooltipProps {
5
+ children: React.ReactElement;
6
+ content: React.ReactNode;
7
+ placement?: Placement;
8
+ }
9
+ declare const Tooltip: React.NamedExoticComponent<TooltipProps>;
10
+ declare const renderTooltip: (tooltipText: React.ReactNode) => () => React.ReactNode;
11
+ export { Tooltip, renderTooltip };
12
+ //# sourceMappingURL=StyledTooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyledTooltip.d.ts","sourceRoot":"","sources":["../../../src/components/StyledTooltip/StyledTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAI9E,OAAO,qBAAqB,CAAC;AAE7B,KAAK,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAErD,UAAU,YAAY;IACpB,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAqHD,QAAA,MAAM,OAAO,0CAAyB,CAAC;AAGvC,QAAA,MAAM,aAAa,GAAI,aAAa,KAAK,CAAC,SAAS,0BAAsB,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,16 +1,2 @@
1
- import { BaseController } from "../../types";
2
- import "./StyledTooltip.css";
3
- export type Placement = "top" | "bottom" | "left" | "right";
4
- export interface AttachTooltipOptions {
5
- content: string | Node;
6
- placement?: Placement;
7
- }
8
- export interface TooltipController extends BaseController<AttachTooltipOptions> {
9
- show: () => void;
10
- hide: () => void;
11
- }
12
- /**
13
- * Vanilla tooltip attachment helper.
14
- * Attaches hover listeners to the trigger element and renders a tooltip into document.body.
15
- */
16
- export declare function attachTooltip(trigger: HTMLElement, { content, placement }: AttachTooltipOptions): TooltipController;
1
+ export { Tooltip } from "./StyledTooltip";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StyledTooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ import "./WaveForm.css";
3
+ export interface WaveFormProps {
4
+ isAvatarSpeaking?: boolean;
5
+ isMuted: boolean;
6
+ selectedMicrophone?: MediaDeviceInfo | null;
7
+ userMicrophoneStream: MediaStream | null;
8
+ toggleMute?: () => void;
9
+ handleEnd?: () => void;
10
+ onStopTalking?: () => void;
11
+ }
12
+ export interface WebkitWindow extends Window {
13
+ webkitAudioContext: typeof AudioContext;
14
+ }
15
+ export declare const WaveForm: React.FC<WaveFormProps>;
16
+ //# sourceMappingURL=WaveForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaveForm.d.ts","sourceRoot":"","sources":["../../../src/components/WaveForm/WaveForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,gBAAgB,CAAC;AAIxB,MAAM,WAAW,aAAa;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5C,oBAAoB,EAAE,WAAW,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,YAAa,SAAQ,MAAM;IAC1C,kBAAkB,EAAE,OAAO,YAAY,CAAC;CACzC;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAmU5C,CAAC"}
@@ -1,18 +1,2 @@
1
- import "./WaveForm.css";
2
- import { BaseController } from "../../types";
3
- export interface WaveFormOptions {
4
- isAvatarSpeaking?: boolean;
5
- isMuted: boolean;
6
- selectedMicrophone?: MediaDeviceInfo | null;
7
- userMicrophoneStream: MediaStream | null;
8
- toggleMute?: () => void;
9
- handleEnd?: () => void;
10
- onStopTalking?: () => void;
11
- features?: {
12
- waveform?: {
13
- enabled?: boolean;
14
- };
15
- };
16
- }
17
- export type WaveFormController = BaseController<WaveFormOptions>;
18
- export declare function createWaveForm(mount: HTMLElement, options: WaveFormOptions): WaveFormController;
1
+ export { WaveForm } from "./WaveForm";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/WaveForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -1,2 +1,7 @@
1
- export { createEmbed } from "./Embed";
2
- export type { EmbedOptions, EmbedController } from "./Embed";
1
+ export { Avatar } from "./Avatar";
2
+ export { Embed } from "./Embed";
3
+ export { InactiveOverlay } from "./InactiveOverlay";
4
+ export { Preview } from "./Preview";
5
+ export { Tooltip } from "./StyledTooltip";
6
+ export { WaveForm } from "./WaveForm";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { useApp } from "./useApp";
2
+ export { useAvatar } from "./useAvatar";
3
+ export { useMicrophones } from "./useMicrophones";
4
+ export { useWebRTC, type IUseWebRTCProps } from "./useWebRTC";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { FeatureConfig, Position } from "../types";
2
+ export declare const useApp: () => {
3
+ position: Position | undefined;
4
+ features: FeatureConfig;
5
+ showExperience: boolean;
6
+ setPosition: (position: Position) => {
7
+ payload: Position | undefined;
8
+ type: "app/setPosition";
9
+ };
10
+ setFeatures: (features: {
11
+ feature: keyof FeatureConfig;
12
+ config: FeatureConfig[keyof FeatureConfig];
13
+ }) => {
14
+ payload: {
15
+ feature: keyof FeatureConfig;
16
+ config: FeatureConfig[keyof FeatureConfig];
17
+ };
18
+ type: "app/setFeatures";
19
+ };
20
+ setShowExperience: (showExperience: boolean) => {
21
+ payload: boolean;
22
+ type: "app/setShowExperience";
23
+ };
24
+ };
25
+ //# sourceMappingURL=useApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApp.d.ts","sourceRoot":"","sources":["../../src/hooks/useApp.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,MAAM;;;;4BAYS,QAAQ;;;;4BACR;QACtB,OAAO,EAAE,MAAM,aAAa,CAAC;QAC7B,MAAM,EAAE,aAAa,CAAC,MAAM,aAAa,CAAC,CAAC;KAC5C;;;;;;;wCACmC,OAAO;;;;CAG9C,CAAC"}
@@ -0,0 +1,88 @@
1
+ import { AvatarState, Transcript } from "../stores";
2
+ export declare const useAvatar: () => {
3
+ dataChannel: RTCDataChannel | null;
4
+ muted: boolean;
5
+ sessionId: string | undefined;
6
+ avatarReady: boolean;
7
+ avatarId: string | undefined;
8
+ videoId: string | undefined;
9
+ customVoiceId: string | undefined;
10
+ defaultVoiceId: string | undefined;
11
+ connectionToken: string | undefined;
12
+ companionApiToken: string | undefined;
13
+ companionId: string | undefined;
14
+ baseUrl: string | undefined;
15
+ apiVersion: string | undefined;
16
+ providerConfig: {
17
+ type?: string;
18
+ voiceId?: string;
19
+ settings?: {
20
+ instructions?: string;
21
+ turnDetection?: {
22
+ threshold?: number;
23
+ prefix_padding_ms?: number;
24
+ silence_duration_ms?: number;
25
+ };
26
+ temperature?: number;
27
+ };
28
+ isGreenScreen?: boolean;
29
+ } | undefined;
30
+ transcript: Transcript | undefined;
31
+ setSessionId: (id: string | undefined) => {
32
+ payload: string | undefined;
33
+ type: "avatar/setSessionId";
34
+ };
35
+ setAvatarReady: (ready: boolean) => {
36
+ payload: boolean;
37
+ type: "avatar/setAvatarReady";
38
+ };
39
+ setDataChannel: (channel: AvatarState["dataChannel"]) => {
40
+ payload: RTCDataChannel | null;
41
+ type: "avatar/setDataChannel";
42
+ };
43
+ setAvatarId: (avatarId: AvatarState["avatarId"]) => {
44
+ payload: string | undefined;
45
+ type: "avatar/setAvatarId";
46
+ };
47
+ setVideoId: (videoId: AvatarState["videoId"]) => {
48
+ payload: string | undefined;
49
+ type: "avatar/setVideoId";
50
+ };
51
+ setCustomVoiceId: (customVoiceId: AvatarState["customVoiceId"]) => {
52
+ payload: string | undefined;
53
+ type: "avatar/setCustomVoiceId";
54
+ };
55
+ setDefaultVoiceId: (defaultVoiceId: AvatarState["defaultVoiceId"]) => {
56
+ payload: string | undefined;
57
+ type: "avatar/setDefaultVoiceId";
58
+ };
59
+ setConnectionToken: (token: string | undefined) => {
60
+ payload: string | undefined;
61
+ type: "avatar/setConnectionToken";
62
+ };
63
+ setTokenGenerationParams: (params: {
64
+ companionApiToken?: string;
65
+ companionId?: string;
66
+ baseUrl?: string;
67
+ apiVersion?: string;
68
+ providerConfig?: AvatarState["providerConfig"];
69
+ }) => {
70
+ payload: {
71
+ companionApiToken?: string;
72
+ companionId?: string;
73
+ baseUrl?: string;
74
+ apiVersion?: string;
75
+ providerConfig?: AvatarState["providerConfig"];
76
+ };
77
+ type: "avatar/setTokenGenerationParams";
78
+ };
79
+ setMuted: (muted: boolean) => {
80
+ payload: boolean;
81
+ type: "avatar/setMuted";
82
+ };
83
+ addTranscript: (transcript?: Transcript) => {
84
+ payload: Transcript | undefined;
85
+ type: "avatar/addTranscript";
86
+ };
87
+ };
88
+ //# sourceMappingURL=useAvatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAvatar.d.ts","sourceRoot":"","sources":["../../src/hooks/useAvatar.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,WAAW,EAYX,UAAU,EAGX,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;wBAsBS,CAAC;yBAG9B,CAAA;yBAAsB,CAAA;iCACP,CAAC;mCAChB,CAAD;;uBAE8B,CAAC;;;;;uBA6CT,MAAM,GAAG,SAAS;;;;4BApB7B,OAAO;;;;8BAsBW,WAAW,CAAC,aAAa,CAAC;;;;4BAE5B,WAAW,CAAC,UAAU,CAAC;;;;0BAEzB,WAAW,CAAC,SAAS,CAAC;;;;sCAEV,WAAW,CAAC,eAAe,CAAC;;;;wCAE1B,WAAW,CAAC,gBAAgB,CAAC;;;;gCAErC,MAAM,GAAG,SAAS;;;;uCAEX;QACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;KAChD;;;;;;;;;;sBACiB,OAAO;;;;iCACI,UAAU;;;;CAG1C,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const useMicrophones: () => {
2
+ selectedMicrophone: MediaDeviceInfo | null;
3
+ muted: boolean;
4
+ stream: MediaStream | null;
5
+ connectMicrophone: () => Promise<MediaStream | null>;
6
+ muteMicrophone: (mute: boolean) => void;
7
+ };
8
+ //# sourceMappingURL=useMicrophones.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMicrophones.d.ts","sourceRoot":"","sources":["../../src/hooks/useMicrophones.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;;;;2BAsDK,OAAO;CAmCtC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type EventMessage } from "../types";
2
+ export interface IUseWebRTCProps {
3
+ userMicrophoneStream: MediaStream | null;
4
+ selectedMicrophone: MediaDeviceInfo | null;
5
+ onMessage?: (ev: EventMessage, dataChannel?: RTCDataChannel | null) => void;
6
+ onConnectionSuccess?: () => void;
7
+ onConnectionError?: (error: Error) => void;
8
+ maxReconnectAttempts?: number;
9
+ reconnectInterval?: number;
10
+ }
11
+ export declare const useWebRTC: ({ userMicrophoneStream, selectedMicrophone, onMessage, onConnectionSuccess, onConnectionError, maxReconnectAttempts, reconnectInterval, }: IUseWebRTCProps) => {
12
+ videoStream: MediaStream | undefined;
13
+ audioStream: MediaStream | undefined;
14
+ connectionStatus: "connecting" | "disconnected" | "connected" | "reconnecting";
15
+ dataChannel: RTCDataChannel | null;
16
+ closeConnection: () => void;
17
+ startConnection: (token: string) => Promise<void>;
18
+ forceReconnect: () => Promise<void>;
19
+ reconnectAttempts: number;
20
+ error: Error | null;
21
+ };
22
+ //# sourceMappingURL=useWebRTC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWebRTC.d.ts","sourceRoot":"","sources":["../../src/hooks/useWebRTC.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE,WAAW,GAAG,IAAI,CAAC;IACzC,kBAAkB,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5E,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC3C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAqBD,eAAO,MAAM,SAAS,GAAI,2IAQvB,eAAe;;;;;;6BA2SsB,MAAM;;;;CAgK7C,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { NapsterCompanionApiSDK } from "./types";
2
+ import { NapsterCompanionApiSdkBase, RenderStrategy } from "./sdk-base";
3
+ declare global {
4
+ interface Window {
5
+ NapsterCompanionApiSdk: NapsterCompanionApiSDK;
6
+ }
7
+ }
8
+ /**
9
+ * SDK implementation for React 16/17
10
+ * Extends base class and implements render strategy
11
+ */
12
+ declare class NapsterCompanionApiSdkLegacyImpl extends NapsterCompanionApiSdkBase {
13
+ private static instance;
14
+ protected renderStrategy: RenderStrategy;
15
+ private constructor();
16
+ static getInstance(): NapsterCompanionApiSdkLegacyImpl;
17
+ protected getReactVersion(): {
18
+ minVersion: number;
19
+ maxVersion: number;
20
+ };
21
+ }
22
+ declare const NapsterCompanionApiSdk: NapsterCompanionApiSdkLegacyImpl;
23
+ export { NapsterCompanionApiSdk };
24
+ export type { NapsterCompanionApiConfig, NapsterCompanionApiInstance, FeatureConfig, } from "./types";
25
+ export { Position } from "./types";
26
+ export default NapsterCompanionApiSdk;
27
+ //# sourceMappingURL=index-legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-legacy.d.ts","sourceRoot":"","sources":["../src/index-legacy.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGxE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,sBAAsB,EAAE,sBAAsB,CAAC;KAChD;CACF;AAwCD;;;GAGG;AACH,cAAM,gCAAiC,SAAQ,0BAA0B;IACvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiD;IAExE,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAEzC,OAAO;WAiBO,WAAW,IAAI,gCAAgC;IAQ7D,SAAS,CAAC,eAAe,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAMxE;AAGD,QAAA,MAAM,sBAAsB,kCAAiD,CAAC;AAU9E,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EACV,yBAAyB,EACzB,2BAA2B,EAC3B,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{_ as t,N as e}from"./sdk-base-B2ct7PnW.js";export{P as Position}from"./sdk-base-B2ct7PnW.js";import n from"react-dom";import"react";import"@reduxjs/toolkit";import"react-redux";import"react/jsx-runtime";var r=function(){this.render=function(t,e){var r="string"==typeof e?document.querySelector(e):e;if(!r)throw new Error("Container not found: ".concat("string"==typeof e?e:"HTMLElement"));n.render(t,r)},this.unmount=function(t){var e="string"==typeof t?document.querySelector(t):t;e&&n.unmountComponentAtNode(e)}},o=function(e){function o(){var t=e.call(this)||this;if(!n.render)throw new Error("Legacy SDK requires React 16 or 17 with ReactDOM.render. For React 18+, please use the standard import: import { NapsterCompanionApiSdk } from '@touchcastllc/napster-companion-api'");return t.renderStrategy=new r,t}return t(o,e),o.getInstance=function(){return o.instance||(o.instance=new o),o.instance},o.prototype.getReactVersion=function(){return{minVersion:16,maxVersion:17}},o.instance=null,o}(e).getInstance(),i=o;"undefined"!=typeof window&&(window.NapsterCompanionApiSdk=i);export{o as NapsterCompanionApiSdk,o as default};
2
+ //# sourceMappingURL=index-legacy.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-legacy.esm.js","sources":["../src/index-legacy.tsx"],"sourcesContent":["import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport type { NapsterCompanionApiSDK } from \"./types\";\nimport { NapsterCompanionApiSdkBase, RenderStrategy } from \"./sdk-base\";\n\n// Extend Window interface to include our SDK\ndeclare global {\n interface Window {\n NapsterCompanionApiSdk: NapsterCompanionApiSDK;\n }\n}\n\n/**\n * Legacy React 16/17 render strategy using deprecated ReactDOM.render API\n */\nclass LegacyRenderStrategy implements RenderStrategy {\n public render = (\n element: React.ReactElement,\n container: HTMLElement | string\n ): void => {\n const containerElement =\n typeof container === \"string\"\n ? document.querySelector(container)\n : container;\n\n if (!containerElement) {\n throw new Error(\n `Container not found: ${typeof container === \"string\" ? container : \"HTMLElement\"}`\n );\n }\n\n // @ts-expect-error - Using legacy ReactDOM.render for React 16/17 compatibility\n // eslint-disable-next-line react/no-deprecated\n ReactDOM.render(element, containerElement);\n };\n\n public unmount = (container: HTMLElement | string): void => {\n const containerElement =\n typeof container === \"string\"\n ? document.querySelector(container)\n : container;\n\n if (containerElement) {\n // @ts-expect-error - Using legacy unmountComponentAtNode for React 16/17 compatibility\n // eslint-disable-next-line react/no-deprecated\n ReactDOM.unmountComponentAtNode(containerElement);\n }\n };\n}\n\n/**\n * SDK implementation for React 16/17\n * Extends base class and implements render strategy\n */\nclass NapsterCompanionApiSdkLegacyImpl extends NapsterCompanionApiSdkBase {\n private static instance: NapsterCompanionApiSdkLegacyImpl | null = null;\n\n protected renderStrategy: RenderStrategy;\n\n private constructor() {\n super();\n\n // Validate that ReactDOM.render exists (React 16/17)\n // @ts-expect-error - Checking for legacy API\n // eslint-disable-next-line react/no-deprecated\n if (!ReactDOM.render) {\n throw new Error(\n \"Legacy SDK requires React 16 or 17 with ReactDOM.render. \" +\n \"For React 18+, please use the standard import: \" +\n \"import { NapsterCompanionApiSdk } from '@touchcastllc/napster-companion-api'\"\n );\n }\n\n this.renderStrategy = new LegacyRenderStrategy();\n }\n\n public static getInstance(): NapsterCompanionApiSdkLegacyImpl {\n if (!NapsterCompanionApiSdkLegacyImpl.instance) {\n NapsterCompanionApiSdkLegacyImpl.instance =\n new NapsterCompanionApiSdkLegacyImpl();\n }\n return NapsterCompanionApiSdkLegacyImpl.instance;\n }\n\n protected getReactVersion(): { minVersion: number; maxVersion: number } {\n return {\n minVersion: 16,\n maxVersion: 17,\n };\n }\n}\n\n// Create and export the singleton instance\nconst NapsterCompanionApiSdk = NapsterCompanionApiSdkLegacyImpl.getInstance();\n\n// Attach helpers onto the instance for UMD/global usage\nconst legacyWithHelper = NapsterCompanionApiSdk;\n\n// For UMD build\nif (typeof window !== \"undefined\") {\n window.NapsterCompanionApiSdk = legacyWithHelper;\n}\n\nexport { NapsterCompanionApiSdk };\nexport type {\n NapsterCompanionApiConfig,\n NapsterCompanionApiInstance,\n FeatureConfig,\n} from \"./types\";\nexport { Position } from \"./types\";\n\n// Default export for UMD builds\nexport default NapsterCompanionApiSdk;\n"],"names":["LegacyRenderStrategy","this","render","element","container","containerElement","document","querySelector","Error","ReactDOM","unmount","unmountComponentAtNode","NapsterCompanionApiSdk","_super","NapsterCompanionApiSdkLegacyImpl","_this","renderStrategy","__extends","getInstance","instance","prototype","getReactVersion","minVersion","maxVersion","NapsterCompanionApiSdkBase","legacyWithHelper","window"],"mappings":"kNAgBA,IAAAA,EAAA,WACSC,KAAAC,OAAS,SACdC,EACAC,GAEA,IAAMC,EACiB,iBAAdD,EACHE,SAASC,cAAcH,GACvBA,EAEN,IAAKC,EACH,MAAM,IAAIG,MACR,+BAA6C,iBAAdJ,EAAyBA,EAAY,gBAMxEK,EAASP,OAAOC,EAASE,EAC3B,EAEOJ,KAAAS,QAAU,SAACN,GAChB,IAAMC,EACiB,iBAAdD,EACHE,SAASC,cAAcH,GACvBA,EAEFC,GAGFI,EAASE,uBAAuBN,EAEpC,CACF,EA6CMO,EAvCN,SAAAC,GAKE,SAAAC,IACE,IAAAC,EAAAF,cAAOZ,KAKP,IAAKQ,EAASP,OACZ,MAAM,IAAIM,MACR,+LAMJO,EAAKC,eAAiB,IAAIhB,GAC5B,CAgBF,OApC+CiB,EAAAH,EAAAD,GAsB/BC,EAAAI,YAAd,WAKE,OAJKJ,EAAiCK,WACpCL,EAAiCK,SAC/B,IAAIL,GAEDA,EAAiCK,QAC1C,EAEUL,EAAAM,UAAAC,gBAAV,WACE,MAAO,CACLC,WAAY,GACZC,WAAY,GAEhB,EAlCeT,EAAAK,SAAoD,KAmCrEL,EApCA,CAA+CU,GAuCiBN,cAG1DO,EAAmBb,EAGH,oBAAXc,SACTA,OAAOd,uBAAyBa"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./sdk-base-DLPLYGiY.js"),t=require("react-dom");require("react"),require("@reduxjs/toolkit"),require("react-redux"),require("react/jsx-runtime");var r=function(){this.render=function(e,r){var n="string"==typeof r?document.querySelector(r):r;if(!n)throw new Error("Container not found: ".concat("string"==typeof r?r:"HTMLElement"));t.render(e,n)},this.unmount=function(e){var r="string"==typeof e?document.querySelector(e):e;r&&t.unmountComponentAtNode(r)}},n=function(n){function o(){var e=n.call(this)||this;if(!t.render)throw new Error("Legacy SDK requires React 16 or 17 with ReactDOM.render. For React 18+, please use the standard import: import { NapsterCompanionApiSdk } from '@touchcastllc/napster-companion-api'");return e.renderStrategy=new r,e}return e.__extends(o,n),o.getInstance=function(){return o.instance||(o.instance=new o),o.instance},o.prototype.getReactVersion=function(){return{minVersion:16,maxVersion:17}},o.instance=null,o}(e.NapsterCompanionApiSdkBase).getInstance(),o=n;"undefined"!=typeof window&&(window.NapsterCompanionApiSdk=o),Object.defineProperty(exports,"Position",{enumerable:!0,get:function(){return e.Position}}),exports.NapsterCompanionApiSdk=n,exports.default=n;
2
+ //# sourceMappingURL=index-legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-legacy.js","sources":["../src/index-legacy.tsx"],"sourcesContent":["import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport type { NapsterCompanionApiSDK } from \"./types\";\nimport { NapsterCompanionApiSdkBase, RenderStrategy } from \"./sdk-base\";\n\n// Extend Window interface to include our SDK\ndeclare global {\n interface Window {\n NapsterCompanionApiSdk: NapsterCompanionApiSDK;\n }\n}\n\n/**\n * Legacy React 16/17 render strategy using deprecated ReactDOM.render API\n */\nclass LegacyRenderStrategy implements RenderStrategy {\n public render = (\n element: React.ReactElement,\n container: HTMLElement | string\n ): void => {\n const containerElement =\n typeof container === \"string\"\n ? document.querySelector(container)\n : container;\n\n if (!containerElement) {\n throw new Error(\n `Container not found: ${typeof container === \"string\" ? container : \"HTMLElement\"}`\n );\n }\n\n // @ts-expect-error - Using legacy ReactDOM.render for React 16/17 compatibility\n // eslint-disable-next-line react/no-deprecated\n ReactDOM.render(element, containerElement);\n };\n\n public unmount = (container: HTMLElement | string): void => {\n const containerElement =\n typeof container === \"string\"\n ? document.querySelector(container)\n : container;\n\n if (containerElement) {\n // @ts-expect-error - Using legacy unmountComponentAtNode for React 16/17 compatibility\n // eslint-disable-next-line react/no-deprecated\n ReactDOM.unmountComponentAtNode(containerElement);\n }\n };\n}\n\n/**\n * SDK implementation for React 16/17\n * Extends base class and implements render strategy\n */\nclass NapsterCompanionApiSdkLegacyImpl extends NapsterCompanionApiSdkBase {\n private static instance: NapsterCompanionApiSdkLegacyImpl | null = null;\n\n protected renderStrategy: RenderStrategy;\n\n private constructor() {\n super();\n\n // Validate that ReactDOM.render exists (React 16/17)\n // @ts-expect-error - Checking for legacy API\n // eslint-disable-next-line react/no-deprecated\n if (!ReactDOM.render) {\n throw new Error(\n \"Legacy SDK requires React 16 or 17 with ReactDOM.render. \" +\n \"For React 18+, please use the standard import: \" +\n \"import { NapsterCompanionApiSdk } from '@touchcastllc/napster-companion-api'\"\n );\n }\n\n this.renderStrategy = new LegacyRenderStrategy();\n }\n\n public static getInstance(): NapsterCompanionApiSdkLegacyImpl {\n if (!NapsterCompanionApiSdkLegacyImpl.instance) {\n NapsterCompanionApiSdkLegacyImpl.instance =\n new NapsterCompanionApiSdkLegacyImpl();\n }\n return NapsterCompanionApiSdkLegacyImpl.instance;\n }\n\n protected getReactVersion(): { minVersion: number; maxVersion: number } {\n return {\n minVersion: 16,\n maxVersion: 17,\n };\n }\n}\n\n// Create and export the singleton instance\nconst NapsterCompanionApiSdk = NapsterCompanionApiSdkLegacyImpl.getInstance();\n\n// Attach helpers onto the instance for UMD/global usage\nconst legacyWithHelper = NapsterCompanionApiSdk;\n\n// For UMD build\nif (typeof window !== \"undefined\") {\n window.NapsterCompanionApiSdk = legacyWithHelper;\n}\n\nexport { NapsterCompanionApiSdk };\nexport type {\n NapsterCompanionApiConfig,\n NapsterCompanionApiInstance,\n FeatureConfig,\n} from \"./types\";\nexport { Position } from \"./types\";\n\n// Default export for UMD builds\nexport default NapsterCompanionApiSdk;\n"],"names":["LegacyRenderStrategy","this","render","element","container","containerElement","document","querySelector","Error","ReactDOM","unmount","unmountComponentAtNode","NapsterCompanionApiSdk","_super","NapsterCompanionApiSdkLegacyImpl","_this","renderStrategy","__extends","getInstance","instance","prototype","getReactVersion","minVersion","maxVersion","NapsterCompanionApiSdkBase","legacyWithHelper","window"],"mappings":"oOAgBA,IAAAA,EAAA,WACSC,KAAAC,OAAS,SACdC,EACAC,GAEA,IAAMC,EACiB,iBAAdD,EACHE,SAASC,cAAcH,GACvBA,EAEN,IAAKC,EACH,MAAM,IAAIG,MACR,+BAA6C,iBAAdJ,EAAyBA,EAAY,gBAMxEK,EAASP,OAAOC,EAASE,EAC3B,EAEOJ,KAAAS,QAAU,SAACN,GAChB,IAAMC,EACiB,iBAAdD,EACHE,SAASC,cAAcH,GACvBA,EAEFC,GAGFI,EAASE,uBAAuBN,EAEpC,CACF,EA6CMO,EAvCN,SAAAC,GAKE,SAAAC,IACE,IAAAC,EAAAF,cAAOZ,KAKP,IAAKQ,EAASP,OACZ,MAAM,IAAIM,MACR,+LAMJO,EAAKC,eAAiB,IAAIhB,GAC5B,CAgBF,OApC+CiB,EAAAA,UAAAH,EAAAD,GAsB/BC,EAAAI,YAAd,WAKE,OAJKJ,EAAiCK,WACpCL,EAAiCK,SAC/B,IAAIL,GAEDA,EAAiCK,QAC1C,EAEUL,EAAAM,UAAAC,gBAAV,WACE,MAAO,CACLC,WAAY,GACZC,WAAY,GAEhB,EAlCeT,EAAAK,SAAoD,KAmCrEL,EApCA,CAA+CU,8BAuCiBN,cAG1DO,EAAmBb,EAGH,oBAAXc,SACTA,OAAOd,uBAAyBa"}