@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.
@@ -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,KAA2C,MAAM,OAAO,CAAC;AAahE,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGxF,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;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA2tBhD,CAAC"}
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;AA2J1C,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"}
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
@@ -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"}