Skip to content

Commit e0143d2

Browse files
committed
support video
1 parent a72618d commit e0143d2

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/file-content/code-editor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { EditorView, keymap, ViewUpdate } from '@codemirror/view';
22
import type { CodeNavigationTarget } from '@onlook/models';
3-
import { convertToBase64DataUrl, getMimeType, isVideoFile } from '@onlook/utility/src/file';
3+
import { convertToBase64DataUrl, getMimeType, isVideoFile } from '@onlook/utility';
44
import CodeMirror from '@uiw/react-codemirror';
55
import { type RefObject, useEffect, useMemo, useRef, useState } from 'react';
66
import type { BinaryEditorFile, EditorFile } from '../shared/types';

packages/utility/src/file.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,11 @@ export const isImageFile = (fileName: string): boolean => {
118118
* @returns True if the file is a video, false otherwise
119119
*/
120120
export const isVideoFile = (fileNameOrMimeType: string): boolean => {
121-
// If it looks like a MIME type (contains '/'), check it directly
122-
if (fileNameOrMimeType.includes('/')) {
121+
// If it looks like a MIME type (starts with 'video/' pattern), check it directly
122+
if (fileNameOrMimeType.startsWith('video/') || fileNameOrMimeType.startsWith('audio/') || fileNameOrMimeType.startsWith('image/')) {
123123
return fileNameOrMimeType.startsWith('video/');
124124
}
125-
// Otherwise, treat it as a filename
125+
// Otherwise, treat it as a filename or file path
126126
const mimeType = getMimeType(fileNameOrMimeType);
127127
return mimeType.startsWith('video/');
128128
};

packages/utility/test/file.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,5 +232,13 @@ describe('isVideoFile', () => {
232232
expect(isVideoFile('视频.mp4')).toBe(true);
233233
expect(isVideoFile('ビデオ.webm')).toBe(true);
234234
});
235+
236+
it('handles full file paths with slashes', () => {
237+
expect(isVideoFile('/public/gradient.mp4')).toBe(true);
238+
expect(isVideoFile('/path/to/video.webm')).toBe(true);
239+
expect(isVideoFile('./assets/video.mov')).toBe(true);
240+
expect(isVideoFile('../videos/clip.avi')).toBe(true);
241+
expect(isVideoFile('/public/image.jpg')).toBe(false);
242+
});
235243
});
236244
});

0 commit comments

Comments
 (0)