fix(rendering): synchronize FPS, implement render locks, respect brand segment duration, and fix local audio path resolving for ffmpeg

This commit is contained in:
2026-06-02 20:40:30 -05:00
parent b7656cf8eb
commit 9503dbfabc
39 changed files with 3556 additions and 3506 deletions
+18 -5
View File
@@ -1,9 +1,22 @@
import React from 'react';
import { TimelineElement } from '../../types';
export interface TextStylePresetUpdates {
fontSize?: number;
fontWeight?: number;
fontStyle?: 'italic' | 'normal';
textTransform?: 'uppercase' | 'none';
letterSpacing?: number;
lineHeight?: number;
shadowOffset?: number;
shadowBlur?: number;
fontFamily?: string;
textBackgroundColor?: string;
textBackgroundPadding?: number;
textBackgroundRadius?: number;
}
interface TextStylePresetsProps {
element: TimelineElement;
onUpdate: (updates: Partial<TimelineElement>) => void;
onApplyPreset: (updates: TextStylePresetUpdates) => void;
}
const TEXT_STYLE_PRESETS = [
@@ -53,7 +66,7 @@ const TEXT_STYLE_PRESETS = [
* TextStylePresets — Quick-apply pre-designed text style configurations.
* Each preset adjusts fontSize, fontWeight, transform, spacing, and optional effects.
*/
export const TextStylePresets: React.FC<TextStylePresetsProps> = ({ element, onUpdate }) => {
export const TextStylePresets: React.FC<TextStylePresetsProps> = ({ onApplyPreset }) => {
return (
<div className="space-y-1.5">
<span className="text-[9px] text-neutral-500 block">Estilos Prediseñados</span>
@@ -61,7 +74,7 @@ export const TextStylePresets: React.FC<TextStylePresetsProps> = ({ element, onU
{TEXT_STYLE_PRESETS.map((preset) => (
<button
key={preset.name}
onClick={() => onUpdate(preset.styles)}
onClick={() => onApplyPreset(preset.styles)}
title={preset.desc}
className="py-1.5 px-2 rounded-lg text-[8px] font-medium bg-neutral-900 border border-neutral-800 text-neutral-500 hover:text-violet-300 hover:border-violet-500/30 transition-all text-left"
>