Skip to content
This repository was archived by the owner on Jun 17, 2026. It is now read-only.

Commit 42468c1

Browse files
committed
fix
1 parent dca91b4 commit 42468c1

7 files changed

Lines changed: 199 additions & 200 deletions

File tree

src/components/video-editor/VideoEditor.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,23 +1118,22 @@ export default function VideoEditor() {
11181118
selectRegion: (id: string) => void;
11191119
errorTitle: string;
11201120
errorDescription: string;
1121-
}) {
1121+
}): void {
11221122
const hasConflict = config.existingRegions.some((region) =>
11231123
spansOverlap(region.startMs, region.endMs, targetStart, targetEnd),
11241124
);
11251125
if (hasConflict) {
11261126
toast.error(config.errorTitle, {
11271127
description: config.errorDescription,
11281128
});
1129-
return true;
1129+
return;
11301130
}
11311131

11321132
const id = config.createId();
11331133
config.pushRegion(config.createRegion(id));
11341134
clearTimelineSelection();
11351135
config.selectRegion(id);
11361136
notifyPasted();
1137-
return true;
11381137
}
11391138

11401139
if (timelineClipboard.kind === "annotation" || timelineClipboard.kind === "blur") {
@@ -2158,7 +2157,7 @@ export default function VideoEditor() {
21582157
!!selectedBlurId ||
21592158
!!selectedSpeedId
21602159
}
2161-
canPasteTimelineItem={!!timelineClipboard}
2160+
canPasteTimelineItem={!!timelineClipboard && duration > 0}
21622161
onCopySelectedItem={handleCopySelectedTimelineItem}
21632162
onPasteTimelineItem={handlePasteTimelineItem}
21642163
aspectRatio={aspectRatio}

src/i18n/locales/es/timeline.json

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,55 +3,55 @@
33
"addZoom": "Agregar zoom (Z)",
44
"suggestZooms": "Sugerir zooms desde el cursor",
55
"addTrim": "Agregar recorte (T)",
6-
"addAnnotation": "Agregar anotación (A)",
6+
"addAnnotation": "Agregar anotación (A)",
77
"addSpeed": "Agregar velocidad (S)",
88
"addBlur": "Agregar desenfoque (B)"
99
},
1010
"hints": {
1111
"pressZoom": "Presiona Z para agregar zoom",
1212
"pressTrim": "Presiona T para agregar recorte",
13-
"pressAnnotation": "Presiona A para agregar anotación",
13+
"pressAnnotation": "Presiona A para agregar anotación",
1414
"pressSpeed": "Presiona S para agregar velocidad",
15-
"pressBlur": "Presiona B para agregar una región de desenfoque"
15+
"pressBlur": "Presiona B para agregar una región de desenfoque"
1616
},
1717
"labels": {
1818
"pan": "Desplazar",
1919
"zoom": "Zoom",
2020
"zoomItem": "Zoom {{index}}",
2121
"trimItem": "Recorte {{index}}",
2222
"speedItem": "Velocidad {{index}}",
23-
"annotationItem": "Anotación",
23+
"annotationItem": "Anotación",
2424
"imageItem": "Imagen",
25-
"emptyText": "Texto vacío",
25+
"emptyText": "Texto vacío",
2626
"blurItem": "Desenfoque {{index}}"
2727
},
2828
"emptyState": {
2929
"noVideo": "No hay video cargado",
3030
"dragAndDrop": "Arrastra y suelta un video para comenzar a editar"
3131
},
3232
"errors": {
33-
"cannotPlaceZoom": "No se puede colocar el zoom aquí",
34-
"zoomExistsAtLocation": "Ya existe un zoom en esta ubicación o no hay suficiente espacio disponible.",
35-
"zoomSuggestionUnavailable": "El controlador de sugerencias de zoom no está disponible",
36-
"noCursorTelemetry": "No hay telemetría de cursor disponible",
33+
"cannotPlaceZoom": "No se puede colocar el zoom aquí",
34+
"zoomExistsAtLocation": "Ya existe un zoom en esta ubicación o no hay suficiente espacio disponible.",
35+
"zoomSuggestionUnavailable": "El controlador de sugerencias de zoom no está disponible",
36+
"noCursorTelemetry": "No hay telemetría de cursor disponible",
3737
"noCursorTelemetryDescription": "Graba una captura de pantalla primero para generar sugerencias basadas en el cursor.",
38-
"noUsableTelemetry": "No hay telemetría de cursor utilizable",
39-
"noUsableTelemetryDescription": "La grabación no incluye suficientes datos de movimiento del cursor.",
38+
"noUsableTelemetry": "No hay telemetría de cursor utilizable",
39+
"noUsableTelemetryDescription": "La grabación no incluye suficientes datos de movimiento del cursor.",
4040
"noDwellMoments": "No se encontraron momentos claros de pausa del cursor",
41-
"noDwellMomentsDescription": "Intenta una grabación con pausas más lentas del cursor en acciones importantes.",
41+
"noDwellMomentsDescription": "Intenta una grabación con pausas más lentas del cursor en acciones importantes.",
4242
"noAutoZoomSlots": "No hay espacios de auto-zoom disponibles",
4343
"noAutoZoomSlotsDescription": "Los puntos de pausa detectados se superponen con regiones de zoom existentes.",
44-
"cannotPlaceTrim": "No se puede colocar el recorte aquí",
45-
"trimExistsAtLocation": "Ya existe un recorte en esta ubicación o no hay suficiente espacio disponible.",
46-
"cannotPlaceSpeed": "No se puede colocar la velocidad aquí",
47-
"speedExistsAtLocation": "Ya existe una región de velocidad en esta ubicación o no hay suficiente espacio disponible."
44+
"cannotPlaceTrim": "No se puede colocar el recorte aquí",
45+
"trimExistsAtLocation": "Ya existe un recorte en esta ubicación o no hay suficiente espacio disponible.",
46+
"cannotPlaceSpeed": "No se puede colocar la velocidad aquí",
47+
"speedExistsAtLocation": "Ya existe una región de velocidad en esta ubicación o no hay suficiente espacio disponible."
4848
},
4949
"success": {
50-
"addedZoomSuggestions": "Se agregó {{count}} sugerencia de zoom basada en el cursor",
50+
"addedZoomSuggestions": "Se agregó {{count}} sugerencia de zoom basada en el cursor",
5151
"addedZoomSuggestionsPlural": "Se agregaron {{count}} sugerencias de zoom basadas en el cursor"
5252
},
5353
"feedback": {
54-
"copied": "Copied!",
55-
"pasted": "Pasted!"
54+
"copied": "¡Copiado!",
55+
"pasted": "¡Pegado!"
5656
}
5757
}

src/i18n/locales/fr/timeline.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"buttons": {
33
"addZoom": "Ajouter un zoom (Z)",
4-
"suggestZooms": "Suggérer des zooms depuis le curseur",
4+
"suggestZooms": "Suggérer des zooms depuis le curseur",
55
"addTrim": "Ajouter une coupe (T)",
66
"addAnnotation": "Ajouter une annotation (A)",
77
"addSpeed": "Ajouter une vitesse (S)",
@@ -26,32 +26,32 @@
2626
"blurItem": "Flou {{index}}"
2727
},
2828
"emptyState": {
29-
"noVideo": "Aucune vidéo chargée",
30-
"dragAndDrop": "Glissez-déposez une vidéo pour commencer à éditer"
29+
"noVideo": "Aucune vidéo chargée",
30+
"dragAndDrop": "Glissez-déposez une vidéo pour commencer à éditer"
3131
},
3232
"errors": {
3333
"cannotPlaceZoom": "Impossible de placer le zoom ici",
34-
"zoomExistsAtLocation": "Un zoom existe déjà à cet emplacement ou l\u0027espace disponible est insuffisant.",
34+
"zoomExistsAtLocation": "Un zoom existe déjà à cet emplacement ou l'espace disponible est insuffisant.",
3535
"zoomSuggestionUnavailable": "Gestionnaire de suggestions de zoom non disponible",
36-
"noCursorTelemetry": "Aucune télémétrie de curseur disponible",
37-
"noCursorTelemetryDescription": "Enregistrez d\u0027abord un screencast pour générer des suggestions basées sur le curseur.",
38-
"noUsableTelemetry": "Aucune télémétrie de curseur utilisable",
39-
"noUsableTelemetryDescription": "L\u0027enregistrement ne contient pas suffisamment de données de mouvement du curseur.",
40-
"noDwellMoments": "Aucun moment de pause du curseur trouvé",
36+
"noCursorTelemetry": "Aucune télémétrie de curseur disponible",
37+
"noCursorTelemetryDescription": "Enregistrez d'abord un screencast pour générer des suggestions basées sur le curseur.",
38+
"noUsableTelemetry": "Aucune télémétrie de curseur utilisable",
39+
"noUsableTelemetryDescription": "L'enregistrement ne contient pas suffisamment de données de mouvement du curseur.",
40+
"noDwellMoments": "Aucun moment de pause du curseur trouvé",
4141
"noDwellMomentsDescription": "Essayez un enregistrement avec des pauses plus lentes du curseur sur les actions importantes.",
4242
"noAutoZoomSlots": "Aucun emplacement de zoom automatique disponible",
43-
"noAutoZoomSlotsDescription": "Les points de pause détectés chevauchent des régions de zoom existantes.",
43+
"noAutoZoomSlotsDescription": "Les points de pause détectés chevauchent des régions de zoom existantes.",
4444
"cannotPlaceTrim": "Impossible de placer la coupe ici",
45-
"trimExistsAtLocation": "Une coupe existe déjà à cet emplacement ou l\u0027espace disponible est insuffisant.",
45+
"trimExistsAtLocation": "Une coupe existe déjà à cet emplacement ou l'espace disponible est insuffisant.",
4646
"cannotPlaceSpeed": "Impossible de placer la vitesse ici",
47-
"speedExistsAtLocation": "Une région de vitesse existe déjà à cet emplacement ou l\u0027espace disponible est insuffisant."
47+
"speedExistsAtLocation": "Une région de vitesse existe déjà à cet emplacement ou l'espace disponible est insuffisant."
4848
},
4949
"success": {
50-
"addedZoomSuggestions": "{{count}} suggestion de zoom basée sur le curseur ajoutée",
51-
"addedZoomSuggestionsPlural": "{{count}} suggestions de zoom basées sur le curseur ajoutées"
50+
"addedZoomSuggestions": "{{count}} suggestion de zoom basée sur le curseur ajoutée",
51+
"addedZoomSuggestionsPlural": "{{count}} suggestions de zoom basées sur le curseur ajoutées"
5252
},
5353
"feedback": {
54-
"copied": "Copied!",
55-
"pasted": "Pasted!"
54+
"copied": "Copié !",
55+
"pasted": "Collé !"
5656
}
5757
}
Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,54 @@
11
{
22
"buttons": {
3-
"addZoom": "줌 추가 (Z)",
4-
"suggestZooms": "커서 기반 줌 제안",
5-
"addTrim": "트림 추가 (T)",
6-
"addAnnotation": "주석 추가 (A)",
7-
"addSpeed": "속도 추가 (S)"
3+
"addZoom": "줌 추가 (Z)",
4+
"suggestZooms": "커서 기반 줌 제안",
5+
"addTrim": "트림 추가 (T)",
6+
"addAnnotation": "주석 추가 (A)",
7+
"addSpeed": "속도 추가 (S)"
88
},
99
"hints": {
10-
"pressZoom": "Z를 눌러 줌 추가",
11-
"pressTrim": "T를 눌러 트림 추가",
12-
"pressAnnotation": "A를 눌러 주석 추가",
13-
"pressSpeed": "S를 눌러 속도 추가"
10+
"pressZoom": "Z를 눌러 줌 추가",
11+
"pressTrim": "T를 눌러 트림 추가",
12+
"pressAnnotation": "A를 눌러 주석 추가",
13+
"pressSpeed": "S를 눌러 속도 추가"
1414
},
1515
"labels": {
16-
"pan": "이동",
17-
"zoom": "줌",
18-
"zoomItem": "줌 {{index}}",
19-
"trimItem": "트림 {{index}}",
20-
"speedItem": "속도 {{index}}",
21-
"annotationItem": "주석",
22-
"imageItem": "이미지",
23-
"emptyText": "빈 텍스트"
16+
"pan": "이동",
17+
"zoom": "",
18+
"zoomItem": " {{index}}",
19+
"trimItem": "트림 {{index}}",
20+
"speedItem": "속도 {{index}}",
21+
"annotationItem": "주석",
22+
"imageItem": "이미지",
23+
"emptyText": "빈 텍스트"
2424
},
2525
"emptyState": {
26-
"noVideo": "불러온 비디오 없음",
27-
"dragAndDrop": "비디오를 드래그 앤 드롭해서 편집을 시작하세요"
26+
"noVideo": "불러온 비디오 없음",
27+
"dragAndDrop": "비디오를 드래그 앤 드롭해서 편집을 시작하세요"
2828
},
2929
"errors": {
30-
"cannotPlaceZoom": "이 위치에 줌을 추가할 수 없습니다",
31-
"zoomExistsAtLocation": "이 위치에 이미 줌이 있거나 공간이 부족합니다.",
32-
"zoomSuggestionUnavailable": "줌 제안 기능을 사용할 수 없습니다",
33-
"noCursorTelemetry": "커서 데이터가 없습니다",
34-
"noCursorTelemetryDescription": "커서 기반 제안을 생성하려면 먼저 화면을 녹화해 주세요.",
35-
"noUsableTelemetry": "사용 가능한 커서 데이터가 없습니다",
36-
"noUsableTelemetryDescription": "녹화에 충분한 커서 이동 데이터가 포함되어 있지 않습니다.",
37-
"noDwellMoments": "명확한 커서 정지 구간을 찾을 수 없습니다",
38-
"noDwellMomentsDescription": "중요한 동작에서 커서를 천천히 멈추며 녹화해 보세요.",
39-
"noAutoZoomSlots": "자동 줌 슬롯이 없습니다",
40-
"noAutoZoomSlotsDescription": "감지된 정지 지점이 기존 줌 구간과 겹칩니다.",
41-
"cannotPlaceTrim": "이 위치에 트림을 추가할 수 없습니다",
42-
"trimExistsAtLocation": "이 위치에 이미 트림이 있거나 공간이 부족합니다.",
43-
"cannotPlaceSpeed": "이 위치에 속도를 추가할 수 없습니다",
44-
"speedExistsAtLocation": "이 위치에 이미 속도 구간이 있거나 공간이 부족합니다."
30+
"cannotPlaceZoom": "이 위치에 줌을 추가할 수 없습니다",
31+
"zoomExistsAtLocation": "이 위치에 이미 줌이 있거나 공간이 부족합니다.",
32+
"zoomSuggestionUnavailable": "줌 제안 기능을 사용할 수 없습니다",
33+
"noCursorTelemetry": "커서 데이터가 없습니다",
34+
"noCursorTelemetryDescription": "커서 기반 제안을 생성하려면 먼저 화면을 녹화해 주세요.",
35+
"noUsableTelemetry": "사용 가능한 커서 데이터가 없습니다",
36+
"noUsableTelemetryDescription": "녹화에 충분한 커서 이동 데이터가 포함되어 있지 않습니다.",
37+
"noDwellMoments": "명확한 커서 정지 구간을 찾을 수 없습니다",
38+
"noDwellMomentsDescription": "중요한 동작에서 커서를 천천히 멈추며 녹화해 보세요.",
39+
"noAutoZoomSlots": "자동 줌 슬롯이 없습니다",
40+
"noAutoZoomSlotsDescription": "감지된 정지 지점이 기존 줌 구간과 겹칩니다.",
41+
"cannotPlaceTrim": "이 위치에 트림을 추가할 수 없습니다",
42+
"trimExistsAtLocation": "이 위치에 이미 트림이 있거나 공간이 부족합니다.",
43+
"cannotPlaceSpeed": "이 위치에 속도를 추가할 수 없습니다",
44+
"speedExistsAtLocation": "이 위치에 이미 속도 구간이 있거나 공간이 부족합니다."
4545
},
4646
"success": {
47-
"addedZoomSuggestions": "커서 기반 줌 제안 {{count}}개가 추가되었습니다",
48-
"addedZoomSuggestionsPlural": "커서 기반 줌 제안 {{count}}개가 추가되었습니다"
47+
"addedZoomSuggestions": "커서 기반 줌 제안 {{count}}개가 추가되었습니다",
48+
"addedZoomSuggestionsPlural": "커서 기반 줌 제안 {{count}}개가 추가되었습니다"
4949
},
5050
"feedback": {
51-
"copied": "Copied!",
52-
"pasted": "Pasted!"
51+
"copied": "복사됨!",
52+
"pasted": "붙여넣음!"
5353
}
5454
}

src/i18n/locales/tr/timeline.json

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
11
{
22
"buttons": {
3-
"addZoom": "Yakınlaştırma Ekle (Z)",
4-
"suggestZooms": "İmleçten Yakınlaştırma Öner",
5-
"addTrim": "Kırpma Ekle (T)",
6-
"addAnnotation": "Açıklama Ekle (A)",
7-
"addSpeed": "Hız Ekle (S)",
8-
"addBlur": "Bulanık ekle (B)"
3+
"addZoom": "Yakınlaştırma Ekle (Z)",
4+
"suggestZooms": "İmleçten Yakınlaştırma Öner",
5+
"addTrim": "Kırpma Ekle (T)",
6+
"addAnnotation": "Açıklama Ekle (A)",
7+
"addSpeed": "Hız Ekle (S)",
8+
"addBlur": "Bulanık ekle (B)"
99
},
1010
"hints": {
11-
"pressZoom": "Yakınlaştırma eklemek için Z tuşuna basın",
12-
"pressTrim": "Kırpma eklemek için T tuşuna basın",
13-
"pressAnnotation": "Açıklama eklemek için A tuşuna basın",
14-
"pressSpeed": "Hız eklemek için S tuşuna basın",
15-
"pressBlur": "Bulanık bölge eklemek için B tuşuna basın"
11+
"pressZoom": "Yakınlaştırma eklemek için Z tuşuna basın",
12+
"pressTrim": "Kırpma eklemek için T tuşuna basın",
13+
"pressAnnotation": "Açıklama eklemek için A tuşuna basın",
14+
"pressSpeed": "Hız eklemek için S tuşuna basın",
15+
"pressBlur": "Bulanık bölge eklemek için B tuşuna basın"
1616
},
1717
"labels": {
18-
"pan": "Kaydır",
19-
"zoom": "Yakınlaştır",
20-
"zoomItem": "Yakınlaştırma {{index}}",
21-
"trimItem": "Kırpma {{index}}",
22-
"speedItem": "Hız {{index}}",
23-
"annotationItem": "Açıklama",
24-
"imageItem": "Görüntü",
25-
"emptyText": "BoÅŸ metin",
26-
"blurItem": "Bulanık {{index}}"
18+
"pan": "Kaydır",
19+
"zoom": "Yakınlaştır",
20+
"zoomItem": "Yakınlaştırma {{index}}",
21+
"trimItem": "Kırpma {{index}}",
22+
"speedItem": "Hız {{index}}",
23+
"annotationItem": "Açıklama",
24+
"imageItem": "Görüntü",
25+
"emptyText": "Boş metin",
26+
"blurItem": "Bulanık {{index}}"
2727
},
2828
"emptyState": {
29-
"noVideo": "Video Yüklenmedi",
30-
"dragAndDrop": "Düzenlemeye başlamak için bir video sürükleyip bırakın"
29+
"noVideo": "Video Yüklenmedi",
30+
"dragAndDrop": "Düzenlemeye başlamak için bir video sürükleyip bırakın"
3131
},
3232
"errors": {
33-
"cannotPlaceZoom": "Buraya yakınlaştırma yerleştirilemiyor",
34-
"zoomExistsAtLocation": "Bu konumda zaten bir yakınlaştırma var veya yeterli alan yok.",
35-
"zoomSuggestionUnavailable": "Yakınlaştırma öneri işleyicisi kullanılamıyor",
36-
"noCursorTelemetry": "İmleç telemetrisi mevcut değil",
37-
"noCursorTelemetryDescription": "İmleç tabanlı öneriler oluşturmak için önce bir ekran kaydı yapın.",
38-
"noUsableTelemetry": "Kullanılabilir imleç telemetrisi yok",
39-
"noUsableTelemetryDescription": "Kayıt yeterli imleç hareketi verisi içermiyor.",
40-
"noDwellMoments": "Belirgin imleç bekleme anları bulunamadı",
41-
"noDwellMomentsDescription": "Önemli işlemlerde daha yavaş imleç duraklamaları olan bir kayıt deneyin.",
42-
"noAutoZoomSlots": "Otomatik yakınlaştırma alanı yok",
43-
"noAutoZoomSlotsDescription": "Algılanan bekleme noktaları mevcut yakınlaştırma bölgeleriyle çakışıyor.",
44-
"cannotPlaceTrim": "Buraya kırpma yerleştirilemiyor",
45-
"trimExistsAtLocation": "Bu konumda zaten bir kırpma var veya yeterli alan yok.",
46-
"cannotPlaceSpeed": "Buraya hız yerleştirilemiyor",
47-
"speedExistsAtLocation": "Bu konumda zaten bir hız bölgesi var veya yeterli alan yok."
33+
"cannotPlaceZoom": "Buraya yakınlaştırma yerleştirilemiyor",
34+
"zoomExistsAtLocation": "Bu konumda zaten bir yakınlaştırma var veya yeterli alan yok.",
35+
"zoomSuggestionUnavailable": "Yakınlaştırma öneri işleyicisi kullanılamıyor",
36+
"noCursorTelemetry": "İmleç telemetrisi mevcut değil",
37+
"noCursorTelemetryDescription": "İmleç tabanlı öneriler oluşturmak için önce bir ekran kaydı yapın.",
38+
"noUsableTelemetry": "Kullanılabilir imleç telemetrisi yok",
39+
"noUsableTelemetryDescription": "Kayıt yeterli imleç hareketi verisi içermiyor.",
40+
"noDwellMoments": "Belirgin imleç bekleme anları bulunamadı",
41+
"noDwellMomentsDescription": "Önemli işlemlerde daha yavaş imleç duraklamaları olan bir kayıt deneyin.",
42+
"noAutoZoomSlots": "Otomatik yakınlaştırma alanı yok",
43+
"noAutoZoomSlotsDescription": "Algılanan bekleme noktaları mevcut yakınlaştırma bölgeleriyle çakışıyor.",
44+
"cannotPlaceTrim": "Buraya kırpma yerleştirilemiyor",
45+
"trimExistsAtLocation": "Bu konumda zaten bir kırpma var veya yeterli alan yok.",
46+
"cannotPlaceSpeed": "Buraya hız yerleştirilemiyor",
47+
"speedExistsAtLocation": "Bu konumda zaten bir hız bölgesi var veya yeterli alan yok."
4848
},
4949
"success": {
50-
"addedZoomSuggestions": "{{count}} imleç tabanlı yakınlaştırma önerisi eklendi",
51-
"addedZoomSuggestionsPlural": "{{count}} imleç tabanlı yakınlaştırma önerisi eklendi"
50+
"addedZoomSuggestions": "{{count}} imleç tabanlı yakınlaştırma önerisi eklendi",
51+
"addedZoomSuggestionsPlural": "{{count}} imleç tabanlı yakınlaştırma önerisi eklendi"
5252
},
5353
"feedback": {
54-
"copied": "Copied!",
55-
"pasted": "Pasted!"
54+
"copied": "Kopyalandı!",
55+
"pasted": "Yapıştırıldı!"
5656
}
5757
}

0 commit comments

Comments
 (0)