@industry-theme/file-city-panel 0.2.80 → 0.3.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/dist/adapters/S3BackedTTSAdapter.d.ts +87 -0
- package/dist/adapters/S3BackedTTSAdapter.d.ts.map +1 -0
- package/dist/components/TourPlayer.d.ts +11 -0
- package/dist/components/TourPlayer.d.ts.map +1 -1
- package/dist/components/TourPlayer.stories.d.ts +15 -0
- package/dist/components/TourPlayer.stories.d.ts.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/mocks/MockTTSAdapter.d.ts +85 -0
- package/dist/mocks/MockTTSAdapter.d.ts.map +1 -0
- package/dist/panels.bundle.js +658 -1
- package/dist/panels.bundle.js.map +1 -1
- package/dist/types/TextToSpeech.d.ts +116 -0
- package/dist/types/TextToSpeech.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S3-Backed Text-to-Speech Adapter
|
|
3
|
+
*
|
|
4
|
+
* This adapter communicates with a backend API that:
|
|
5
|
+
* 1. Fetches tour files from GitHub
|
|
6
|
+
* 2. Validates step content
|
|
7
|
+
* 3. Generates audio via ElevenLabs (if not cached)
|
|
8
|
+
* 4. Stores audio in S3
|
|
9
|
+
* 5. Returns audio URLs
|
|
10
|
+
*
|
|
11
|
+
* The adapter handles audio playback and state management on the client side.
|
|
12
|
+
*/
|
|
13
|
+
import type { TextToSpeechAdapter, TTSState, TTSOptions, TTSEvent, TourAudioContext } from '../types/TextToSpeech';
|
|
14
|
+
/**
|
|
15
|
+
* Configuration for S3BackedTTSAdapter
|
|
16
|
+
*/
|
|
17
|
+
export interface S3BackedTTSAdapterConfig {
|
|
18
|
+
/** Base URL for the TTS API (e.g., "https://api.web-ade.com") */
|
|
19
|
+
apiBaseUrl: string;
|
|
20
|
+
/** Optional: Override fetch implementation (useful for testing) */
|
|
21
|
+
fetchImpl?: typeof fetch;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* S3-backed TTS adapter implementation
|
|
25
|
+
*
|
|
26
|
+
* This adapter calls a backend API to generate/retrieve audio files stored in S3.
|
|
27
|
+
* The backend handles ElevenLabs API calls and ensures content security.
|
|
28
|
+
*/
|
|
29
|
+
export declare class S3BackedTTSAdapter implements TextToSpeechAdapter {
|
|
30
|
+
private apiBaseUrl;
|
|
31
|
+
private audioCache;
|
|
32
|
+
private audio;
|
|
33
|
+
private eventTarget;
|
|
34
|
+
private fetchImpl;
|
|
35
|
+
private _state;
|
|
36
|
+
constructor(config: S3BackedTTSAdapterConfig);
|
|
37
|
+
get state(): TTSState;
|
|
38
|
+
private setState;
|
|
39
|
+
/**
|
|
40
|
+
* Fetch audio URLs for all steps in a tour
|
|
41
|
+
*/
|
|
42
|
+
fetchTourAudio(tourId: string, stepIds: string[], context: TourAudioContext, options?: TTSOptions): Promise<Map<string, string>>;
|
|
43
|
+
/**
|
|
44
|
+
* Play audio for a specific step
|
|
45
|
+
*/
|
|
46
|
+
speak(stepId: string): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Play audio from URL
|
|
49
|
+
*/
|
|
50
|
+
private playAudio;
|
|
51
|
+
/**
|
|
52
|
+
* Stop current audio playback
|
|
53
|
+
*/
|
|
54
|
+
stop(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Pause current audio playback
|
|
57
|
+
*/
|
|
58
|
+
pause(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Resume paused audio playback
|
|
61
|
+
*/
|
|
62
|
+
resume(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Subscribe to TTS events
|
|
65
|
+
*/
|
|
66
|
+
addEventListener(event: TTSEvent, handler: () => void): void;
|
|
67
|
+
/**
|
|
68
|
+
* Unsubscribe from TTS events
|
|
69
|
+
*/
|
|
70
|
+
removeEventListener(event: TTSEvent, handler: () => void): void;
|
|
71
|
+
/**
|
|
72
|
+
* Emit an event
|
|
73
|
+
*/
|
|
74
|
+
private emit;
|
|
75
|
+
/**
|
|
76
|
+
* Clear all cached audio URLs
|
|
77
|
+
*/
|
|
78
|
+
clearCache(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Get cache statistics (for debugging)
|
|
81
|
+
*/
|
|
82
|
+
getCacheStats(): {
|
|
83
|
+
size: number;
|
|
84
|
+
entries: string[];
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=S3BackedTTSAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"S3BackedTTSAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/S3BackedTTSAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAkB/B;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IAEnB,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,SAAS,CAAe;IAEhC,OAAO,CAAC,MAAM,CAKZ;gBAEU,MAAM,EAAE,wBAAwB;IAK5C,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAmD/B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB1C;;OAEG;YACW,SAAS;IA+CvB;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAI5D;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/D;;OAEG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa;;;;CAMd"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { IntroductionTour, IntroductionTourStep } from '../types/IntroductionTour';
|
|
3
|
+
import type { TextToSpeechAdapter, TourAudioContext } from '../types/TextToSpeech';
|
|
3
4
|
export interface TourPlayerProps {
|
|
4
5
|
/** The introduction tour to play */
|
|
5
6
|
tour: IntroductionTour;
|
|
@@ -20,6 +21,16 @@ export interface TourPlayerProps {
|
|
|
20
21
|
position?: 'top' | 'bottom' | 'overlay' | 'right';
|
|
21
22
|
/** Skip welcome screen and start playing immediately */
|
|
22
23
|
skipWelcome?: boolean;
|
|
24
|
+
/** Optional TTS adapter for audio narration */
|
|
25
|
+
ttsAdapter?: TextToSpeechAdapter;
|
|
26
|
+
/** Context for fetching tour audio (required if ttsAdapter is provided) */
|
|
27
|
+
tourAudioContext?: TourAudioContext;
|
|
28
|
+
/** Auto-play audio when step changes (default: false) */
|
|
29
|
+
autoPlayAudio?: boolean;
|
|
30
|
+
/** Auto-advance to next step when audio ends (default: false) */
|
|
31
|
+
autoAdvanceOnAudioEnd?: boolean;
|
|
32
|
+
/** Delay in ms before auto-advancing after audio ends (default: 1000) */
|
|
33
|
+
autoAdvanceDelay?: number;
|
|
23
34
|
}
|
|
24
35
|
/**
|
|
25
36
|
* TourPlayer - Interactive guided tour player for introduction tours
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TourPlayer.d.ts","sourceRoot":"","sources":["../../src/components/TourPlayer.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TourPlayer.d.ts","sourceRoot":"","sources":["../../src/components/TourPlayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAiBxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGnF,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,IAAI,EAAE,gBAAgB,CAAC;IAEvB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,iCAAiC;IACjC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAEvE,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAE1E,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,8HAA8H;IAC9H,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IAElD,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAEjC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,iEAAiE;IACjE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAggChD,CAAC"}
|
|
@@ -53,4 +53,19 @@ export declare const InteractiveCompleteTour: Story;
|
|
|
53
53
|
* Shows a story targeting advanced users with complex concepts
|
|
54
54
|
*/
|
|
55
55
|
export declare const AdvancedStory: Story;
|
|
56
|
+
/**
|
|
57
|
+
* With Text-to-Speech - Audio narration enabled
|
|
58
|
+
* Shows a tour with TTS audio controls and manual read-aloud functionality
|
|
59
|
+
*/
|
|
60
|
+
export declare const WithTextToSpeech: Story;
|
|
61
|
+
/**
|
|
62
|
+
* With Auto-Play Audio - Automatic narration and advancement
|
|
63
|
+
* Shows a tour that automatically plays audio and advances to next step
|
|
64
|
+
*/
|
|
65
|
+
export declare const WithAutoPlayAudio: Story;
|
|
66
|
+
/**
|
|
67
|
+
* TTS Loading State - Shows audio loading
|
|
68
|
+
* Demonstrates the loading state while audio is being fetched
|
|
69
|
+
*/
|
|
70
|
+
export declare const TTSLoadingState: Story;
|
|
56
71
|
//# sourceMappingURL=TourPlayer.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TourPlayer.stories.d.ts","sourceRoot":"","sources":["../../src/components/TourPlayer.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TourPlayer.stories.d.ts","sourceRoot":"","sources":["../../src/components/TourPlayer.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA6J1C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAgBjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAM3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,KAsCvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAqCxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,KAqCtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAqCzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAqC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAmFpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KA2E/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAqFrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAiG3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAoD9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KA2D/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAoD7B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -44,4 +44,14 @@ export { PrChangesCardList } from './panels/components/PrChangesCardList';
|
|
|
44
44
|
export type { PrFilesStatus, PrChangeSelectionStatus } from './panels/components/PrChangesCardList';
|
|
45
45
|
export { StoryboardFilesCardList } from './panels/components/StoryboardFilesCardList';
|
|
46
46
|
export type { StoryboardFileCategory } from './panels/components/StoryboardFilesCardList';
|
|
47
|
+
/**
|
|
48
|
+
* Export TTS (Text-to-Speech) components and adapters for tour narration.
|
|
49
|
+
*/
|
|
50
|
+
export { TourPlayer } from './components/TourPlayer';
|
|
51
|
+
export type { TourPlayerProps } from './components/TourPlayer';
|
|
52
|
+
export { S3BackedTTSAdapter } from './adapters/S3BackedTTSAdapter';
|
|
53
|
+
export type { S3BackedTTSAdapterConfig } from './adapters/S3BackedTTSAdapter';
|
|
54
|
+
export { MockTTSAdapter } from './mocks/MockTTSAdapter';
|
|
55
|
+
export type { MockTTSAdapterConfig } from './mocks/MockTTSAdapter';
|
|
56
|
+
export type { TextToSpeechAdapter, TTSState, TTSOptions, TTSEvent, TourAudioContext, } from './types';
|
|
47
57
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAGlE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,EAyEnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAGzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qBAG3B,CAAC;AAEF;;;GAGG;AACH,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,YAAY,EACV,2BAA2B,EAC3B,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACrG,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,YAAY,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAGlE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,EAyEnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAGzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qBAG3B,CAAC;AAEF;;;GAGG;AACH,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,YAAY,EACV,2BAA2B,EAC3B,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACrG,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,YAAY,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAE1F;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,YAAY,EACV,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock Text-to-Speech Adapter for Storybook and Testing
|
|
3
|
+
*
|
|
4
|
+
* Simulates TTS functionality without making real API calls or playing audio.
|
|
5
|
+
* Useful for development, testing, and Storybook stories.
|
|
6
|
+
*/
|
|
7
|
+
import type { TextToSpeechAdapter, TTSState, TTSOptions, TTSEvent, TourAudioContext } from '../types/TextToSpeech';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for MockTTSAdapter
|
|
10
|
+
*/
|
|
11
|
+
export interface MockTTSAdapterConfig {
|
|
12
|
+
/** Simulated audio duration per step in seconds (default: 5) */
|
|
13
|
+
audioDuration?: number;
|
|
14
|
+
/** Delay before starting playback in ms (default: 100) */
|
|
15
|
+
playbackDelay?: number;
|
|
16
|
+
/** Delay for fetching tour audio in ms (default: 500) */
|
|
17
|
+
fetchDelay?: number;
|
|
18
|
+
/** Whether to log actions to console (default: true) */
|
|
19
|
+
verbose?: boolean;
|
|
20
|
+
/** Simulate errors (useful for testing error states) */
|
|
21
|
+
simulateError?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Mock TTS adapter for testing and Storybook
|
|
25
|
+
*/
|
|
26
|
+
export declare class MockTTSAdapter implements TextToSpeechAdapter {
|
|
27
|
+
private audioCache;
|
|
28
|
+
private eventTarget;
|
|
29
|
+
private playbackTimer;
|
|
30
|
+
private progressTimer;
|
|
31
|
+
private config;
|
|
32
|
+
private _state;
|
|
33
|
+
constructor(config?: MockTTSAdapterConfig);
|
|
34
|
+
get state(): TTSState;
|
|
35
|
+
private setState;
|
|
36
|
+
private log;
|
|
37
|
+
/**
|
|
38
|
+
* Fetch audio URLs for all steps in a tour
|
|
39
|
+
*/
|
|
40
|
+
fetchTourAudio(tourId: string, stepIds: string[], context: TourAudioContext, options?: TTSOptions): Promise<Map<string, string>>;
|
|
41
|
+
/**
|
|
42
|
+
* Play audio for a specific step
|
|
43
|
+
*/
|
|
44
|
+
speak(stepId: string): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Stop current audio playback
|
|
47
|
+
*/
|
|
48
|
+
stop(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Pause current audio playback
|
|
51
|
+
*/
|
|
52
|
+
pause(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Resume paused audio playback
|
|
55
|
+
*/
|
|
56
|
+
resume(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Subscribe to TTS events
|
|
59
|
+
*/
|
|
60
|
+
addEventListener(event: TTSEvent, handler: () => void): void;
|
|
61
|
+
/**
|
|
62
|
+
* Unsubscribe from TTS events
|
|
63
|
+
*/
|
|
64
|
+
removeEventListener(event: TTSEvent, handler: () => void): void;
|
|
65
|
+
/**
|
|
66
|
+
* Emit an event
|
|
67
|
+
*/
|
|
68
|
+
private emit;
|
|
69
|
+
/**
|
|
70
|
+
* Clean up timers
|
|
71
|
+
*/
|
|
72
|
+
private cleanupPlayback;
|
|
73
|
+
/**
|
|
74
|
+
* Clear all cached audio URLs
|
|
75
|
+
*/
|
|
76
|
+
clearCache(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get cache statistics (for debugging)
|
|
79
|
+
*/
|
|
80
|
+
getCacheStats(): {
|
|
81
|
+
size: number;
|
|
82
|
+
entries: string[];
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=MockTTSAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockTTSAdapter.d.ts","sourceRoot":"","sources":["../../src/mocks/MockTTSAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,mBAAmB;IACxD,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,MAAM,CAAiC;IAE/C,OAAO,CAAC,MAAM,CAKZ;gBAEU,MAAM,GAAE,oBAAyB;IAU7C,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,GAAG;IAMX;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA6B/B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4D1C;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,MAAM,IAAI,IAAI;IAmCd;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAI5D;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/D;;OAEG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa;;;;CAMd"}
|