learning_ai_common_plat/packages/media-ui/src/index.ts
saravanakumardb1 99e59597d1 feat(media-ui): @bytelyst/media-ui@0.1.0 — Wave 13.G.1/.2/.4
Media surface primitives — ImageGenStream, AudioWaveform, VideoPlayer.
Zero runtime deps (canvas + native <video> + native <img>); PdfPreview
deferred to 0.2.x where it'll lazy-load pdf.js.

──────────────────────────────────────────────────────────────────
<ImageGenStream>  ·  Wave 13.G.1
──────────────────────────────────────────────────────────────────
  - Driven entirely by props (status + snapshot + finalUrl)
  - 4 statuses: idle / streaming / complete / error
  - Streaming: blurred partial image + overlay progress bar +
    step label (e.g. 'denoising 24/50')
  - Complete: drops blur with fade-in
  - Error: muted error placeholder (token-tinted danger)
  - Host pipes any transport (SSE / WebSocket / polling) into
    the snapshot prop — pure presentation

<AudioWaveform>  ·  Wave 13.G.2
  - Canvas render with DPR-aware paint
  - Two sources: pre-computed peaks (cheapest) OR lazy WebAudio
    decode from audioUrl (falls back gracefully w/o AudioContext)
  - Click-to-seek (returns 0..1 position)
  - Progress overlay tints played bars with progressColor
  - Resampling helper handles arbitrary peak-count inputs

<VideoPlayer>  ·  Wave 13.G.4
  - Native <video controls> wrapper — accessible by default
  - Chapter buttons that seek + auto-play (silently swallows
    autoplay rejections)
  - Optional in-memory caption track (aria-live polite); hosts
    that prefer real WebVTT pass <track> via the slot prop
  - Token-tinted; rounded; muted poster background

──────────────────────────────────────────────────────────────────
Quality gates
──────────────────────────────────────────────────────────────────
  ✓ 10/10 tests passing
    - AudioWaveform: 3 cases (canvas size · click-seek math ·
      placeholder when no peaks)
    - ImageGenStream: 4 cases (idle / streaming / complete /
      error)
    - VideoPlayer: 3 cases (src · chapter button list · caption
      rail)
  ✓ tsc build clean
  ✓ Zero new runtime deps; all WebAudio access guarded for SSR

Showcase /futurism/multimodal (MAG.7) lands in the paired showcase
commit.
2026-05-27 17:44:13 -07:00

29 lines
811 B
TypeScript

/**
* @bytelyst/media-ui — media surface primitives.
*
* Exports (0.1.0 — Wave 13.G.1/.2/.4):
* <ImageGenStream> streaming image-generation surface
* <AudioWaveform> canvas waveform + click-to-seek
* <VideoPlayer> <video controls> + chapters + caption rail
*
* Deferred to 0.2.x (per roadmap §13.G):
* <PdfPreview> lazy pdf.js — needs the pdf.js runtime
*/
export { ImageGenStream } from './ImageGenStream.js';
export type {
ImageGenSnapshot,
ImageGenStatus,
ImageGenStreamProps,
} from './ImageGenStream.js';
export { AudioWaveform } from './AudioWaveform.js';
export type { AudioWaveformProps } from './AudioWaveform.js';
export { VideoPlayer } from './VideoPlayer.js';
export type {
VideoCaption,
VideoChapter,
VideoPlayerProps,
} from './VideoPlayer.js';