feat(editor): audio block (#10947)

AudioMedia entity for loading & controlling a single audio media
AudioMediaManagerService: Global audio state synchronization across tabs
AudioAttachmentService + AudioAttachmentBlock for manipulating AttachmentBlock in affine - e.g., filling transcription (using mock endpoint for now)
Added AudioBlock + AudioPlayer for rendering audio block in affine (new transcription block whose renderer is provided in affine)

fix AF-2292
fix AF-2337
This commit is contained in:
pengx17
2025-03-20 12:46:14 +00:00
parent 8a5393ea50
commit fad49bb070
120 changed files with 5407 additions and 950 deletions
@@ -198,7 +198,9 @@ class TrayState {
label: 'Stop',
click: () => {
logger.info('User action: Stop Recording');
stopRecording();
stopRecording().catch(err => {
logger.error('Failed to stop recording:', err);
});
},
},
],
@@ -290,7 +292,7 @@ class TrayState {
let _trayState: TrayState | undefined;
export const getTrayState = () => {
export const setupTrayState = () => {
if (!_trayState) {
_trayState = new TrayState();
_trayState.init();